스왑 공간이 가득 찼지만 프로세스가 스왑 공간을 거의 사용하지 않습니다.

스왑 공간이 가득 찼지만 프로세스가 스왑 공간을 거의 사용하지 않습니다.

나는 약 하루 후에(때때로 더 빨리) 모든 스왑 공간을 모두 사용하는 Debian VM을 가지고 있습니다(따라서 zabbix가 나를 괴롭힙니다). swappiness으로 설정했지만 0조금 느려질지라도 여전히 이 작업을 수행합니다.

가장 흥미로운 점은 프로세스의 스왑 사용량을 나열하면(상위별 또는 기준별로)스크립트) 그리고 이를 합산하면 보고서에 사용된 1022MB 대신 약 55MB만 얻게 됩니다 free.

개별 프로세스의 합산된 스왑 사용량과 보고된 총 스왑 사용량이 일치하지 않는 이유는 무엇입니까?

운영 체제: 데비안 10.11
리눅스: 4.19.0-18-amd64

답변1

top교환은 매우 신뢰할 수 없는 추정 합계 /proc필드 VmSwap(링크 스크립트에서 사용되는 필드)를 사용합니다.

실제 스왑 사용량을 합리적으로 추정하려면 다음을 살펴봐야 합니다 /proc/…/smaps.smem당신을 위해 이것을 할 수 있습니다예를 들어

sudo smem -s swap -r|head

상위 거래소 사용자가 표시됩니다.

sudo smem -t

할당된 총 스왑 금액( 으로 계산 smaps)은 하단 요약 줄에 표시됩니다.

이것도 정확하지 않을 수 있지만 더 나은 결과를 제공할 것입니다. 스왑은 여러 번 계산될 수 있으며, 이 경우 요약 줄에서 과도하게 계산되고 스왑의 항목이 단일 프로세스에 할당되지 않은 것이 분명합니다(예를 들어교환 tmpfs), 이 경우 저평가됩니다.

관련 정보