我的笔记本这个配置使用PS还是苹果6PS卡顿,打开慢,怎么回事是什么情况呢 不管是CPU还是啥使用率都在30-40

博客分类:
转载:关于vmstat,top,ps aux查看的cpu占用率不一致的问题问题:用vmstat,top,和ps aux三个命令查看进程对cpu的占用率,数值差异很大。
例:用 vmstat 查看系统cpu空闲率, id是cpu的空闲率,可以看出,空闲率一直在73%以上用 ps aux 统计两个compress进程的cpu占用率,长时间恒定在15.5%和28.9%用 top统计两个compress进程的cpu占用率,可以看出是一个动态变化的过程(命令执行结果后面有显示)
这三个命令查出的cpu利用率不统一首先,ps aux中两个compress进程占用cpu 15.5%+28.9%&40%,再加上其它进程,为何vmstat查看cpu空闲率id还能一直大于73%其次,top命令显示的进程compress的cpu占用率和ps显示的数值差别很大,ps的cpu占用率雷打不动,一直是恒定值,top的比较动态, 难道ps aux显示的进程cpu占用率不可靠?最后,这三个命令查出的cpu占用率相互之间均不统一,用哪一个更可靠?例如输入如下命令,粗体字是cpu占用率
$ vmstat 1procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----r
b swpd free buff
cache si so bi bo in cs us sy id wa0
0 432 802660
4 0 0 204 770 0
0 432 799196
0 432 802420
0 480 1599
0 432 802292
0 440 1859
0 432 797636
0 240 1403
0 432 798732
0 448 1506
0 432 797924
0 192 1752
0 432 802076
0 280 1705
$ps aux | grep compressUSER
PID %CPU %MEM VSZ
STAT START TIME COMMANDimg
S Aug12 230:57 ./bin/compress 8014img
S Aug12 430:28 ./bin/compress 8004
$top | grep compressPID USER
SHR S %CPU %MEM TIME+
16 0 40956
20m 6632 R 10.7
0.3 231:10.12 compress
16 0 54592
21m 2456 S 20.3
0.3 430:54.32 compress
17 0 36740
16m 2456 S 10.3
0.2 231:10.43 compress
16 0 54592
21m 2456 R 58.9
0.3 430:56.09 compress
16 0 36716
16m 2456 R 53.9
0.2 231:12.05 compress
16 0 58444
24m 4752 R 69.9
0.3 430:58.19 compress
16 0 36716
16m 2456 S 60.2
0.2 231:13.86 compress
16 0 54592
21m 2456 S 52.6
0.3 430:59.77 compress
15 0 36716
16m 2456 S 45.3
0.2 231:15.22 compress
大概看了些源码,补充一下:top,ps,vmstat都是根据系统的proc文件进行计算的,其中vmstat,top都使用了/proc/stat文件,而ps,top也使用了/proc/*/stat文件进行计算。
1.vmstat对于cpu idle的计算方式比较复杂,但是显示的为平均值,即使用cpu使用时间片的差值/时间间隔/cpu个数(为物理cpu数目*cpu核心数),其中时间间隔为vmstat后加的参数,如vmstat 10就为10s内的平均cpu 占用率;
2.ps计算的为每个进程的cpu占用时间,使用的为/proc/*/stat文件,其中*为进程号,计算方式为使用cpu总的时间片数/Hertz,目前确认为对于每个物理cpu的占用比率,因此在双核机器上显示的数值需要除以核心数2;
3.top使用的是/proc/stat计算上面显示的cpu占用,使用/proc/*/stat计算每个进程占用的时间。但是计算的方式有所不同,代码较为复杂,但是目前确认为默认显示为Irix模式,即为相对于单个cpu core的占用的时间,如双核机器需要将该数值除以2*2计算,通过 shift+i可以进行切换;
通过上述说明可以解释珺方发现的问题:问题1:首先,ps aux中两个compress进程占用cpu 15.5%+28.9%&40%,再加上其它进程,为何vmstat查看cpu空闲率id还能一直大于73%ps的cpu占用率需要除以双核cpu数目为2,因此实际占用为(15.5%+28.9% )/2=22.2% ,也就约等于100%-73%;
问题2:其次,top命令显示的进程compress的cpu占用率和ps显示的数值差别很大,ps的cpu占用率雷打不动,一直是恒定值,top的比较动态, 难道ps aux显示的进程cpu占用率不可靠?ps和top相差的数值为2倍关系,因此显示的占用率相差很大,同时变化率也会较大;
问题3:最后,这三个命令查出的cpu占用率相互之间均不统一,用哪一个更可靠?例如输入如下命令,粗体字是cpu占用率这三个命令的占用率是统一的,按照如下公式进行计算时数据是一致的:vmstat 的100%-idle == ps的cpu占用/cpu核心数 == top的cpu占用/cpu核心数/物理cpu数目;
浏览: 27461 次
来自: 广州
请问企业版与标准版有什么区别呀。可以对平台提些意见吗?如行,Q ...
提供标准版,开放部分源码,可以免费使用,同时提供收费的企业版。 ...
请问是商业平台还是开源平台?
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'!请打开浏览器的Javascript功能以正常访问网站
党的十八大以来,习近平数次强调“创新”对中国全面深化改革和发展的重要作用。
8月11日和12日是周末,南国书香节迎来逛展高潮。大批市民趁着周末,一家大小齐齐走进书的海洋。
改革开放是决定当代中国命运的关键一招
star福利社
邓伦本人对于“红”似乎并没有太多感触,他表示,“有感受到大家越来越喜欢我的作品,有点成就感”。
日,2018年姚基金慈善赛:姚明获得FIBA特殊贡献奖。
这些被查处的车辆在经过法定程序后,都将进入这样的销毁流程,而车辆残值经过评估后,将由报废公司上缴国库...
图像识别、AI、无人驾驶、机器人等未来趋势技术,被一班年轻大学生“玩”出新高度。
面对众多造车新车企的诱惑,很多人都心动了:可这些新车企并没多少门店,还流行“互联网+”订车。Linux如何统计进程的CPU利用率
<div class="gray post" title="T22:34:43+-10-30 &|& 22:34分类:,&&|&&
0. 为什么写这篇博客
Linux的top或者ps都可以查看进程的cpu利用率,那为什么还需要了解这个细节呢。编写这篇文章呢有如下三个原因:
* 希望在脚本中,能够以过”非阻塞”的方式获取进程cpu利用率
* ps无法获得进程当前时刻的CPU利用率;top则需要至少1秒才能获得进程当前的利用率
1. 如何统计进程CPU利用率
在Linux的/proc文件系统,可以看到自启动时候开始,所有CPU消耗的时间片;对于个进程,也可以看到进程消耗的时间片。这是一个累计值,可以"非阻塞"的输出。获得一定时间间隔的两次统计就可以计算出这段时间内的进程CPU利用率。
所以,是否存在一种简单的,非阻塞的方式获得进程的CPU利用率? 答案是:“没有”。:"这就像有人给你一张照片,要你回答照片中车子的速度一样"
1.1 /proc/stat 统计总CPU消耗
这个概念在计算中并不重要,但是了解一下还是有益的。在/proc/[pid/]stat中我们可以看到系统统计的CPU时间消耗,这里都统一使用1/USER_HZ为一个时间片(man proc),多数情况下USER_HZ都是取值100,所以这里的一个时间片就是10ms。可以通过系统调用sysconf(_SC_CLK_TCK)来获得准确USER_HZ的取值。
# cat /proc/stat|grep "cpu "
每一列对应的CPU消耗含义是(man proc):用户态(user)、低优先级用户态(nice)、系统(sys)、闲置、IOWAIT(内核2.5.41+)、中断(since 2.6.0+)、软终端(since 2.6.0+)、steal(虚拟环境中其他OS消耗2.6.11+)、guest(为访客OS运行虚拟CPU消耗2.6.24)
对应如下:
# cat /proc/stat|grep "cpu "
|softirq |steal
所以,计算CPU总消耗可以使用如下shell命令:
cat /proc/stat|grep "cpu "|awk '{for(i=2;i<=NF;i++)j+=$i;print "cpu_total_slice "}'
cpu_total_slice
很多地方看到都只是统计前面四列或者五列,这是不完整的;不过,因为通常前四、五列是CPU的主要消耗,所以这样如此计算也通常是准确的。例如,上例中,前面五列的消耗是CPU消耗的99.99%。
(tips:这里的时间片和CPU时钟中断的jiffy不是一个概念,一个是内核态的,一个用户态的)
1.2 进程消耗的CPU时间片
在proc文件系统中,可以通过/proc/[pid]/stat获得进程消耗的时间片,输出的第14、15、16、17列分别对应进程用户态CPU消耗、内核态的消耗、用户态等待子进程的消耗、内核态等待子进程的消耗(man proc)。所以进程的CPU消耗可以使用如下命令:
cat /proc/9583/stat|awk '{print "cpu_process_total_slice " $14+$15+$16+$17}'
cpu_process_total_slice 1068099
tips:从这里可以看到,Linux并没有进程级别的iowait统计,如果想知道系统的iowait是哪个进程导致,则还需要一些其他的工具辅助。
1.3 "非阻塞"的计算进程CPU利用率
从这里也看到,是没有某个时刻CPU利用率的说法的,也就没法获得某个时刻的CPU利用率。这就像物理中的"速度"的概念,没有某一时刻速度的概念,速度一定是一个时间段之内的。那么要"非阻塞"计算某个进程CPU利用率,则需要取两次事件间隔进行计算,这两次事件间隔的操作可以是非阻塞的。计算办法如下:
* 时刻A,计算操作系统总CPU时间片消耗total_cpu_slice_A;计算进程总CPU时间片消耗;total_process_slice_A
* 时刻B,计算操作系统总CPU时间片消耗total_cpu_slice_B;计算进程总CPU时间片消耗;total_process_slice_B
B时刻就可以"非阻塞"的计算这段时间进程的CPU利用率了:
100%*(total_process_slice_B-total_process_slice_A)/(total_cpu_slice_B-total_cpu_slice_A)
1.4 ps命令显示的CPU利用率是什么意思
CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process. This is
not ideal, and it does not conform to the standards that ps otherwise conforms to. CPU usage is unlikely to add up to
exactly 100%.
可以看到,ps命令%CPU显示的是进程自启动时刻起,直至当前的总平均CPU利用率。
2 参考文档
* man proc / man ps
博客的草稿箱里面虽然有好几篇稿子了,不过距离好像都有100天了,写完这一篇还是很欣慰,虽然内容不多。
喜欢本文,那就收藏到:为什么我的电脑老是一卡一卡的cpu使用率也高,是我的配置太差了吗wduser_查一下系统有没有设置电脑电量方案,调到最高运算的就好了查看更多更多回答wduser_花450元上淘宝买个2手x4 955一切问题解
决你的双核闪龙太差 最少也要换个x2 240 估计200元
处理器性能太差了wduser_哥们。手撸的太快了热门问答1234567891011121314151617181920查看更多21222324252627282930免费验房免费设计黄道吉日建材优惠家具定制404 Not Found
404 Not Found

我要回帖

更多关于 苹果6PS卡顿,打开慢,怎么回事 的文章

 

随机推荐