私はfree -m
Hyper-Vで動作するDebian VMでこれを実行しています:
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が使用されており、1,500 MBしか使用できません(キャッシュを除く)。
しかし、メモリの使用が何であるかを見つけるのに問題があります。ps aux | awk '{sum+=$6} END {print sum / 1024}'
(RSS使用率を合計する必要があります)の出力は次のとおりです。
1005.2
つまり、私のプロセスは1 GBのメモリしか使用しませんが、システム全体(キャッシュを除く)は8.5 GBを使用します。
残りの7.5GBはどのような用途に使用できますか?
ps:使用されているメモリを1200(使用可能メモリ= 8.8 GB)としてマークし、psの合計RSS使用量を900としてマークする同様の構成の他のサーバーがあります。これは予想より近いです。
編集する
cat /proc/meminfo
マシン1(メモリ不足):
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
cat /proc/meminfo
マシン2(一般的なメモリ使用量):
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
答え1
Hyper-Vを使用していることがわかっていますが、概念は似ています。おそらくこれはあなたを正しい道に導くでしょう。
問題は、ハイパーバイザーがメモリを最適化するために使用する技術である仮想メモリの拡張によって発生する可能性があります。バラよりこのリンクの説明
vSphereの仮想マシンであなたと同じ症状が観察されています。何も実行しない4Gシステムは、30Mのキャッシュ使用量を報告しますが、「-/+バッファ」ラインで3Gよりも多くを「使用」します。
以下は、VMWare統計コマンドの出力例です。これは私の「使用された」金額が3Gにどれだけ近いかを示しています。
vmware-toolbox-cmd stat balloon
3264 MB
私の場合、バルーンドライバーは〜3Gを使用していることが明らかでした。
バルーン統計を得るために、Hyper-Vに似たコマンドが何であるかはよくわかりませんが、同様の結果が得られると確信しています。
答え2
https://serverfault.com/questions/85470/meaning-of-the-buffers-cache-line-in-the-output-of-free
短い答え:カーネルはバッファ/キャッシュを使用してファイルキャッシュなどのさまざまな操作を実行します。このメモリは、必要に応じてアプリケーションに使用できるため、944MBが使用されているという説明が正確です。