现在多路多核CPU已经是服务器的主流,许多应用程序如Squid和nginx等等都有分布进程或线程到不同CPU核的能力。

那么我们如何查看不同进程在CPU核中的分布情况。

这里使用top工具,配合一下pgrep或pidof小命令来实现 

例如查看nginx进程的CPU核中的分布情况:

  1. top -p$(pgrep nginx |awk 'BEGIN{ORS=","}{print $0}' |sed 's/.$//')  
  2. # 或者也可以使用
  3. # pidof nginx |sed -e 's/ /,/g'
  4. # 来替代
  5. # pgrep nginx |awk 'BEGIN{ORS=","}{print $0}' |sed 's/.$//'
  6. # 来获取格式化后的pid值

 

然后按f键,列出显示菜单选项,再按下j,选择CPU核信息列。回车返回top画面。

  1. top - 14:46:21 up 13:45,  2 users,  load average: 0.000.000.00 
  2. Tasks:   5 total,   0 running,   5 sleeping,   0 stopped,   0 zombie 
  3. Cpu(s):  0.0%us,  0.1%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st 
  4. Mem:   1026684k total,   887572k used,   139112k free,   135308k buffers 
  5. Swap:  2064376k total,        0k used,  2064376k free,   603008k cached 
  6.  
  7.   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  P COMMAND                                   
  8. 12393 root      18   0 41000 1428  808 S  0.0  0.1   0:00.00 1 nginx                                     
  9. 12625 nginx     15   0 41344 1440  536 S  0.0  0.1   0:00.00 0 nginx                                     
  10. 12626 nginx     15   0 41344 1592  688 S  0.0  0.2   0:00.00 1 nginx                                     
  11. 12627 nginx     15   0 41344 1440  536 S  0.0  0.1   0:00.00 2 nginx                                     
  12. 12628 nginx     15   0 41344 1440  536 S  0.0  0.1   0:00.00 3 nginx