dmesg でスケジューラのログを調査する
この最後のステップでは、dmesg
コマンドを使用して、スケジューラに関連するカーネルメッセージを確認します。dmesg
は、カーネルのリングバッファメッセージを表示するコマンドです。これらのメッセージは、システムの起動時と実行時にカーネルによって生成され、ハードウェア、ドライバ、およびシステムイベント(スケジューラの活動を含む)に関する貴重な情報を含むことがあります。
sysctl
と /proc/sys
は現在の設定を表示しますが、dmesg
はスケジューラの初期化や重要なイベントに関連するメッセージを表示することがあります。
カーネルメッセージを表示するには、以下のコマンドを入力します。
dmesg
これは、システム起動以来のすべてのカーネルメッセージを表示するため、非常に長い出力が表示される可能性があります。具体的にスケジューラに関連するメッセージを見つけるには、grep
コマンドを使用して出力をフィルタリングできます。「sched」という単語を含む行を検索します。
以下のコマンドを入力します。
dmesg | grep sched
|
記号はパイプと呼ばれます。これは左側のコマンド (dmesg
) の出力を受け取り、それを右側のコマンド (grep sched
) の入力として送ります。grep sched
は、受け取った入力の中から「sched」を含む行を検索します。
システム起動時のスケジューラに関連するメッセージが表示される、次のような出力が表示されるかもしれません。
[ 0.000000] Linux version ... (gcc version ...) #... SMP ...
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-... root=... ro quiet splash vt.handoff=...
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-... root=... ro quiet splash vt.handoff=...
[ 0.000000] PID scheduler: ...
[ 0.000000] Mount-cache hash table entries: ... (order: ..., 65536 bytes, linear)
[ 0.000000] Mountpoint-cache hash table entries: ... (order: ..., 65536 bytes, linear)
[ 0.000000] CPU: Testing write buffer coherency: ...
[ 0.000000] smpboot: CPU0: ...
[ 0.000000] setup_percpu: System has ... CPUs.
[ 0.000000] percpu: Embedded ... pages/cpu s...
[ 0.000000] pcpu: PCPU: ...
[ 0.000000] Built 1-level schedule group tree
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is ...
[ 0.000000] rcu: Adjusting scheduler-enlistment delay with ...
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=... to nr_cpu_ids=...
[ 0.000000] rcu: rcu_sched detected stalls on CPUs/tasks:
...
再び、正確な出力は異なる場合があります。このコマンドは、問題の診断や、カーネルによるスケジューラの初期化方法の理解に役立ちます。
これで、Linux カーネルスケジューラに関する情報を取得する 3 つの異なる方法を学びました。現在のパラメータには sysctl
を使用し、/proc/sys/kernel/
内のファイルを調査し、dmesg
でカーネルメッセージを確認します。
Continue をクリックしてこの実験を完了します。