簡単な実験では、NOHZ=OFF
を設定し、printk
を使用してdo_timer
関数が呼び出される頻度を出力しました。私のマシンで10ミリ秒ごとに呼び出されます。NOHZ = OnがLinuxカーネルのdo_timerにどのように影響するか
しかし、NOHZ=ON
の場合、do_timer
が呼び出されるとジッタが大きくなります。ほとんどの場合、10ミリ秒ごとに呼び出されますが、期限が完全に間に合わないことがあります。
私はdo_timer
とNOHZの両方について調査しました。 do_timer
は、jiffies
の値を更新する機能であり、プロセスのラウンドロビンスケジューリングも担当します。
NOHZ機能は、システムの高解像度タイマをオフに切り替えます。
私が理解できないことは、高齢者のタイマーがdo_timer
にどのように影響するのでしょうか?高解像度ハードウェアがスリープ状態にあっても、持続クロックは、do_timer
を10ミリ秒ごとに実行する能力以上です。第二に、do_timer
が実行する必要があるときに実行されていない場合、理想的にはそれを取得しなければならないときに、プロセスによってはタイムシェアが得られないということです。たくさんのグーグルが、多くの人々にとって、NOHZ=OFF
の場合、多くのアプリケーションがはるかに優れた作業を開始することを示しています。
短いストーリーを作るには、NOHZ=ON
はどのようにdo_timer
に影響しますか?
do_timer
は期限が間に合わないのはなぜですか?
を測定するために実施され
NOHZ
機能のために追加された新機能を理解してみてください。私はNOHZがタイマーを使用するだけなので、do_timerは何らかの影響を受けていないという印象を受けました(do_timerはNOHZスイッチの影響を受けない永続的なクロックによって発生したと思いました)。 –
'NOHZ'は、CPUがアイドル状態のときにのみ起動するため、つまり*スケジューリング可能なプロセスがないときに、プロセスのスケジューリング頻度を低くしません。 – caf
@cafポインタcafに感謝します。あなたのコメントで私の答えを更新しました:) 'NOHZ'がプロセススケジューリングに影響を与えない場合、' NOHZ = OFF'のときにパフォーマンス(システムフリーズなど)が改善するのはなぜですか?私はこれがフォーラムであると不平を言う多くの人々を見てきました。 –