web-dev-qa-db-ja.com

メモリ使用量が多いが、プロセスが使用していない

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
17
assylias

Hyper-Vを使用しているとのことですが、概念は似ています。多分これはあなたを正しい軌道に乗せるでしょう。

問題は、ハイパーバイザーがメモリを最適化するために使用する手法である仮想メモリバルーニングが原因である可能性があります。参照 説明についてはこのリンク

VSphereのVMでもまったく同じ症状が見られました。何も実行されていない4Gマシンは、キャッシュが30Mを使用していると報告しますが、「-/ +バッファー」行で3G以上が「使用」されています。

以下は、VMWareのstatisticsコマンドの出力例です。これは、私の「使用済み」量に対して3Gにどれだけ近づいているのかを示しています。

vmware-toolbox-cmd stat balloon
3264 MB

私の場合、明らかに、私のバルーンドライバーは〜3Gを使用していました

バルーンの統計情報を取得するためのHyper-Vの同様のコマンドが何かはわかりませんが、同様の結果が得られると思います

15
Matt

https://serverfault.com/questions/85470/meaning-of-the-buffers-cache-line-in-the-output-of-free

短い答え:カーネルは、ファイルのキャッシュなど、さまざまなタスクにバッファ/キャッシュメモリを使用します。このメモリは、必要に応じてアプリケーションで利用できるので、944 MBを使用していると言って間違いありません。

1
vik