kazmax - Linux で自宅サーバー

slabinfo - ファイルのフォーマットと規約の説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 可用性
  5. ファイル

名前

/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>