背景
linuxのslabキャッシュについての記事
キャッシュメモリとは
そもそものキャッシュとはなんなのかの説明。
キャッシュメモリとは、CPUの処理速度を低下させないために、メインメモリ(主記憶装置)にあるデータをあらかじめ移しておき、
高速でのデータ入出力を可能にするメモリのことである。
引用元:キャッシュメモリ
Linuxキャッシュの仕組み
- キャッシュにはページキャッシュとSlabキャッシュがある
- ページキャッシュは上記のようなディスクの内容を読んだらメモリにキャッシュするというもの
- その中でもSlabキャッシュはディレクトリのメタデータ情報を格納するdentryやファイルのメタデータ情報を格納するinode構造体をキャッシュ
- カーネル領域に存在する
Linuxはキャッシュの仕組みによって効率的にメモリ管理を行うことで、ディスクへのアクセスを減らし、データアクセスを高速化している。これは「ページキャッシュ」と呼ばれる仕組みで実現している。
このページの単位の多くは4KBとなっている。(過去に1度だけ64kbをみたことあるけどそれ以外は4kb以外みたことない)
slabtop
slabキャッシュ自体はslabtopコマンドで確認が可能です。
slabtop - リアルタイムにカーネル slab キャッシュ情報を表示する
書式
slabtop [ options ]
説明
slabtop (1) はリアルタイムに詳細なカーネル slab キャッシュ情報を表示する。 キャッシュ情報の上位を、ソート基準に挙げられている 基準のいずれかでソートして、リストで表示する。 また slab レイヤ情報が書かれた統計情報ヘッダも表示する。
オプション
通常は slabtop (1) の起動にオプションは必要ない。 しかし以下のオプションを 1 つ以上指定することで、動作を微調整できる。
--delay=n, -d n
n 秒毎に表示を更新する。 デフォルトでは slabtop (1) は 3 秒毎に表示を更新する。 プログラムを終了するには q を入力すること。
--sort=S, -s S
S でソートする。ここで S はいずれかのソート基準である。
--once, -o
出力を 1 回表示して終了する。
--version, -V
バージョン情報を表示して終了する。
--help
使用法の情報を表示して終了する。
ソート基準
以下は各 slab キャッシュのソートに使用できる有効なソート基準であり、 表示する「上位 (top)」の slab キャッシュがどれであるかを決定する。 デフォルトのソート基準はオブジェクト数によるソート ("o") である。
slabtop の実行中に対応する文字を押すことにより、 ソート基準を変更することができる。
a:
アクティブなオブジェクト数でソートする。
b:
slab 毎のオブジェクト数でソートする。
c:
キャッシュサイズでソートする。
l:
slab 数でソートする。
v
アクティブな slab 数でソートする。
n:
名前でソートする。
o:
オブジェクト数でソートする。
p:
slab 毎のページ数でソートする。
s:
オブジェクトサイズでソートする。
u:
キャッシュ利用率でソートする。
項目については以下です
slab_cache
スラブアロケータで使用されている物理メモリの総容量
cache
ファイルデータのキャッシュなどに使用している物理メモリの総容量。共有メモリは Cached に加算される。 SwapCached は含まない
cache-(SwapCache+buffers)
buffers
ファイルなどのメタデータとして使用している物理メモリの総容量
committed
全プロセスによって確保された仮想メモリの総容量。
active
最近アクセスした物理メモリの容量
inactive
最近アクセスしていない解放してよい物理メモリの容量