dmesg でスラブログを調査する
この最後のステップでは、dmesg
コマンドを使用して、カーネルメッセージバッファからスラブアロケータに関連するメッセージをチェックする方法を学びます。カーネルメッセージバッファは、起動時および実行時にカーネルが生成したメッセージを格納します。これらのメッセージには、ハードウェア、デバイスドライバ、およびスラブアロケータなどのカーネルサブシステムに関する情報が含まれることがあります。
dmesg
コマンドは、カーネルリングバッファを表示または制御するために使用されます。このバッファにはカーネルからのメッセージが含まれており、デバッグやトラブルシューティングに役立つことが多いです。
カーネルメッセージバッファ全体を表示するには、単に dmesg
を実行するだけです。
dmesg
ただし、出力は非常に長くなることがあります。スラブアロケータに特に関連するメッセージを見つけるには、dmesg
の出力を grep
コマンドにパイプし、「slab」または「SLUB」(SLUB は最新のスラブアロケータの実装です)などのキーワードを検索することができます。
ターミナルに次のコマンドを入力し、Enter キーを押します。
dmesg | grep -i "slab\|slub"
このコマンドを分解して説明します。
dmesg
:カーネルメッセージバッファを表示します。
|
:これはパイプで、左側のコマンドの出力を右側のコマンドの入力として送ります。
grep
:正規表現に一致する行をプレーンテキストデータセットから検索するコマンドラインユーティリティです。
-i
:このオプションは検索を大文字小文字を区別しないようにします。したがって、「slab」、「SLAB」、「slub」、「SLUB」などに一致します。
"slab\|slub"
:これは検索パターンです。slab
は「slab」という単語を検索し、\|
は OR 演算子として機能し、slub
は「slub」という単語を検索します。
出力には、カーネルメッセージバッファ内の「slab」または「slub」(大文字小文字を区別しない)を含むすべての行が表示されます。起動時のスラブアロケータの初期化に関するメッセージや、問題がある場合の潜在的な警告やエラーが表示されることがあります。
[ 0.000000] kmem_cache_init
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] SLUB: TotalObjects=0, ObjectsPerSpan=0, SpansPerChunk=0
[ 0.000000] SLUB: min_objects.limit=0, min_objects.batchcount=0
[ 0.000000] SLUB: tunables.limit=0, tunables.batchcount=0, tunables.sharedfactor=0
[ 0.000000] SLUB: Not setting slab_nomerge.
[ 0.000000] SLUB: Not setting slab_debug.
[ 0.000000] SLUB: Not setting slab_max_order.
[ 0.000000] SLUB: Not setting slab_alias_debug.
[ 0.000000] SLUB: Not setting slab_pad.
[ 0.000000] SLUB: Not setting slab_red_zone.
[ 0.000000] SLUB: Not setting slab_poison.
[ 0.000000] SLUB: Not setting slab_freelist_debug.
[ 0.000000] SLUB: Not setting slab_freelist_random.
[ 0.000000] SLUB: Not setting slab_freelist_hardened.
[ 0.000000] SLUB: Not setting slab_trace.
[ 0.000000] SLUB: Not setting slab_reclaim_account.
[ 0.000000] SLUB: Not setting slab_way.
[ 0.000000] SLUB: Not setting slab_sizes.
[ 0.000000] SLUB: Not setting slab_caches.
[ 0.000000] SLUB: Not setting slab_test.
[ 0.000000] SLUB: Not setting slab_order.
[ 0.000000] SLUB: Not setting slab_debug_objects.
[ 0.000000] SLUB: Not setting slab_debug_memcg.
[ 0.000000] SLUB: Not setting slab_debug_check_objects.
[ 0.000000] SLUB: Not setting slab_debug_check_freelist.
[ 0.000000] SLUB: Not setting slab_debug_check_alloc.
[ 0.000000] SLUB: Not setting slab_debug_check_free.
[ 0.000000] SLUB: Not setting slab_debug_check_redzone.
[ 0.000000] SLUB: Not setting slab_debug_check_poison.
[ 0.000000] SLUB: Not setting slab_debug_check_trace.
[ 0.000000] SLUB: Not setting slab_debug_check_reclaim_account.
[ 0.000000] SLUB: Not setting slab_debug_check_way.
[ 0.000000] SLUB: Not setting slab_debug_check_sizes.
[ 0.000000] SLUB: Not setting slab_debug_check_caches.
[ 0.000000] SLUB: Not setting slab_debug_check_test.
[ 0.000000] SLUB: Not setting slab_debug_check_order.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_objects.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_memcg.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_objects.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_freelist.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_alloc.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_free.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_redzone.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_poison.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_trace.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_reclaim_account.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_way.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_sizes.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_caches.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_test.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_order.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_debug_objects.
[ 0.000000] SLUB: Not setting slab_debug_check_debug_check_debug_memcg.
このコマンドは、カーネルメッセージをフィルタリングし、特定のカーネルサブシステムのトラブルシューティングに関連する情報を見つける強力な方法です。
これで、スラブ統計を調査し、関連するカーネルパラメータを検証し、スラブ関連のメッセージをカーネルログでチェックする方法を学びました。これらは、Linux でのメモリ使用を理解し診断するための基本的なスキルです。
Continue をクリックしてこの実験を完了します。