-
通常我们说一个程序是cpu密集型就是cpu用的多,io密集型就是io用的多,这种说法对吗?
答案是:不能算错,但也不全对。其实应该从程序的瓶颈来看待这个问题,若系统瓶颈在cpu,那就是cpu密集型;反之,若在io,则是io密集型。
了解程序是哪种类型,对系统优化有着关键的指导作用。 -
比如我们平时使用的IM软件、网上商城应用都属于io密集型,因为它们主要做的事情是【高频的小数据传输与读写】,一个是网络io,一个是磁盘io。
图像处理、加解密、序列化反序列化等则需要消耗大量的cpu计算资源。 -
cpu使用率怎么测量?
top - 01:18:23 up 26 days, 1:46, 1 user, load average: 0.02, 0.06, 0.09 # 最近1分钟,5分钟,15分钟的系统平均负载
Tasks: 83 total, 1 running, 82 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 1.0 sy, 0.0 ni, 98.0 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st # cpu使用率:
KiB Mem : 2046840 total, 96916 free, 871284 used, 1078640 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1002840 avail Mem
[root@VM-10-10-centos ~]# cat /proc/stat
cpu 2386298 133 1512433 220167322 135603 0 17069 0 0 0
cpu0 2386298 133 1512433 220167322 135603 0 17069 0 0 0 # 每个cpu都有8个数字,表示从开机到当前的累计时间,(单位是jiffiles,时钟中断次数)
intr 1135957538 223 10 0 0 1242 0 3 0 0 0 0 0 15 0 2204533 0 0 0 0 0 0 0 0 0 0 4423071 0 12185348 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 2719534071
btime 1654615901
processes 5160015
procs_running 2
procs_blocked 0
softirq 268481450 1 149508501 2 23186582 5524440 0 16 0 0 90261908
use:cpu在用户态的运行时间
system:cpu在内核态的运行时间
nice:?
idle:cpu空闲时间 #
iowait:cpu空闲,且在等待io的时间 #
irq:硬中断时间
softirp:软中断时间
steal:?
total1 = use + system + nice + (idle + iowait) + irq + softirq + steal
used1 = use + system + nice + irq + softirq + steal
过15秒,再采集一次
total2 = use + system + nice + (idle + iowait) + irq + softirq + steal
used2 = use + system + nice + irq + softirq + steal
在这15秒内,cpu的使用率 = (used2 – used1) / (total2 – total1)
注意:使用率的计算,与采样频率有关。
原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/271439.html