不太清楚的是哪个字段真正表示使用的cpu秒/分钟.我读过的手册页说’cpu’列是用于秒燃烧的,但是也有用-m显示的’cp’列,它们可以显示不同的总数.例如:
当我使用-m标志时,我得到了
$sa -m | grep username username 14944 65.53re 29.90cp 5308k
sa -u |grep username|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}' 1032.86
有人能帮助我理解这两种不同模式中’cp’和’cpu’列之间的区别吗?
谢谢!
解决方法
第一:我创建了一个bash脚本,我作为用户patrickr运行,这意味着要在系统上施加足够的负载才能引人注目.
#!/bin/bash #this file is named loop_script.sh for i in {1..5000} do echo "Welcome $i times" done
第二:我卸载然后重新安装了acct,以便我/ var / log / acct中的文件是新鲜的.创建/ var / log / acct / pacct文件的副本,以便将来可以使用格式正确的文件轻松截断文件(您不能只删除并重新创建文件 – 如果您这样做,sa将停止工作).请注意,此文件是系统上所有命令的日志,据我所知,无法根据时间段在日志中提取部分.
第三:然后我将这个脚本作为patrickr运行两次
patrickr@hostname:~$bash loop_script.sh
我会给你结果,然后我会解释它们:
以root身份(或其他任何patrickr用户)
在第一次循环后作为patrickr:
**sa -m** 24 0.09re 0.03cp 0avio 894k root 22 0.07re 0.02cp 0avio 853k patrickr 2 0.02re 0.01cp 0avio 1336k **sa -u |grep patrickr** patrickr 0.38 cpu 1336k mem 0 io bash
在第二次循环后作为patrickr:
**sa -m** 30 0.09re 0.03cp 0avio 850k root 27 0.07re 0.02cp 0avio 814k patrickr 3 0.02re 0.01cp 0avio 1178k **sa -u |grep patrickr** patrickr 0.38 cpu 1336k mem 0 io bash patrickr 0.35 cpu 1336k mem 0 io bash patrickr 0.00 cpu 863k mem 0 io ls (I happened to also run ls at patrickr) **sa -u** The results returned 106 results for a total of 2.86cpu that averaged to 0.03cp
这是你所看到的:
sa -m显示该服务器超时的所有活动的平均值.随着更多命令运行,此文件随着时间的推移而变大
sa -u | grep patrickr显示特定命令的cpu分钟内系统和用户时间的总和.
运行:
sa -u | grep patrickr | awk’BEGIN {TOTAL = 0} {TOTAL = TOTAL $2} END {print TOTAL}’
将为用户patrick提供总计,但sa -m命令实际上是给你平均值.看一下内存值,你需要第二个例子.它们也是平均值.
如果我将上面列出的三个结果添加到patrickr,.35 .37 .0并除以106并舍入到最接近的百分之一,我将获得0.01cp.
0.01cp的结果是系统上用户patrickr的平均负载,与从安装acct应用程序时的系统上的所有负载相比(即,因为文件/ var / log / acct / pacct开始跟踪).
Output Fields cpu - sum of system and user time in cpu minutes re - actual time in minutes k - cpu-time averaged core usage,in 1k units k*sec - cpu storage integral (kilo-core seconds) u - user cpu time in cpu minutes s - system time in cpu minutes
一个很好的资源,将帮助你在beginlinux.com(原始链接发现here).