Solaris CPU运行队列

时间:2010-02-13 12:35:02

标签: solaris cpu-usage

是否有一个命令可以告诉我Solaris运行队列中的最新信息? 我可以使用vmstat获取计数,但我需要知道那里有哪些进程/线程。

2 个答案:

答案 0 :(得分:4)

运行队列总是在变化,因此几乎不可能在当前的运行队列中获取进程集。

也就是说,您可以通过查看来自STAT的流程列表的ps(州)字段来获得近似值。运行以下命令时:

$ ps aux

...如果STAT字段以R开头,那么该进程会被内核标记为RUNNABLE,在大多数操作系统中,这意味着它在运行中 - 队列。以下是我的机器上可运行的过程:

USER       PID %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
root     78179   0.0  0.0   599828    480 s003  R+    7:51AM   0:00.00 ps aux

在solaris上,您还可以使用prstat命令查看STATE列。值run表示进程在运行队列中。 (另请注意,值cpuN表示进程当前正在处理器N上运行。

例如:

$ prstat -s cpu -n 5

PID USERNAME    SIZE    RSS STATE   PRI NICE    TIME    CPU PROCESS/NLWP
13974   kincaid 888K    432K    run 40  0   36:14.51    67% cpuhog/1
27354   kincaid 2216K   1928K   run 31  0   314:48.51   27% server/5
14690   root    136M    46M sleep   59  0   0:00.59 2.3%    Xsun/1
14797   kincaid 9192K   7496K   sleep   59  0   0:00.10 0.9%    dtwm/8
14851   kincaid 24M 14M sleep   48  0   0:00.03 0.3%    netscape/1
Total: 97 processes, 190 lwps, load averages: 2.18, 2.15, 2.11

答案 1 :(得分:1)

当我看到你已经这样做时,我正要纠正0xfe的答案。运行队列包含theads而不是进程,因此如果要使“状态运行”行的数量与运行队列或多或少匹配,则使用prstat命令必须使用-L选项。请注意,采样工件可能会阻止获得准确的匹配。

在任何情况下,如果您想要准确了解运行队列中的进程/线程,那么假设您运行的是Solaris 10或更高版本,则更倾向于采用dtrace方式。

可能已经在您计算机上的/ usr / demo / dtrace目录中的whoqueue.d脚本将是一个良好的开端:

# dtrace -s /usr/demo/dtrace/whoqueue.d
Run queue of length 1:
  24349/1 (dtrace)
Run queue of length 3:
  0/0 (sched)
  0/0 (sched)
  0/0 (sched)
Run queue of length 4:
  22468/30 (java)
  22468/17 (java)
  22468/23 (java)
  22468/10 (java)

详情请查看this page