我的系统使用QNX6.5,它有4个cpu内核。但我不知道每个内核中运行的是哪个进程,以及所有进程。有办法知道细节吗。提前感谢
进程通常运行多个线程(至少一个-主线程);因此线程是实际运行单元,而不是进程(内核亲和性是每个线程可设置的)。因此,您需要知道哪个内核线程正在运行。
有"%l"format选项,告诉你哪个CPU线程正在执行:
# pidin -F "%b %50h %i %l" -p random
tid thread name cpu
1 1 0
Runmask : 0x0000007f
Inherit Mask: 0x0000007f
2 Timer Thread 1
Runmask : 0x0000007f
Inherit Mask: 0x0000007f
3 3 6
Runmask : 0x0000007f
Inherit Mask: 0x0000007f
上面我们打印线程id,线程名称,run/inherit cpu掩码,右上列是当前cpu线程正在运行,进程名为"random"
在QNX中分析进程调度细节的最佳工具是"系统分析工具包",它使用QNX内核的工具特性来提供每个调度事件和消息传递的日志。
对于QNX 6.5,文档可以在这里找到:http://www.qnx.com/developers/docs/6.5.0SP1.update/index.html#./com.qnx.doc.instr_en_instr/about.html
使用以下命令获取详细信息。pidin rmasks
将给出"pid, tid和name"每条线。通过runmask值,我们可以确定它在哪个内核中运行。对我来说,线程细节也很好。