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입니다. 이것은 "실제" 프로세스가 아닌 커널 스레드입니다. 프로세스처럼 예약되므로 프로세스처럼 보이지만 커널 코드를 실행하고 자체 메모리 공간이 없습니다.

load_calc공식 Linux 커널에서 호출된 커널 스레드나 커널 함수에 대한 참조를 찾을 수 없습니다 . 단서를 찾으려면 load_calc_func커널 로그( dmesg)를 확인하세요.

Google은 거의 나타나지 않으며 load_calc_func이는 의심스럽습니다. 아마도 중국 OpenAnolis 클론 RHEL의 합법적인 제품일 것입니다. 중국어를 아는 사람은 알 수 있을 것입니다. 맬웨어일 수 있습니다. 이 경우 로그에서 찾은 내용을 신뢰할 수 없으며 디스크에 표시되는 파일이 실제로 메모리에 로드된 파일인지 신뢰할 수 없습니다.알려진 양호한 소스에서 시스템을 다시 설치해야 합니다..

관련 정보