确定CPU利用率 - solaris unix

时间:2012-02-06 10:13:57

标签: c unix process solaris

我刚刚经历了SO并发现了一个问题Determining CPU utilization

问题很有趣,更有趣的是答案。 所以我想在我的solaris SPARC unix系统上做一些检查。

我以root用户身份访问/ proc,我发现了一些以数字作为名字的目录。 我认为这些数字是进程ID。令我惊讶的是我没有找到/stat.(donno为什么?..)

我拿了一个进程id(一个目录)并检查了它里面的内容。下面是输出

root@tiger> cd 11770
root@tiger> pwd
/proc/11770
root@tiger> ls
as         contracts  ctl        fd         lstatus    lwp        object     path       psinfo     root       status     watch
auxv       cred       cwd        lpsinfo    lusage     map        pagedata   priv       rmap       sigact     usage      xmap

我确实检查了那些文件:

root@tigris> file *
as:             empty file
auxv:           data
contracts:      directory
cred:           data
ctl:            cannot read: Invalid argument
cwd:            directory
fd:             directory
lpsinfo:        data
lstatus:        data
lusage:         data
lwp:            directory
map:            TrueType font file version 1.0 (TTF)
object:         directory
pagedata:       cannot read: Arg list too long
path:           directory
priv:           data
psinfo:         data
rmap:           TrueType font file version 1.0 (TTF)
root:           directory
sigact:         ascii text
status:         data
usage:          data
watch:          empty file
xmap:           TrueType font file version 1.0 (TTF)

我不确定..给我这个如何确定cpu利用率? 例如:我的过程的空闲时间是多少。

任何人都可以给我正确的方向吗? 可能有一个例子!

2 个答案:

答案 0 :(得分:2)

由于没有人接受诱饵,我会添加一些评论/答案。

第一关,您是否查看了Solaris System tuning的可用信息?这适用于老Solarian,2.6,v7& 8.据推测,在developers.sun.com上搜索一下会发现更新的东西。

您写道:

  

我以root用户身份访问/ proc,我发现了一些以数字作为名字的目录。我认为这些数字是进程ID。令我惊讶的是我没有找到/stat.(donno为什么?..)

许多非Linux操作系统都有自己关于如何管理进程的特殊约定。 对于Solaris,/ proc目录不是基于磁盘的文件的目录,而是有关排列为目录层次结构的所有活动系统进程的信息。很酷,对吧?!

我不知道stat的确切含义,状态如何?统计?别的什么?但这就是惯例使用了不同操作系统的目录结构来保存过程信息。

正如您所发现的,/proc/下面是一堆编号的条目,这些是活动的processID。当您浏览其中任何一个时,您就会看到该流程可用的系统信息。

  

我确实检查了那些文件:....

我无法访问Solaris服务器,所以我们必须猜一点。我建议“向下钻取”任何名称暗示相关内容的文件或目录。

你试过cat psinfo吗?这产生了什么?

如果solaris调整页面没有帮助,那么您的appropos是否有效?做appropos proc并查看提到的手册页。深入研究那些。否则尝试man proc,并且看看条目底部附近的“see also”部分和示例部分。

(联合国)?幸运的是,大多数手册都不是教程,所以通过这些阅读可能只会让你了解你需要学习多少。


您了解提供一些性能监控功能的内置命令,即pstop等?

优秀的基于AIX的nmon已经/正在?也移植到Solaris,请参阅http://sourceforge.net/projects/sarmon/

网络管理员也喜欢昂贵的监控/测量/利用工具,仅仅作为开发人员,我们从未使用它们。当您谷歌进行'solaris性能监控'时,请查看付费广告。

最后,请记住FAQ for nmon中包含的nmon-AIX系统监视器的开发人员的出色观察结果:

  

如果你继续使用更短和更短的时间段,你最终会看到CPU是100%忙碌或100%闲置所有其他数字只是人类不能快速思考并且不得不平均CPU使用的一个特征。更长的时期。

我希望这会有所帮助。

答案 1 :(得分:2)

没有简单而准确的方法可以从Solaris /proc层次结构中获取CPU利用率。

与使用它存储各种系统信息和统计信息的Linux不同,Solaris只在/ proc下显示与进程相关的数据。

还有另一个不同之处。 Linux通常呈现预处理的可读数据(文本),而Solaris总是呈现实际的内核结构或原始数据(二进制)。

所有这些都在Solaris 46页面proc手册(man -s 4 proc

中有详细记载

虽然可以通过总结此层次结构中每个进程的使用量来获得CPU利用率,即通过读取/ proc // xxx文件,但通常的方法是通过Solaris kstat(内核统计信息)接口。此外,前一种方法因缺少CPU使用而不计入进程但直接计入内核而不准确。

kstat(man -a kstat)是在幕后使用的所有常用命令,用于报告您正在寻找的内容,如vmstat,iostat,prstat,sar,top等。

例如,cpu使用率显示在vmstat输出的最后三列中(us,sy和id用于用户空间,内核和空闲时间)。

$ vmstat 10 8
 kthr      memory            page            disk          faults      cpu
 r b w   swap  free  re  mf pi po fr de sr cd s0 -- --   in   sy   cs us sy id
 0 0 0 1346956 359168 34 133 96 0  0  0 53 11  0  0  0  264  842  380  9  7 84
 0 0 0 1295084 275292 0   4  4  0  0  0  0  0  0  0  0  248  288  200  2  3 95
 0 0 0 1295080 275276 0   0  0  0  0  0  0  3  0  0  0  252  271  189  2  3 95
 0 0 0 1295076 275272 0  14  0  0  0  0  0  0  0  0  0  251  282  189  2  3 95
 0 0 0 1293840 262364 1137 1369 4727 0 0 0 0 131 0 0 0  605 1123  620 15 19 66
 0 0 0 1281588 224588 127 561 750 1 1 0  0 89  0  0  0  438 1840  484 51 15 34
 0 0 0 1275392 217824 31 115 233 2 2  0  0 31  0  0  0  377  821  465 20  8 72
 0 0 0 1291532 257892 0   0  0  0  0  0  0  8  0  0  0  270  282  219  2  3 95

如果由于某种原因你不想使用vmstat,你可以使用kstat命令直接获取kstat计数器,但这样会很麻烦且不太便携。