差分

移動先: 案内検索

Chrt

1,843 バイト追加, 2018年10月24日 (水) 13:49
/* プロセスのスケジュリング種類を変更するコマンド */
ps IDL 0 19
</pre>
 
 
== soft lockup ==
 
マルチ・コアのCPUチップを使っているハードウェア環境でリアルタイムのSCHED_FIFOでプログラムを動かしている時、特定のプロセスをCPUコアに割り当てたまま、ずっと処理し続けるような条件になる時があります。
他のプロセスは空いている他のCPUコアを使うので十分処理ができ、一方でSCHED_FIFOとして稼働中のプロセスが特定のCPUを占有してしまっているようなケースです。
このようなとき、システム的には問題がないのですが、(デフォルト)ではカーネルが1つのプロセスがCPUを占有していることに対して警告を出します。
 
/var/log/messages に次のようなメッセージが大量に現れてシステム全体のパフォーマンスが落ちてしまう場合もあります。
 
<pre class="bash">
% sudo grep 'soft lockup' /var/log/messages
... kernel: BUG: soft lockup - CPU#0 stuck for 10s! [myprog:3821]
</pre>
 
これはカーネルがCONFIG_LOCKUP_DETECTORのオプションをつけたまま実行しているからです。
システム的に問題がないがなく、しかしながらsoft lockupのメッセージが大量に出てしまうためにトラブルになっている場合に限りますが、このオプションを切ってしまうことで少なくともシステムの警告はログファイルに出力されなくなります。
これは/boot/config-(カーネル番号)-xxx というカーネルのコンフィグレーションファイルの中にあるCONFIG_LOCKUP_DETECTORをオフすることで解決できます。
具体的な手順は書きませんが、このオプションをオフにしてカーネルのイメージを再構成すればメッセージは出なくなります。
----