
この質問は承知しています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
しかし、RAM ディスクを作成すると、状況は大きく変わります。
mkdir mnt
sudo mount -t tmpfs none mnt
cd mnt
sudo dd if=/dev/urandom of=test bs=32M status=progress
上記では、インストールされているメモリの 50% のサイズの RAM ディスクを作成し、この RAM ディスクを埋めます。
htop は、現在使用されている物理 RAM の半分強を表示します。テスト ケースでは、7.44 GB のうち 3.82 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
?