프로세스의 스왑 사용량과 유휴 또는 meminfo 스왑 사용량 출력 간의 차이

프로세스의 스왑 사용량과 유휴 또는 meminfo 스왑 사용량 출력 간의 차이

Linux 시스템의 모든 스왑 메모리 사용량을 계산하려고 하는데 프로세스의 모든 스왑 사용량 합계(아래 줄을 사용하여 계산)와 출력 사이에 free차이가 있습니다 meminfo.

총 스왑 사용량을 계산합니다.

for file in /proc/*/status ; do grep VmSwap $file; done | grep kB | grep -v "0 kB"

스왑 사용에 영향을 미치는 다른 요인이 있는 것으로 보입니다.

답변1

최소한 두 명의 Exchange 사용자가 누락되었습니다.

  1. tmpfs: 설치된 모든 tmpfs 인스턴스(일반적으로 최소한 /tmp 및 /run 및 기타 디렉터리)는 스왑 공간으로 지원됩니다. 일반적으로 tmpfs의 데이터는 커널의 페이지 캐시에 있습니다. 그러나 시스템에 메모리가 부족해지기 시작하면 데이터를 보존하는 동시에 다른 작업을 위한 공간을 확보하기 위해 이 데이터를 강제로 교체해야 할 수도 있습니다. 내가 아는 한, tmpfs 사용량은 스왑 사용량을 계산할 때 어떤 프로세스에도 포함되지 않습니다. (실용적인 관점에서 특정 프로세스에 특정 파일을 포함할 수 없는 것처럼 어떤 프로세스에도 포함할 수 없습니다.) . Hugetlbfs 인스턴스도 마찬가지입니다(hugetlbfs는 특별한 유형의 tmpfs입니다).
  2. 공유 메모리 세그먼트: 명명된 POSIX 공유 메모리 세그먼트의 경우 데이터는 궁극적으로 /dev/shm에 저장됩니다. 이 세그먼트 자체는 tmpfs 마운트 지점이며 익명 공유 메모리 세그먼트의 경우에는 해당됩니다(하지만 확실하지는 않습니다). , 시도하고 테스트할 인내심이나 기술 없음) 공간 사용도 특정 프로세스를 고려하지 않습니다.

다른 스왑 사용자가 있을 수도 있지만 제가 확인한 비프로세스 스왑 사용자는 이 두 명뿐입니다.

관련 정보