記憶體使用:與 /proc/meminfo 相比,`free -m` 和 htop 以及 htop 中已使用記憶體的計算有很大差異

記憶體使用:與 /proc/meminfo 相比,`free -m` 和 htop 以及 htop 中已使用記憶體的計算有很大差異

我知道這個問題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我找到了一個合適的解決方案。據此,它將透過 via 計算,MemTotal - MemFree - Buffers - Cached - Slab但與 htop 相比,這會導致記憶體使用率太低。

htop 中的記憶體使用情況似乎非常相關,如free -m儲存格所示Mem: used

但如果你創造一個 ramdisk,情況就會發生很大變化:

mkdir mnt
sudo mount -t tmpfs none mnt
cd mnt 
sudo dd if=/dev/urandom of=test bs=32M status=progress

上面將建立一個 RAM 磁碟,其大小為已安裝記憶體的 50%,並填入此 ramdisk。

htop 現在顯示已使用的實體 RAM 的一半多一點,在測試案例中使用了 3.82 GB 的 7.44 GB。然而,free -m與建立和填充 RAM 磁碟之前的 102 MB 相比,仍顯示僅使用了 104 MB。所以使用 104 MB 肯定是錯誤的,因為一半的實體系統記憶體已經被 RAM 磁碟使用,因此不再可用。

RAM 磁碟的大小/proc/meminfo似乎包含在 中Cached,因此在計算已使用的快取記憶體時不應減去。

那為什麼 free -m 會回報這樣錯誤的空閒記憶體值呢?預設情況下,Debian 或 Ubuntu 等發行版上有各種 tmpfs,這意味著 free -m 會給空閒記憶體留下錯誤的印象。

htop 的記憶體計算似乎很合理。那麼如何計算 htop 值呢/proc/meminfo

相關內容