CentOS7 kswapd0 进程占用了 99% 的 CPU

CentOS7 kswapd0 进程占用了 99% 的 CPU

CentOS7 root 占用 99% 的 CPU

当我top在centos7上运行时,发现kswapd0吃了99%的CPU,如上图所示。

以下是一些其他信息

top - 11:38:04 up 32 days, 16:14,  1 user,  load average: 0.06, 0.13, 0.19
Tasks: 142 total,   2 running, 140 sleeping,   0 stopped,   0 zombie
%Cpu(s): 12.0 us,  2.0 sy,  0.0 ni, 79.0 id,  6.7 wa,  0.0 hi,  0.0 si,  0.3 st
KiB Mem :  3618860 total,   199684 free,  1130200 used,  2288976 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2152124 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
12493 mysql     20   0 1200596 402140   6868 S  5.3 11.1  46:54.22 mysqld
13460 apache    20   0 1089628  43932  22264 S  3.0  1.2   1:16.40 php-fpm
13462 apache    20   0 1088772  42704  21672 S  1.3  1.2   1:14.47 php-fpm
 9391 root      20   0  124508  11588   4852 S  0.7  0.3   8:38.31 AliYunDun
13474 apache    20   0 1073892  40976  19884 S  0.7  1.1   1:15.93 php-fpm
12609 apache    20   0 1088832  44976  24000 S  0.3  1.2   1:15.94 php-fpm
12615 apache    20   0 1077948  42776  21764 S  0.3  1.2   1:16.34 php-fpm
12616 apache    20   0 1077568  43116  22344 S  0.3  1.2   1:14.59 php-fpm
12619 apache    20   0 1085672  44144  22380 S  0.3  1.2   1:14.62 php-fpm
12663 nginx     20   0   66928   7604   2276 S  0.3  0.2   4:55.48 nginx
12664 nginx     20   0   68064   9124   2708 S  0.3  0.3   5:17.61 nginx
13451 apache    20   0 1077360  41092  20452 S  0.3  1.1   1:15.16 php-fpm
20987 root      20   0  143572   5788   4492 S  0.3  0.2   0:00.75 sshd
27671 root      20   0  157676   2208   1544 R  0.3  0.1   0:00.12 top
28370 apache    20   0 1071564  34900  15676 S  0.3  1.0   1:01.53 php-fpm
    1 root      20   0  191276   5412   1464 S  0.0  0.1   2:03.59 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.06 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   0:46.51 ksoftirqd/0
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/0
   10 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/1
   11 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/2
   12 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/3
   13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/4
   14 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/5
   15 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/6
   16 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/7
   17 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/8
   18 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/9
   19 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/10
   20 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/11
   21 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/12
   22 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/13
   23 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcuob/14

我不知道为什么

[root@fl basic]#free -lh
              total        used        free      shared  buff/cache   available
Mem:           3.5G        1.1G        197M         87M        2.2G        2.1G
Low:           3.5G        3.3G        197M
High:            0B          0B          0B
Swap:            0B          0B          0B

答案1

好吧,root 不会占用你的 CPU,它会占用你的 CPU kswapd已知错误在 Linux 内核中。我们在 CentOS 7.1 中遇到了同样的问题,升级到 7.2 后问题就解决了。也许内核更新可以解决您的问题。

答案2

正如 AlexanderT 所说,这可能是一个内核错误,因此您应该更新内核。

如果您不能这样做,一个可能的解决方法是通过发出以下命令定期删除缓冲区/页面缓存:echo 3 > /proc/sys/vm/drop_caches

答案3

虽然在这种情况下它看起来像上面提到的内核错误,但在其他情况下它可能是其他东西。

可能是恶意软件。进程名称已更改为显示 kswapd0。这是恶意软件常用的伎俩,kswapd0 是我特别见过的一个。

还有一些线索表明这不仅仅是一个良性的内核进程:

  • 内核进程的名称周围没有 [括号]
  • 内核进程通常具有较低的 PID;在具有 64 个内核的服务器上,kswapd 大约有 500 个(内核越多意味着 kprocs 越多,例如迁移、看门狗、ksoftirqd,它们在 kswapd 之前运行)
  • /proc/$PID/fd 中的文件 - 真正的 kproc 将没有任何文件描述符。
  • 对于内核进程,VIRT/RES/SHR 将为 0,但此处的伪进程将具有非零值。
  • 查找其他可疑进程。您是否看到 uptime、ls -la、id、whoami 等通常在几分之一秒内返回的内容?在您运行 ps 时,它们是如何全部运行的?您可能有恶意软件。

您仍然可能有一个真正的交换负载。如果您的系统可用内存不足,或者您的交换处于活动状态(如果有),那么这可能是由于正常的 VM 子系统操作造成的。

相关内容