我刚刚经历了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利用率? 例如:我的过程的空闲时间是多少。
任何人都可以给我正确的方向吗? 可能有一个例子!
答案 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”部分和示例部分。
(联合国)?幸运的是,大多数手册都不是教程,所以通过这些阅读可能只会让你了解你需要学习多少。
您了解提供一些性能监控功能的内置命令,即ps
,top
等?
优秀的基于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计数器,但这样会很麻烦且不太便携。