답변:
kswapd는 모든 프로세스에 물리적으로 사용 가능한 것보다 많은 메모리 요구에 응답하여 스왑 공간을 관리 합니다.
프로세스에 구애받지 않고 액세스 할 수있는 페이지와시기에만 관심이 있습니다 (물론 이것보다 더 복잡하지만 일을 단순하게 유지하려면 이러한 방식으로 볼 수도 있습니다).
따라서 실제 질문은 "kswapd가 항상 페이징해야하는 메모리에 가장 많은 부담이있는 프로세스"입니다.
'top'을 사용하고 메모리 사용 정렬 모드로 전환하면 가장 쉽게 대답 할 수 있습니다.
top
IO 대기에 시간이 소비되지 않으며 시스템에서 거의 100 %의 시간이 소비되고 있다고 알려줍니다. 추가 정보 : 스왑 사용시 kswapd는 종종 100 % CPU를 사용합니다
당신은 그것을 스크립트 할 수 있습니다 ..하지만 당신은 또한 상단을 통해 그것을 할 수 있습니다
실행 상단은 보도 O는 다음 페이지 다음 입력
이제 모든 프로세스가 스왑 사용량별로 정렬되어 있으며이를 사용중인 프로세스를 확인할 수 있습니다
Ubuntu 15.10 이상을 사용 하는 경우, 특히 시스템에 스왑 파티션이없는 가상 머신 (예 : AWS EC2) 인 경우 버그 의 결과 일 수 있습니다 . 다른 배포판에 문제 가 있지만, 글을 쓰는 시점에 동일한 수정 프로그램이 보편적으로 작동하는지는 확실하지 않습니다.
임시 해결 방법 :
sudo ln -s /dev/null /etc/udev/rules.d/40-vm-hotadd.rules
sudo reboot
그러면 Xen 및 Hyper-V 가상 시스템에 대한 RAM / CPU 핫 애드 기능이 비활성화됩니다.
echo 3 > /proc/sys/vm/drop_caches
그것이 일어나기 시작하면 그것을 완화시키는 것을 발견했다 . 나는 현재 cron 작업에 대해 선제 적으로 명령을 내 렸으며 컴퓨터에서 멀리 떨어져있을 때 최소한 OOM 학살의 기간을 돕거나 제한하는 것처럼 보인다.
kswapd
어딘가에 버그가있는 것 같습니다 . 기존 커널에만 있습니다.
거의 매일은 kswapd가 더 큰 클러스터 (비 현재 커널이있는)의 일부 시스템에서 임의로 작동합니다. kswapd 프로세스 모두에서 100 % CPU. 다른 실행중인 프로세스 (ssh 셸 제외), 충분한 여유 RAM (700MB 이상) 및 사용 된 SWAP이 없습니다. 스왑 인도없고 스왑 아웃도 없습니다.
아직 특정 기계가 명중되고 다른 기계가 명중되지 않은 이유는 설명되어 있지 않습니다. 일반적으로 짧은 시간 내에 두 대 이상의 머신을 공격하기 때문에 완전히 임의적이지 않은 것 같습니다. 유휴 상태의 기계와 고압 상태의 기계는 효과에 덜 영향을받는 것처럼 보입니다. 따라서 작업 부하로 무언가를 수행해야하며 기계가 유휴 상태이거나 사용량이 많지 않은 경우에만 적중합니다.
문제가 발생하면 더 이상 도움이되지 않습니다. 모든 파일 시스템을 마운트 해제하는 것은 불가능합니다. kswapd
여전히 100 % CPU를 유지합니다. SMP 커널에서 스핀 락 경쟁이 의심되지만 잘못되었을 수도 있습니다.
아마도 내 답변 serverfault.com/questions/316995/#493257 참조
노트: