slabinfo - ファイルのフォーマットと規約の説明 - Linux コマンド集 一覧表
名前
/proc/slabinfo - カーネル slab アロケータの統計
書式
cat /proc/slabinfo
説明
Linux カーネルの内部で良く利用されるオブジェクト (バッファヘッド、i-ノード、ディレクトリ・エントリなど) は、それぞれ自分用のキャッシュを備えている。ファイル /proc/slabinfo はこれらの統計を与える。例を示す。
% cat /proc/slabinfo slabinfo - version: 1.1 kmem_cache 60 78 100 2 2 1 blkdev_requests 5120 5120 96 128 128 1 mnt_cache 20 40 96 1 1 1 inode_cache 7005 14792 480 1598 1849 1 dentry_cache 5469 5880 128 183 196 1 filp 726 760 96 19 19 1 buffer_head 67131 71240 96 1776 1781 1 vm_area_struct 1204 1652 64 23 28 1 ... size-8192 1 17 8192 1 17 2 size-4096 41 73 4096 41 73 1 ...
それぞれの slab キャッシュごとに、キャッシュの名前、
現在アクティブなオブジェクトの数、利用可能なオブジェクトの総数、
各オブジェクトのサイズ (バイト単位)、少なくとも一つのアクティブな
オブジェクトを有するページの数、アロケートされたページの総数、
slab あたりのページ数、が与えられている。
なお、
オブジェクトのアラインメントと slab キャッシュのオーバーヘッドとにより、
オブジェクトは通常ページの内部にきっちりとは収められていない。
利用中のオブジェクトをひとつでも保持しているページは、
利用中であるとみなされ、解放できない。
slab キャッシュ統計の機能を有効にしてコンパイルされたカーネルでは、
出力の最初の行に "(statistics)" と表示され、 5 つのカラムが追加される。
それぞれ、アクティブなオブジェクトの瞬間最大値、
オブジェクトがアロケートされた回数、
キャッシュの大きさが拡張された
(新しいページがこのキャッシュに追加された) 回数、
キャッシュの大きさが縮小された
(使っていないページがこのキャッシュから削除された) 回数、
新たなページをこのキャッシュにアロケートする際に起きたエラーの回数、である。
slab キャッシュ統計が使えないカーネルでは、これらのカラムは表示されない。
SMP システムでは、出力の最初の行に "(SMP)" と表示され、
各 slab ごとに 2 つのカラムが追加される。
これらは各 CPU が持つローカルなキャッシュ (per-CPU キャッシュ) の
slab アロケーションポリシーを表示する
(per-CPU キャッシュは、
オブジェクトをキャッシュからアロケートする際に
CPU 間での同期を減少させるために設けられている)。
最初のカラムは per-CPU 制限、
すなわち各 CPU ごとにキャッシュできるオブジェクトの最大数である。
二番目のカラムはバッチカウント、
すなわち per-CPU キャッシュが空だったり一杯だったりした場合に、
グローバルなキャッシュと受け渡しできるフリーなオブジェクトの最大数である。
slab キャッシュ統計と SMP が両方有効になっている場合は、
per-CPU キャッシュの統計を表示する 4 つのカラムがさらに追加される。
最初の 2 つは per-CPU キャッシュの
アロケーションヒットカウントとアロケーションミスカウントである。
すなわち、あるオブジェクトをアロケートしたときに、
それが per-CPU キャッシュの内部に あった/なかった 回数である。
続く 2 つは、per-CPU キャッシュのフリーヒットカウントとミスカウントである。
すなわち解放されたオブジェクトをグローバルなキャッシュにフラッシュする前に、
per-CPU キャッシュの制限の範囲に 収まった/収まらなかった 回数である。
SMP において per-CPU slab キャッシュの制限値や
バッチカウントを変更するには、以下のようにすればよい:
echo "cache_name limit batchcount" > /proc/slabinfo
可用性
/proc/slabinfo は Linux 2.1.23 以降に存在する。 SMP における CPU ごとのキャッシュは Linux 2.4.0-test3 以降に存在する。
ファイル
<linux/slab.h>