Linux 시스템의 모든 스왑 메모리 사용량을 계산하려고 하는데 프로세스의 모든 스왑 사용량 합계(아래 줄을 사용하여 계산)와 출력 사이에 free
차이가 있습니다 meminfo
.
총 스왑 사용량을 계산합니다.
for file in /proc/*/status ; do grep VmSwap $file; done | grep kB | grep -v "0 kB"
스왑 사용에 영향을 미치는 다른 요인이 있는 것으로 보입니다.
답변1
최소한 두 명의 Exchange 사용자가 누락되었습니다.
- tmpfs: 설치된 모든 tmpfs 인스턴스(일반적으로 최소한 /tmp 및 /run 및 기타 디렉터리)는 스왑 공간으로 지원됩니다. 일반적으로 tmpfs의 데이터는 커널의 페이지 캐시에 있습니다. 그러나 시스템에 메모리가 부족해지기 시작하면 데이터를 보존하는 동시에 다른 작업을 위한 공간을 확보하기 위해 이 데이터를 강제로 교체해야 할 수도 있습니다. 내가 아는 한, tmpfs 사용량은 스왑 사용량을 계산할 때 어떤 프로세스에도 포함되지 않습니다. (실용적인 관점에서 특정 프로세스에 특정 파일을 포함할 수 없는 것처럼 어떤 프로세스에도 포함할 수 없습니다.) . Hugetlbfs 인스턴스도 마찬가지입니다(hugetlbfs는 특별한 유형의 tmpfs입니다).
- 공유 메모리 세그먼트: 명명된 POSIX 공유 메모리 세그먼트의 경우 데이터는 궁극적으로 /dev/shm에 저장됩니다. 이 세그먼트 자체는 tmpfs 마운트 지점이며 익명 공유 메모리 세그먼트의 경우에는 해당됩니다(하지만 확실하지는 않습니다). , 시도하고 테스트할 인내심이나 기술 없음) 공간 사용도 특정 프로세스를 고려하지 않습니다.
다른 스왑 사용자가 있을 수도 있지만 제가 확인한 비프로세스 스왑 사용자는 이 두 명뿐입니다.