服务器上的任务处于休眠状态

服务器上的任务处于休眠状态

我登录到一个具有多处理器的服务器并启动了 20 个 Python 程序,每个程序处理我的部分数据。

但是耗时太长了,检查了一下top,发现所有的 ipython 进程都处于休眠状态,到底是怎么回事?

$ top -u calc

top - 13:36:27 up 31 days,  4:48,  1 user,  load average: 0.13, 0.21, 0.20
Tasks: 335 total,   1 running, 334 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
KiB Mem:  66003900 total, 11998508 used, 54005392 free,   694584 buffers
KiB Swap:        0 total,        0 used,        0 free,  3192728 cached

   PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                       
105953 calc      20   0 13676 1568  980 R     1  0.0   1:04.91 top                                           
 92380 calc      20   0  507m 107m  18m S     0  0.2 248:47.52 ipython                                       
 92379 calc      20   0  507m 108m  18m S     0  0.2 244:19.90 ipython                                       
 92378 calc      20   0  510m 111m  18m S     0  0.2 257:01.33 ipython                                       
 92377 calc      20   0  510m 110m  18m S     0  0.2 252:13.59 ipython                                       
 92376 calc      20   0  514m 114m  18m S     0  0.2 247:35.26 ipython                                       
 92375 calc      20   0  503m 104m  18m S     0  0.2 222:48.84 ipython                                       
 92374 calc      20   0  514m 114m  18m S     0  0.2 247:16.59 ipython                                       
 92373 calc      20   0  508m 108m  18m S     0  0.2 252:58.08 ipython                                       
 92372 calc      20   0  516m 116m  18m S     0  0.2 241:42.16 ipython                                       
 92364 calc      20   0  511m 110m  18m S     0  0.2 229:59.30 ipython                                       
 92363 calc      20   0  507m 107m  18m S     0  0.2 255:22.32 ipython                                       
 92362 calc      20   0  516m 116m  18m S     0  0.2 238:59.80 ipython                                       
 92361 calc      20   0  506m 107m  18m S     0  0.2 253:45.55 ipython                                       
 92360 calc      20   0  510m 110m  18m S     0  0.2 250:11.67 ipython                                       
 92359 calc      20   0  507m 108m  18m S     0  0.2 240:12.78 ipython                                       
 88737 calc      20   0 12832 5192 1568 S     0  0.0   0:00.16 bash                                          
 88735 calc      20   0  9248 1340 1120 S     0  0.0   0:00.00 bash  

有关 CPU 的一些信息:

$ grep 'physical id' /proc/cpuinfo|sort -u|wc -l

输出2

grep 'core id' /proc/cpuinfo|sort -u|wc -l

输出10

grep 'processor' /proc/cpuinfo|sort -u|wc -l

输出40

答案1

您只能看到系统的快照视图,并且在特定时刻,您的所有进程都处于“S”状态。这就是“S”状态的含义

可中断睡眠(等待事件完成)

如果您查看 TIME+ 列,您会发现所有进程都在消耗 CPU 时间,并且大体上它们消耗的时间相同。

在我看来这很正常。


什么原因导致进程进入“S”状态?其实有很多原因,通常是 I/O、等待信号量等。

如果您确实关心,您可以使用 strace 附加到某个进程并查看其正在做什么。

strace -p 92376

将跟踪您的进程 92376。

相关内容