Debianでfree -m
を実行VM Hyper-Vで実行:
total used free shared buffers cached
Mem: 10017 9475 541 147 34 909
-/+ buffers/cache: 8531 1485
Swap: 1905 0 1905
したがって、私の10 GBのメモリのうち、8.5 GBが使用されており、空き領域は1500 MBだけです(キャッシュを除く)。
しかし、私はメモリを使用しているものを見つけるのに苦労しています。 RSS使用率を合計すると想定されるps aux | awk '{sum+=$6} END {print sum / 1024}'
の出力は次のとおりです。
1005.2
つまり、私のプロセスは1 GBのメモリしか使用しませんが、システム全体(キャッシュを除く)は8.5 GBを使用します。
他の7.5GBは何に使用できますか?
ps:私は1200の使用済みメモリ(無料のmem = 8.8GB)を示す同様の構成を持つ別のサーバーがあり、psでのRSS使用の合計は900で、これは私が期待するものに近いです...
マシン1のcat /proc/meminfo
(メモリ不足):
MemTotal: 10257656 kB
MemFree: 395840 kB
MemAvailable: 1428508 kB
Buffers: 162640 kB
Cached: 1173040 kB
SwapCached: 176 kB
Active: 1810200 kB
Inactive: 476668 kB
Active(anon): 942816 kB
Inactive(anon): 176184 kB
Active(file): 867384 kB
Inactive(file): 300484 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1951740 kB
SwapFree: 1951528 kB
Dirty: 16 kB
Writeback: 0 kB
AnonPages: 951016 kB
Mapped: 224388 kB
Shmem: 167820 kB
Slab: 86464 kB
SReclaimable: 67488 kB
SUnreclaim: 18976 kB
KernelStack: 6736 kB
PageTables: 13728 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 7080568 kB
Committed_AS: 1893156 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 62284 kB
VmallocChunk: 34359672552 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 67520 kB
DirectMap2M: 10418176 kB
マシン2のcat /proc/meminfo
(通常のメモリ使用量):
MemTotal: 12326128 kB
MemFree: 8895188 kB
MemAvailable: 10947592 kB
Buffers: 191548 kB
Cached: 2188088 kB
SwapCached: 0 kB
Active: 2890128 kB
Inactive: 350360 kB
Active(anon): 1018116 kB
Inactive(anon): 33320 kB
Active(file): 1872012 kB
Inactive(file): 317040 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 3442684 kB
SwapFree: 3442684 kB
Dirty: 44 kB
Writeback: 0 kB
AnonPages: 860880 kB
Mapped: 204680 kB
Shmem: 190588 kB
Slab: 86812 kB
SReclaimable: 64556 kB
SUnreclaim: 22256 kB
KernelStack: 10576 kB
PageTables: 11924 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 9605748 kB
Committed_AS: 1753476 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 62708 kB
VmallocChunk: 34359671804 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 63424 kB
DirectMap2M: 12519424 kB
Hyper-Vを使用しているとのことですが、概念は似ています。多分これはあなたを正しい軌道に乗せるでしょう。
問題は、ハイパーバイザーがメモリを最適化するために使用する手法である仮想メモリバルーニングが原因である可能性があります。参照 説明についてはこのリンク
VSphereのVMでもまったく同じ症状が見られました。何も実行されていない4Gマシンは、キャッシュが30Mを使用していると報告しますが、「-/ +バッファー」行で3G以上が「使用」されています。
以下は、VMWareのstatisticsコマンドの出力例です。これは、私の「使用済み」量に対して3Gにどれだけ近づいているのかを示しています。
vmware-toolbox-cmd stat balloon
3264 MB
私の場合、明らかに、私のバルーンドライバーは〜3Gを使用していました
バルーンの統計情報を取得するためのHyper-Vの同様のコマンドが何かはわかりませんが、同様の結果が得られると思います
https://serverfault.com/questions/85470/meaning-of-the-buffers-cache-line-in-the-output-of-free
短い答え:カーネルは、ファイルのキャッシュなど、さまざまなタスクにバッファ/キャッシュメモリを使用します。このメモリは、必要に応じてアプリケーションで利用できるので、944 MBを使用していると言って間違いありません。