我的系统是 SUSE 10,我观察到top
使用它时 CPU 使用率为 57%。
我没有太多的流程:
ps -eLf | wc -l
106
以下是top
的统计数据:
cat /proc/2913/stat
2913 (top) R 2879 2913 2879 34819 2913 8396800 411 0 0 0 60648 199580 0 0 17 0 1 516504552 4811013274 2383872 285 4294967295 134512640 134596384 3215474448 3215470376 3085449998 0 0 0 138047495 0 0 0 17 3 0 0 0
cat /proc/2913/status
Name: top
State: R (running)
SleepAVG: 79%
Tgid: 2913
Pid: 2913
PPid: 2879
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups: 0
VmPeak: 2360 kB
VmSize: 2328 kB
VmLck: 0 kB
VmHWM: 1144 kB
VmRSS: 1140 kB
VmData: 260 kB
VmStk: 84 kB
VmExe: 84 kB
VmLib: 1788 kB
VmPTE: 16 kB
Threads: 1
SigQ: 2/16383
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 00000000083a7007
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
Cpus_allowed: 00000000,00000000,00000000,0000000f
Mems_allowed: 1
## cat /proc/2913/statm
582 285 213 21 0 86 0
top
我接下来该做什么才能找出该命令占用如此多 CPU 的原因?
答案1
top 只使用了你?上网本? 你可以从这一行看到:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2913 root 16 0 2328 1140 852 R 57 0.1 38:15.95 top
它只使用了据说的 57%,而有 94 个任务处于休眠状态:
Tasks: 95 total, 1 running, 94 sleeping, O stopped, O 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
Cpul : 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.0%us, 0.0%sy, 0.0%ni, 99.7%id, 0.3%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu3 :13.3%us,43.6%sy, 0.0%ni, 43.0%id, 0.1%wa, 0.0%hi, 0.0%si, 0.0%st
CPU0 100%处于空闲状态,CPU1和CPU2也是如此,CPU3仅占用43%的时间用于系统进程,13%的时间用于用户进程。
正如 man 1 首页所说:
us, user : time running un-niced user processes
sy, system : time running kernel processes
ni, nice : time running niced user processes
id, idle : time spent in the kernel idle handler
wa, IO-wait : time waiting for I/O completion
hi : time spent servicing hardware interrupts
si : time spent servicing software interrupts
st : time stolen from this vm by the hypervisor
顶部仅使用
57/4% 或 14%
您的处理能力,并且
.1%
你的记忆。
答案2
您的服务器已运行 556 天。虽然这不应该是个问题,但长时间的运行可能会导致您注意到的一些异常行为。没有任何可识别的原因。根据我的经验,在这种情况下,重新重新启动可以立即解决问题。我知道这是一个愚蠢的解决方案,但为什么要浪费更多时间来解决这个问题呢?
如果重新启动不能解决问题,那么就值得更深入地研究它。