중요한 교환 알림이 수신되는 이유를 조사한 결과 다음과 같은 내용을 찾을 수 있습니다.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND
14683 user1 30 10 16.0g 772m 744 S 0.3 0.3 277:24.87 6.5g MATLAB
14576 user1 30 10 8125m 1.1g 736 S 0.3 0.4 261:16.73 4.1g MATLAB
이러한 프로세스의 TIME+ 열은 고정되어 있습니다.
내 질문은 위의 내용이 무엇을 의미합니까?
내가 이해한 바에 따르면 정지 시간은 휴면 프로세스/CPU에서 처리되지 않음을 의미합니다. 그런데 위의 예에서는 CPU 사용량이 0.3%이므로 시간 열이 아주 작아도 계속해서 늘어나야 하는 것 아닌가요?
이러한 프로세스가 "완료"되었나요? 이런 경우에는 어떻게 청소해야 하나요? 이를 시작한 사용자가 이를 확인하거나 이러한 리소스를 해제하기 위해 다른 조치를 취해야 합니까?
답변1
예를 들어 가짜 작업을 실행한 sleep 120
다음 이를 관찰하면 해당 상태가 일명 "휴면"이고 프로세스가 전체 기간 동안 0:00.00에 유지된다는 htop
것을 알 수 있습니다 .S
TIME
이는 프로세스가 TIME
이 열의 목적인 0 CPU 시간을 소비하기 때문입니다. 특정 프로세스가 사용한 CPU 시간을 추적합니다.
프로세스가 여러 CPU 코어에서 실행될 수 있는 경우 이 계산은 사용 가능한 것보다 더 많은 시간을 소비하는 것처럼 보이기 때문에 때때로 혼란스러울 수 있습니다. X 코어가 있으면 시간이 X * TIME으로 표시될 것입니다.
답변2
이러한 차이가 나타나는 이유는 TIME+ 열이 나열된 프로세스의 종료로 인해 생성된 하위 프로세스에서 사용된 CPU 시간을 고려하지 않기 때문입니다. 그래서 당신이 보여주는 줄은 응용 프로그램이 거의 즉시 죽는 아이를 생성하고 있음을 나타냅니다.
So, the CPU usage is due to spawned children which do not count in the TIME+ column.
"S" 스위치를 통해 상단을 변경하여 누적 시간을 수행할 수 있습니다.
하지만 내 생각에는 당신이 조사하려는 내용에 대한 잘못된 지표를 찾고 있는 것 같습니다.
strace -p <pid>
어떤 프로세스가 실행 중이고 정확히 무엇을 하고 있는지 알려주는 친구입니다.
Strace에는 몇 가지 옵션이 있습니다. 주목할만한 옵션으로는 -f, -ff, -i, v 등이 있습니다. Strace는 가장 유용한 도구이므로 man strace
이러한 문제를 해결하기 위해 제공되는 옵션을 직접 확인하는 것이 좋습니다.