CPU利用率计算原理
CPU利用率计算原理
1、相关概念
在Linux/Unix下,CPU利用分为用户态、系统态和空闲态。分别表示CPU处于用户执行的时间,系统内核执行的时间,空闲系统进程执行时间。
CPU利用率:CPU的使用情况
用户时间(User Time):CPU执行用户进程的时间,其中包含了nices时间。通常期望用户CPU越高越好。
系统时间(System Time):CPU在内核运行时间,包含了hard IRQ和soft IRQ时间。系统占用CPU越高,表明系统某部分存在瓶颈,通常希望越低越好。
等待时间(waiting Time):CPU等待I/O操作完成话费的时间。系统部分应该花费大量时间来等待I/O操作。否则说明I/O存在瓶颈。
空闲时间(Idle Time):系统处于空闲状态,等待进程运行
Nice时间(Nice Time):系统调整进程优先级所花费的时间
硬中断处理时间(hard IRQ time):系统处理硬中断所花费时间
软中断处理时间(soft Irq Time):系统处理软中断所花费时间
丢失时间(Stealtime):被强制等待(involuntary wait)虚拟CPU时间,此时Hypervisor在为另一个虚拟处理器服务。
2、top命令结果
top - 14:12:38 up 91 days, 19:36, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
其中:us: user time
sy:system time
ni:nice time
id:idle time
wa:waiting time
hi:hard irq time
si:soft irq time
st:steal time
3、CPU利用率计算
linux CPU利用率是根据/proc/stat中的信息计算出来的。
[root@host1 ~]# cat /proc/stat
cpu 5371431 789 1236460 12682820761 2124402 39137 331452 0
cpu0 34208 0 20097 793162413 27524 1 1092 0
cpu1 684284 147 97149 791633337 815849 2249 12309 0
cpu2 314686 70 84513 792477300 357856 4096 6795 0
cpu3 52805 4 52537 793044965 89980 2421 2597 0
cpu4 1406103 1 170633 791429122 208662 951 29829 0
cpu5 305922 0 80963 792752323 89010 367 16708 0
cpu6 295994 1 81298 792801389 48928 274 17402 0
cpu7 273993 0 48034 792880613 36192 312 6134 0
cpu8 156902 24 26041 793029770 22510 1 10019 0
cpu9 326768 193 87718 792704802 119144 668 5967 0
cpu10 179389 83 116465 792863574 75718 1251 8773 0
cpu11 310820 52 57777 792798184 40570 5077 32766 0
cpu12 210204 8 37670 792911300 70080 1184 14792 0
cpu13 177398 119 86398 792884983 67983 1562 26788 0
cpu14 95929 38 49440 793016440 34708 6010 42658 0
cpu15 546019 40 139718 792430236 19680 12706 96815 0
intr 4341256119 3638193703 0 0 3 4 0 0 0 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 14601 0 0 0 0 0 0 0 8229 0 0 0 0 0 0 0 109101 0 0 0 0 0 0 0 367171 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 2 0 0 0 0 0 0 0 8200432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 232194206 0 0 0 0 0 0 0 34559346 0 0 0 0 0 0 0 72266221 0 0 0 0 0 0 0 21171944 0 0 0 0 0 0 12188435 29497926 0 0 0 0 0 0 0 39261029 0 0 0 0 0 0 0 190920664 0 0 0 0 0 0 0 58128746 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3670122 0 0 0 0 0 0 19 388125 0 0 0 0 0 0 0 90761 0 0 0 0 0 0 0 25328 0 0 0 0
ctxt 2078087675
btime 1344940556
processes 3360741
procs_running 1
procs_blocked 0
上面为CPU信息,其中cpu为总信息,cpu0...cpuN为各个cpu信息
上面8个值(单位ticks)分别为:
us ni sy id wa hi si st
CPU利用率计算方法如下:
CPU时间=us+ni+sy+id+wa+hi+si+st
%us=(us+ni)/CPU时间×100%
%sy=(sy+hi+si)/CPU时间×100%
%id=id/CPU时间×100%
%ni=ni/CPU时间×100%
%wa=wa/CPU时间×100%
%hi=hi/CPU时间×100%
%si=si/CPU时间×100%
%st=st/CPU时间×100%
文章转自异步社区
原文链接 https://www.epubit.com/articleDetails?id=Nbe803755-a4f7-40e5-9b17-e96382c2c608
- 点赞
- 收藏
- 关注作者
评论(0)