我的一个c ++应用程序在顶部显示了非常高的%CPU,但是负载非常低.myapp总是需要大约30%,显示在"top"命令的最顶层,但是负载总是像0.00,所以我很困惑load和%CPU列之间有什么区别?
top - 14:09:54 up 62 days, 2:52, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 124 total, 1 running, 123 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni, 99.7%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 99.3%id, 0.3%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 2054824k total, 1440364k used, 614460k free, 4644k buffers
Swap: 4194296k total, 16604k used, 4177692k free, 610784k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14774 root 20 0 1201m 9416 1856 S 28.3 0.5 376:13.50 myapp
14746 mysql 20 0 2012m 157m 3888 S 0.3 7.8 5:01.08 mysqld
Run Code Online (Sandbox Code Playgroud)
谁能告诉我理解%CPU和负载之间的差异?
先感谢您!
%的CPU例如所示top是intantaneous,即什么在该时间被使用,而负载由所示uptime是一个平均值:
它通常以三个数字的形式出现,表示最后一个,五个和十五分钟时段内的系统负载.
来自维基百科.
随着时间的推移,这些应该会收敛,但是虽然%CPU是100%最大值,但是当有进程等待时,负载可以高于1.例如:
例如,可以将单CPU系统上的负载平均值"1.73 0.50 7.98"解释为:
在最后一分钟,CPU超载73%(1个CPU,1.73可运行进程,因此0.73进程必须等待转弯)
在过去的5分钟内,CPU的负载低于50%(没有进程必须等待转弯)
在过去的15分钟内,CPU超载698%(1个CPU,7.98个可运行进程,因此6.98进程必须等待转弯)
更新:
我现在才注意到你的进程使用了28%的CPU,同时top报告两个CPU的空闲率都超过了99%.我无法在我的Linux系统(Ubuntu 12.04,Intel i7-3770K quadcore HT)上重现这一点,请参阅下面的屏幕截图.
正常设置,无负载,显示所有核心的平均CPU使用率:
top - 18:10:04 up 7:50, 2 users, load average: 0.00, 0.05, 0.15
Tasks: 157 total, 1 running, 156 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16528224k total, 1124956k used, 15403268k free, 148772k buffers
Swap: 15624188k total, 0k used, 15624188k free, 670460k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7022 root 20 0 0 0 0 S 0 0.0 0:00.14 kworker/0:1
1 root 20 0 3640 2060 1324 S 0 0.0 0:01.23 init
2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:00.14 ksoftirqd/0
6 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
Run Code Online (Sandbox Code Playgroud)
在一个核心(运行yes > /dev/null)上满载,显示所有核心的平均CPU使用率:
top - 18:11:58 up 7:52, 2 users, load average: 0.11, 0.07, 0.15
Tasks: 157 total, 2 running, 155 sleeping, 0 stopped, 0 zombie
Cpu(s): 12.5%us, 0.0%sy, 0.0%ni, 87.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16528224k total, 1124880k used, 15403344k free, 148824k buffers
Swap: 15624188k total, 0k used, 15624188k free, 670472k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8254 tim 20 0 4188 280 228 R 100 0.0 0:04.88 yes
1 root 20 0 3640 2060 1324 S 0 0.0 0:01.23 init
2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:00.15 ksoftirqd/0
6 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
Run Code Online (Sandbox Code Playgroud)
与2)相同,但显示每核CPU使用率:
top - 18:13:47 up 7:54, 2 users, load average: 0.86, 0.36, 0.24
Tasks: 157 total, 2 running, 155 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 :100.0%us, 0.0%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu7 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 16528224k total, 1124756k used, 15403468k free, 148840k buffers
Swap: 15624188k total, 0k used, 15624188k free, 670472k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8254 tim 20 0 4188 280 228 R 100 0.0 1:53.98 yes
1 root 20 0 3640 2060 1324 S 0 0.0 0:01.23 init
2 root 20 0 0 0 0 S 0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0 0.0 0:00.15 ksoftirqd/0
6 root RT 0 0 0 0 S 0 0.0 0:00.00 migration/0
Run Code Online (Sandbox Code Playgroud)
注意:我确实注意到第一个统计数据top显示没有显示100%的cpu使用情况yes,类似于你所拥有的.也许那就是问题?
| 归档时间: |
|
| 查看次数: |
15977 次 |
| 最近记录: |