web-dev-qa-db-ja.com

CONFIG_NO_HZがデフォルトで設定されていない理由

LinuxカーネルではCONFIG_NO_HZが設定されていません。しかし、最初の読みは、そのオプションを設定することは、パフォーマンスの観点からは素晴らしいことだと示唆しています。しかし、いくつか読んだ このような投稿 私はもう一度考えさせられました。

なぜ CONFIG_NO_HZはデフォルトで設定されていないのですか、それとも有効にするとパフォーマンスが向上しないのですか?

5
user3539

パフォーマンスの向上はすべての人に見えるわけではなく、RTカーネルが本当に重要な特定のユーザー:DSP、オーディオ/ビデオ処理など)です。そのため、configオプションは普遍的に有益ではないため、無効になっています。

4
schaiba

ティックは、ハードウェアタイマーによって生成される割り込みであり、CONFIG_HZカーネル構成によって決定される定期的な間隔で発生します。これは、ほとんどのアーキテクチャでは、カーネルのコンパイル時に構成できます。ティック割り込みはCPUごとの割り込みです。 Linux 2.6.21以降、アイドル動的ティック機能は、CONFIG_NO_HZカーネル構成オプションを使用して構成できます。目標は、アイドル状態でのティック割り込みを排除し、より深いスリープモードに入ることができるようにすることでした。これはラップトップにとって重要ですが、サーバールームの電力料金を削減することもできます。 Linux 3.10.0では、CPUで単一のタスクを実行する際のティック割り込みを排除するために、完全な動的ティック機能が導入されました。ここでの目標は、スレッドが邪魔されずに実行されるようにすることで、ハイパフォーマンスコンピューティングとリアルタイムのユースケースをより適切にサポートすることでした。以前の構成CONFIG_NO_HZはCONFIG_NO_HZ_IDLEに名前が変更され、新しい機能は新しい構成オプションCONFIG_NO_HZ_FULLを取得しました。

あなたの質問に対する答えは、CONFIG_NO_HZ(_IDLE)はアイドル状態に出入りするコストを増加させ、アイドル状態のCPUを動作に戻すのにかかる時間をわずかに増加させるということです。このコストは、遅延の影響が非常に大きい環境では過剰と見なされる場合があります。他のすべての人にとって、アイドル状態のCPUのタイマーティックを無効にすることはほぼ間違いなく正しいことです。二重に真実であるバッテリー駆動のシステムのために。

これを確認してください: http://lwn.net/Articles/549580/

5