web-dev-qa-db-ja.com

低遅延カーネルを使用しないことを選択するのはなぜですか?

Linuxカーネルrtおよびlowlatencyに関する適切な情報が見つかりません。

なぜ誰がnotが低レイテンシのカーネルを使用したいと思うのでしょうか。

また、具体的な違いを誰かが教えてくれるなら、それも素晴らしいことです。

45
Startec

「一般」、「低レイテンシ」(Ubuntuで設定)、RTなどのさまざまな構成はすべて、スループットとレイテンシのバランスをとることを目的としています。一般的なカーネルは、レイテンシよりもスループットを優先し、他のカーネルはスループットよりもレイテンシを優先します。したがって、低レイテンシよりもスループットが必要なユーザーは、低レイテンシカーネルを選択しません。

一般的な構成と比較して、低遅延カーネルは次の設定を変更します。

  • IRQはデフォルトでスレッド化されます。つまり、より多くのIRQ(まだallIRQ)はプリエンプトでき、優先順位を付けてCPUを持つこともできますアフィニティ制御;
  • プリエンプションはカーネル全体で有効です( CONFIG_PREEMPT の代わりに CONFIG_PREEMPT_VOLUNTARY );
  • レイテンシデバッグ ツールが有効になっているため、ユーザーは進行状況をブロックしているカーネル操作を特定できます。
  • タイマーの周波数が 250 Hz ではなく 1000 Hz に設定されている。

RTカーネルは、メインラインカーネルに 多数のパッチ を追加し、さらにいくつかの設定を微調整します。これらのパッチのほとんどの目的は、ロックを削除または分割することにより、プリエンプションの機会を増やし、カーネルが無停電タスクの処理に費やす時間を削減することです(特に、ロギングメカニズムを改善し、使用を減らすことで)。 。これらすべての目標は、カーネルが 締め切りに間に合わせるieが何かを処理する必要がある場合に、それを確実にすることです、他のことをするのに忙しくない。これは、高スループットや低レイテンシと同じではありませんが、レイテンシの問題を修正すると役立ちます。

ほとんどのディストリビューションでデフォルトで設定されている汎用カーネルは、「賢明な」妥協案として設計されています。単一のタスクがシステムを長時間独占できないこと、およびタスクがかなり頻繁に切り替わることを保証しますが、スループットを損なうことはありません。 —カーネルが(カーネルの内部または外部で)タスクを切り替えるか、割り込みを処理するかを検討するのに費やす時間が長いほど、システム全体が「作業」に費やす時間は短くなります。その妥協は、リアルタイムのオーディオやビデオの処理など、レイテンシの影響を受けやすいワークロードには十分ではありません。これらの場合、低レイテンシカーネルは、スループットを犠牲にしてレイテンシを低くします。また、リアルタイム要件の場合、リアルタイムカーネルは、より多くのスループットを犠牲にして、可能な限り多くの低遅延ブロッカーを削除します。

Linuxのメインストリームディストリビューションは主にサーバーにインストールされ、従来はレイテンシはそれほど重要視されていませんでした(ただし、パーセンタイルパフォーマンス分析を行い、上位パーセンタイルパフォーマンスに注意を払うと、同意できない場合があります)。したがって、デフォルトのカーネルはかなり保守的。カーネルのドキュメントで提案されているように、デスクトップユーザーはおそらく低遅延カーネルを使用する必要があります。実際、レイテンシの低いカーネルを使用すればするほど、関連性に関するフィードバックが多くなり、デフォルトのカーネル構成に一般的に適用可能な改善が得られるようになります。同じことがRTカーネルにも当てはまります(RTパッチの多くは、ある時点で、主流のカーネルを対象としています)。

このトピックに関するプレゼンテーション は、かなり多くの背景を提供します。

60
Stephen Kitt

スティーブン・キットは、構成とバランス、そしてすべてのニースを技術的パラメーターで説明しました。私はほんの少し直感的な違いを提供したいと思います:

  • あなたはサファリに乗っており、ジープで地形を走っています。獲物が走っている。獲物が十字線の中にいるとき、トリガーを引いてライフルが発射します-計算は簡単です-十字線の獲物=ヒット、十字線のない獲物=ミス-あなたは必死に必要です低遅延-その後回復します、ライフルをリロードし、別の獲物を見つけてください-余分な速度の必要性、規則性の必要性はありません。 レイテンシがすべてです。

  • あなたはそのサファリからビデオを変換しています。長くて数時間かかります。特定のフレームが処理されるときや、一部のフレームの処理に他のフレームよりも時間がかかるかどうかは関係ありません。できるだけ早くプロセスを完了する必要があります-より良いスループットは時間数が少ないことを意味し、他には何も問題ありません

  • 電信-ショート、ロング、スペースのみ-モールスは解読が簡単で、各Pulseがいつ開始または終了したかを正確に知る必要はありませんが、保証が必要ですミスしていないそれらのいずれか-必要リアルタイム(遅いかもしれませんが、電信はそれほど速くありませんが、それは定期的でなければなりません

この3つの例では、明らかな理由により、latencythroughputまたはregularityのいずれか1つのみを明確に選択し、他の2つを犠牲にします。そして、3つすべてを同時に使用できない場合は、1つだけで低レイテンシが本当に必要です。

22
gilhad

トレードオフがあるからです。プロセスの切り替えや、割り込みの開始/終了には時間がかかります。たとえば、スケジューラを250Hzではなく1000Hzで実行すると、タイマー割り込みが発生し、プロセスを4回頻繁に切り替える可能性があります。これにより、プロセスの実行がより定期的に許可されるため、プロセスの反応が速くなります。ただし、人間としてはおそらく違いに気付かないでしょう(250Hzは4msごとを意味し、人間の反応時間よりもはるかに高速です)。

処理能力またはI/Oスループットの合計量は制限されており、スケジューラを頻繁に呼び出すことは、その一部を無駄にすることになるだけです。

3
Michael

素人の言葉で:

  • PCの作業を定期的に行わない場合は、低遅延カーネルが適しています。
  • PCのCPUを集中的に使用するタスクを常に実行している場合は、汎用カーネルが適しています。
  • PCを閲覧、ビデオ、音楽の再生に使用しているだけなら、低レイテンシが適しています。
  • ゲームをしている場合、低レイテンシとジェネリックの理論的な違いは、低レイテンシが1つを除くすべてのシナリオで勝つということです。レベルの読み込みですが、これはSSDの有無とSSDの品質により大きく依存します。これは、基本的なSSDは1倍の速度で実行されるのに対し、最高のPCI-Express SSDは6倍の速度で実行されるためです。従来のハードドライブは0.1Xの速度です。つまり、SSDは従来のハードドライブより60倍高速です。

基本的に、汎用カーネルはほとんどの作業を最短時間で実行しますが、低レイテンシカーネルはPCの応答性を最も高くします。カーネルまたはシステムでバグが発生していないと仮定します。

ほとんどの人にとって、低遅延カーネルは最も理にかなっています。しかし、PCに常に多くの作業を任せている場合は、汎用カーネルが適しています。

すべてのコアでのCPU負荷の90%が60%未満の場合に別の言い方をすると、低レイテンシカーネルが適しています。一方、すべてのコアのCPU負荷が80%、90%、またはそれ以上の場合、汎用カーネルが適しています。

クイズ:どのカーネルがベンチマークでより良いスコアを出しますか?ベンチマークパラメータとしてレイテンシが無視されている限り、ジェネリックは常に競争に勝ちますが、レイテンシが低いということは、あなたの側でタコを委任する準備ができているようなものです。

0
Thmtrhxsu