CPU利用率计算原理

举报
橘座 发表于 2019/09/05 21:42:33 2019/09/05
【摘要】

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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。