
나는 이 질문을 알고 있다https://stackoverflow.com/questions/41224738/how-to-calculate-system-memory-usage-from-proc-meminfo-like-htop 메모리 사용과 관련하여 답변이 오래된 것 같고 이 질문은 더 복잡해 보입니다.
htop은 이제 더 이상 총 메모리를 계산하지 않습니다 MemTotal - MemFree
. 거기https://access.redhat.com/solutions/406773적합한 솔루션을 찾았습니다. 그것에 따르면 그것은 다음을 통해 계산되지만 MemTotal - MemFree - Buffers - Cached - Slab
htop에 비해 메모리 사용량이 너무 낮습니다.
free -m
htop의 메모리 사용량은 셀에 표시된 것처럼 꽤 관련이 있는 것 같습니다.Mem: used
하지만 램디스크를 생성하면 상황이 많이 달라집니다.
mkdir mnt
sudo mount -t tmpfs none mnt
cd mnt
sudo dd if=/dev/urandom of=test bs=32M status=progress
위에서는 설치된 메모리 크기의 50% 크기의 RAM 디스크를 생성하고 이 램디스크를 채웁니다.
이제 htop은 사용된 물리적 RAM의 절반보다 조금 더 많은 양을 표시합니다. 테스트 사례에서는 7.44GB 중 3.82GB가 사용되었습니다. 그러나 free -m
RAM 디스크를 생성하고 채우기 전의 102MB와 비교하여 여전히 104MB만 사용된 것으로 표시됩니다. 따라서 104MB를 사용한 것은 확실히 잘못된 것입니다. 물리적 시스템 메모리의 절반은 RAM 디스크에서 사용되기 때문에 더 이상 사용할 수 없기 때문입니다.
RAM 디스크의 크기 는 /proc/meminfo
에 포함되는 것으로 보이 Cached
므로 사용된 메모리를 계산할 때 캐시된 값을 빼서는 안 됩니다.
그렇다면 왜 free -m이 그렇게 잘못된 여유 메모리 값을 보고합니까? 기본적으로 Debian 또는 Ubuntu와 같은 배포판에는 다양한 tmpfs가 있으며 이는 free -m이 사용 가능한 메모리에 대해 잘못된 인상을 준다는 것을 의미합니다.
htop의 메모리 계산은 상당히 합리적으로 보입니다. 그렇다면 htop 값은 어떻게 계산할 수 있습니까 /proc/meminfo
?