linux D状态进程重启仍然存在?我怎样才能关闭它?

linux D状态进程重启仍然存在?我怎样才能关闭它?

我有一台2cpu 4G服务器。最近发现负载比较高。故障排除后发现有D状态进程。我查了一些资料,说只有重启才能解决问题。

但我重启了好几次,这个进程还是存在。

请问大家,这个流程是怎样的?过程?如何解决这个问题呢?

Linux 5.10.60-9.al8.x86_64 #1 SMP 9 月 6 日星期一 21:30:37 CST 2021 x86_64 x86_64 x86_64 GNU/Linux

[root@test ~]# cat /proc/137/status 
Name:   load_calc
Umask:  0000
State:  D (disk sleep)
Tgid:   137
Ngid:   0
Pid:    137
PPid:   2
TracerPid:  0
Uid:    0   0   0   0
Gid:    0   0   0   0
FDSize: 64
Groups:  
NStgid: 137
NSpid:  137
NSpgid: 0
NSsid:  0
Threads:    1
SigQ:   1/14009
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: ffffffffffffffff
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 000001ffffffffff
CapEff: 000001ffffffffff
CapBnd: 000001ffffffffff
CapAmb: 0000000000000000
NoNewPrivs: 0
Seccomp:    0
Seccomp_filters:    0
Speculation_Store_Bypass:   vulnerable
Cpus_allowed:   3
Cpus_allowed_list:  0-1
Mems_allowed:   00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list:  0
voluntary_ctxt_switches:    59154
nonvoluntary_ctxt_switches: 0

[root@test ~]# cat /proc/137/stack 
[<0>] load_calc_func+0x55/0x1a0
[<0>] kthread+0x11b/0x140
[<0>] ret_from_fork+0x22/0x30

[root@test ~]# ps -ef |grep load
root         137       2  0 15:34 ?        00:00:00 [load_calc]
root       11317    1645  0 19:01 pts/0    00:00:00 grep --color=auto load

top - 19:03:10 up  3:28,  1 user,  load average: 1.00, 1.00, 1.00
Tasks: 143 total,   1 running, 141 sleeping,   0 stopped,   1 zombie
%Cpu(s):  3.2 us,  0.0 sy,  0.0 ni, 96.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   3538.5 total,    200.4 free,    774.7 used,   2563.3 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   2461.8 avail Mem 


答案1

该进程的父进程是kthreaddpid=2。这是一个内核线程,而不是一个“真正的”进程。它看起来像一个进程,因为它像进程一样被调度,但它运行内核代码,它没有自己的内存空间。

我找不到任何对官方 Linux 内核中调用的内核线程load_calc或运行的内核函数的引用。load_calc_func检查内核日志 ( dmesg) 以获取线索。

谷歌几乎没有搜索到load_calc_func,这很可疑。它可能是来自中国 OpenAnolis 克隆版 RHEL 的合法产品;懂中文的人(我不会)也许能看出来。它可能是恶意软件,在这种情况下,您不能相信在日志中找到的任何内容,您不能相信您在磁盘上看到的文件是实际加载到内存中的文件,并且您需要从已知的良好来源重新安装系统

相关内容