在 strace 中显示空闲的进程的 99% CPU 是什么意思?

在 strace 中显示空闲的进程的 99% CPU 是什么意思?

我的热门信息...

top - 16:02:16 up 461 days, 20:32,  1 user,  load average: 4.12, 4.10, 4.22
Tasks: 273 total,   5 running, 267 sleeping,   0 stopped,   1 zombie
Cpu0  :  0.7%us,  0.3%sy, 99.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.3%sy, 99.7%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.3%us,  0.3%sy, 99.3%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.3%us,  0.3%sy, 99.3%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16463796k total, 14791704k used,  1672092k free,   242224k buffers
Swap:  8388604k total,  1076164k used,  7312440k free, 11015344k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 7520 username  39  19 90992 1880 1864 R 99.6  0.0   4563:36 ftp
 7670 username  39  19 90992 1512 1496 R 98.9  0.0   8562:36 ftp
 9926 username  39  19 90992 1532 1516 R 98.9  0.0   8548:47 ftp
14414 username  39  19 90992 1528 1512 R 98.9  0.0   8662:33 ftp
30987 username2 20   0 4796m 803m  11m S  1.0  5.0   9:06.95 java
 2060 username2 20   0 3608m 1.2g 2480 S  0.3  7.8   6025:29 java

CentOS release 6.9 (Final)
LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch

如果我在 top 中关闭空闲进程,则显示的唯一进程是 ftp 和 top 本身。

所有其他非 ftp 进程的 CPU 利用率均低于百分之一。

ftp 进程的 tcpdump 和 strace 不显示活动。

看起来这意味着 4 个 cpu 的四个 ftp 进程都使用了少量的 %us 用户空间时间,这四个 ftp 进程都很好,所以它显示为 99 %ni,这意味着使用的少量用户空间时间几乎都是很好的。没有空闲时间 %id 因为那些 ftp 进程正在执行某物

我读的这些数字正确吗?

Linux 的 ftp 进程是否繁忙空任务?

答案1

这不是对您的具体问题的答案,ftp而是更一般的答案。

strace是系统跟踪的缩写。它仅跟踪系统调用和信号。

所以这会占用一个 CPU 线程,但strace不会显示任何内容,因为它不进行系统调用:

perl -e 'while(1){}'

这不是正常的等待方式。通常,您可以使用sleep或阻塞 I/O,这两者都不占用 CPU 时间。

答案2

这些ftp进程可能是多线程的,您只能看到第一个线程的详细信息。

如果您的 top 版本与我的机器上的版本类似,则按H将切换线程显示,并且您将看到线程的其他详细信息。

我的猜测strace 输出显示 ftp 进程在等待工作线程时被 futex 系统调用阻塞(还有其他可能性,包括 read 和 nanosleep)。我还猜测这些进程与文件传输协议无关,而是进行加密硬币挖掘,尽管这一点不太确定。

ftp进程是不是忙于 Linux 空任务,无法合理解释这意味着什么。

相关内容