web-dev-qa-db-ja.com

Linux高RAM不明な理由による使用

これを探して、「キャッシュされた」数値を正しく解釈しない人々の投稿のみを見つけた後、私はこの質問をすることにしました。

私はいくつかのサーバーを手元に持っていますが、それらは奇妙に動作します。つまり、それらのRAMの使用率は、明白な理由もなく非常に高いです。目に見えないプロセスには多くの「使用済み」があるようですRAM(つまり、 "中古")。

ここにいくつかの情報があります:

  • すべてのサーバーがSLES11を実行します
  • カーネルは3.0.76です
  • すべてのサーバーがVMWare ESXインフラストラクチャの下でゲストとして実行されます
  • サーバーをセットアップしておらず、OSの選択についても発言権がなく、仮想化インフラストラクチャにアクセスすることもできません。
  • すべてのサーバーは同じようにセットアップされ、同じソフトウェアのセットを実行します(これはクラスターであり、仮想化クラスター、yada yada、言ったように:私はそれについては何も言いませんでした)

そして、いくつかのシェル出力:

root@good-server:# free -m
             total       used       free     shared    buffers     cached
Mem:         15953      14780       1173          0        737       8982
-/+ buffers/cache:       5059      10894
Swap:        31731          0      31731

root@good-server:# python ps_mem.py
[... all processes neatly listed ...]
---------------------------------
                          4.7 GiB
=================================

root@bad-server:# free -m
             total       used       free     shared    buffers     cached
Mem:         15953      15830        123          0        124       1335
-/+ buffers/cache:      14370       1583
Swap:        31731         15      31716

root@bad-server:# python ps_mem.py
[... all processes neatly listed ...]
---------------------------------
                          4.0 GiB
=================================

良いサーバーの/ proc/meminfoの内容

MemTotal:       16336860 kB
MemFree:          112356 kB
Buffers:          138384 kB
Cached:          1145208 kB
SwapCached:         1244 kB
Active:          4344336 kB
Inactive:        1028744 kB
Active(anon):    3706796 kB
Inactive(anon):   382724 kB
Active(file):     637540 kB
Inactive(file):   646020 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      32493560 kB
SwapFree:       32477728 kB
Dirty:              1248 kB
Writeback:             0 kB
AnonPages:       4087776 kB
Mapped:            60132 kB
Shmem:               156 kB
Slab:             274968 kB
SReclaimable:     225864 kB
SUnreclaim:        49104 kB
KernelStack:        4352 kB
PageTables:        16400 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    40661988 kB
Committed_AS:    6576912 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      311400 kB
VmallocChunk:   34359418748 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       73728 kB
DirectMap2M:    16703488 kB

不良サーバーの/ proc/meminfoの内容

MemTotal:       16336860 kB
MemFree:         1182320 kB
Buffers:          756244 kB
Cached:          8695688 kB
SwapCached:            0 kB
Active:         13499680 kB
Inactive:         843208 kB
Active(anon):    4853460 kB
Inactive(anon):    37372 kB
Active(file):    8646220 kB
Inactive(file):   805836 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:      32493560 kB
SwapFree:       32493560 kB
Dirty:              1268 kB
Writeback:             0 kB
AnonPages:       4890180 kB
Mapped:            84672 kB
Shmem:               252 kB
Slab:             586084 kB
SReclaimable:     503716 kB
SUnreclaim:        82368 kB
KernelStack:        5176 kB
PageTables:        19684 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    40661988 kB
Committed_AS:    6794180 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      311400 kB
VmallocChunk:   34359419468 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      112640 kB
DirectMap2M:    16664576 kB

TL; DR-これらを並べて比較すると、主な違いは次のとおりです(BADserver-GOODserver):

MemFree       -1070 MB
Cached        -7550 MB
Active        -9155 MB
Active(anon)  -1147 MB
Active(file)  -8009 MB
AnonPages     - 802 MB

他の違いはかなり小さく、期待できる範囲内です(ただし、自分で確認できます)

ご覧のとおり、良好なサーバーでは、すべてのプロセスのすべてのRESおよびSHRメモリの合計は、「使用済み-/ +バッファ/キャッシュ」値のfree -mの出力とほぼ一致しています。期待しますよね?

次に、不良サーバーを見てください。「used-/+ buffers/cache」値に対するfree -mの出力は、予想の約3倍であり、psが表示できるすべてのものを合計します。

これは、/proc/meminfoが教えてくれることとも一致します。

今のところ、それがどのように可能であるのか私にはわかりません。ここで何が起こっているのでしょうか?

9
luxifer

VMwareのメモリバルーニングの問題 があると思います。 vSphereインフラストラクチャ全体でのメモリのオーバーコミットメントが高すぎる可能性があります。 vSphere vCenterにアクセスせずにこれを修正することはできませんが、vmtoolsがインストールされていると仮定すると、仮想マシン内からこれを検出できるはずです。

vmware-toolbox-cmd stat balloonの出力を投稿していただけますか?

また、16 GBのRAMが割り当てられています。問題のVMに手動でRAM制限が設定されている場合は、インフラストラクチャを制御しているだれかに問い合わせてください。

12
ewwhite