スラブは使用可能な128Gbのうち88Gbを使用します。何が原因でしょうか?


8

128 Gbのサーバーでdebian 2.6.26-2-amd64 x86_64 GNU / Linuxを実行しています。最近、利用可能なメモリがかなり少なくなりました。/ proc / meminfoを見ると、スラブが88Gbを使用していることがわかりました。

  1. これは問題ですか?必要なときにメモリが解放されると思いますが、それが望ましくない副作用を引き起こす可能性があるかどうかはわかりません。
  2. なぜスラブはそれほど多くのメモリを必要とするのでしょうか?その明確な原因はありますか?
  3. これが将来起こるのを避けることができますか?
  4. このメモリをどのように解放できますか?

前もって感謝します

> cat /proc/meminfo
MemTotal:     132304500 kB
MemFree:      26669388 kB
Buffers:        237504 kB
Cached:       11881136 kB
SwapCached:         48 kB
Active:        5244640 kB
Inactive:     11714308 kB
SwapTotal:     5751228 kB
SwapFree:      5750436 kB
Dirty:              24 kB
Writeback:           0 kB
AnonPages:     4840256 kB
Mapped:         163968 kB
Slab:         88314840 kB
SReclaimable: 88275644 kB
SUnreclaim:      39196 kB
PageTables:      80852 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
WritebackTmp:        0 kB
CommitLimit:  71903476 kB
Committed_AS:  6818332 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    505724 kB
VmallocChunk: 34359231963 kB

回答:


5

これが実際の問題であると確信していますか?使用されているRAMは使用できない RAMと同じではありません(つまり、free / buffers / cacheに関するこのServerFaultの質問を参照してください)。

スラブは特定のものではなく、カーネル内のメモリアロケータの1つです。特に、スラブはカーネルがページサイズではないオブジェクトを管理できるようにします(/ proc / slabinfoとslabtopで指摘されているように、現在保持しているもの)。スラブに関するいくつかの背景はここにあります

スラブの下にSReclaimableが表示されている場合、スラブによって割り当てられたほとんどすべてのメモリは、必要なときに/必要に応じて再利用できると考えています。だから、はい、必要なときにメモリが解放されます。再利用に付随する費用は、CPUサイクルでの簿記費用の据え置きです。

スラブが厳密にそのすべてのメモリを必要とするかどうかはわかりませんが、多くの場合、初期化されたオブジェクトを後で使用するために保持します(初期化を保存します)、そのいくつかはさまざまなキャッシュです。ファイルシステムキャッシュの数は膨大です)。

vmmの動作を制御したい場合は、/ proc / sys / vmをチェックアウトしてください。特にmin_slab_ratioが興味深いかもしれません。/ proc / slabinfoを使用して個々のスラブキャッシュを制限することもできます(詳細については、ibm developerworksの記事を参照してください)。ただし、vmmとスラブをオンにする前に、実際に何を実行したいのかを理解し、vmmと、ワークロードに合わせてそれをどのように調整できるかについて調査します。vmmチューニングノブをいじって、システムを微妙に、そして見事に破壊することは十分に可能です。


詳細な応答とリンクをありがとう
Joris Meys

1
IBM developerworksリンクはもう機能しません。
Ikke

11

slabtop表示カーネルスラブキャッシュ情報を使用します。

slabtop

また、「vmstat -m」を参照してください。

vmstat  -m

/ proc / slabinfoを見てください:

cat /proc/slabinfo

キャッシュを削除してメモリを解放する

sync; echo 3 > /proc/sys/vm/drop_caches

コマンドのthxを使用すると、実際に少し簡単になります。
Joris Meys、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.