一般的なリアルタイムカーネルよりも低レイテンシカーネルを選択する理由


105

Ubuntu Studio 12.04をインストールした後、低遅延カーネルを使用していることがわかりました。リアルタイムまたは汎用に戻す理由と方法を検索しました。しかし、Linuxのこの部分はあまりカバーされていないようです。

Q:汎用またはリアルタイムのカーネルよりも低レイテンシのカーネルを選択する理由は何ですか?

PS:私はすでにこの質問とこの投稿からの答えを読んでいます。


3
誰もが困惑している場合、それはかなり良い質問でなければならないため、+ 1 私はまだ、低レイテンシ、ジェネリック、リアルタイムのカーネルの違いを知りません。場合は-realtime、リアルタイムで、そして何がない-rtために立ちますか?そして、-preemptカーネルはどうなっていますか?gemue2010に感謝します。彼はそれを説明するのにかなり良い仕事をしましたが、それでもすべてを説明しているわけではありません。
Hitechcomputergeek

回答:


61

これらは、どのカーネルをどの順序で使用するかを理解しやすくするために提供された、いくつかの簡単なガイドラインです。ユースケースに合わせてテストする必要があります。

  • システムの低レイテンシを必要としない場合は、-genericカーネルを使用してください。
  • 低遅延システムが必要な場合(オーディオの録音など)、最初の選択肢として-preemptカーネルを使用してください。これにより待ち時間は短縮されますが、省電力機能は犠牲になりません。64ビットシステム(amd64とも呼ばれます)でのみ使用できます。
  • -preemptカーネルがニーズに対して十分な低レイテンシを提供しない場合(または32ビットシステムを使用している場合)、-lowlatencyカーネルを試してください。
  • -lowlatencyカーネルでは不十分な場合は、-rtカーネルを試してください
  • -rtカーネルが十分に安定していない場合は、-realtimeカーネルを試してください

Ubuntuヘルプソース

ですから、スタジオディストロで何をするかによって異なります。一般的な高速エンドユーザー応答時間を必要とするほとんどのユーザーにとっては問題ありません。単純なフレームのドロップでさえ受け入れられないプロフェッショナルなビデオ編集が必要な場合は、リアルタイムカーネルが必要です。

より包括的でわかりやすいブログ投稿については、このリンクを読んでください


1
私はすでにあなたが投稿した前の記事を読みました。2番目については、それらの事実の信頼性はどれくらいですか?
スタークス

そこに言及されているテストは、それ自体で話しています。Ubuntuチームが最初にLatencyを選択した場合、それが理由であるに違いありません。だからあなたは違いを知りたいと思ったのです。問題が解決しました ?
Ubuntuのファン

5
いいえ。問題が解決したとは思いません。あなたの答えが何かをするなら、それは私の好奇心をさらに高めます。
スタークス

9
これは2015年でもまだ当てはまりますか?-preempt-rt、および-realtimeカーネルには、もはや存在しない
naught101

51

私はubuntuファンによってリンクされたブログ投稿の著者です:http ://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

そのブログ投稿は事実を提示しておらず、理論にすぎません。それは実際に動作する方法です。プロセッサは、頻繁に「停止」して、すぐに注意が必要なプロセスがあるかどうかを確認します。つまり、これらのプロセスは他のプロセスよりも先に実行されるため、エンコード時にフレームをスキップしたり、マウスをクリックしてから敵が死亡するまでの間に大きな遅延時間が生じたりすることはありません。それは、すべてのプロセスがより早く終了するという意味ではありません。実際、CPUは、次に実行されるプロセスを決定し、コンテキストスイッチを実行する時間の大部分を失います。そのため、合計実行時間は長くなります。そのため、Webサーバーまたはデータベースマシンでプリエンプティブカーネルを実行する人はいません。ただし、ゲームサーバーにはプリエンプティブな300Hz(または1000Hz)カーネルが最適です。

しかし、今日のプロセッサには多くのコアがあるため、注意が必要なプロセスがほとんどない場合、コアが使用されるのを待つのではなく、別のコアに簡単に割り当てることができます。

(stackexchangeには、参照/個人的な経験が必要です:私は電子エンジニアであり、http: //www.gamezoo.itで複数のゲームサーバーを管理している血に飢えたnoobgamer です)。

だから、経験則として、あなたのプロセッサが強力な数値演算の高周波クアッドコアであり、エンコード/デコード/ゲーム中に大量のウェブページを開かないのであれば(ハァッ)汎用(またはi686、または存在する場合はamd64)カーネルを試してみて、可能な限り最高のスループット(つまり、プロセッサが実行できる生の数値演算)を使用してください。問題が発生する場合(実際にはマイナーなはずです)、またはマシンの性能が市場のトップよりもわずかに低い場合は、-preemptを使用してください。

コアが1つまたは2つしかないローエンドマシンを使用している場合は、-lowlatencyを試してください。-realtimeを試すこともできますが、「リアルタイム」プロセスが終了するまでプロセスをブロックする傾向があることがわかります。リアルタイムカーネルは「バニラ」カーネルではなく、CONFIG_PREEMPT_RTパッチが適用されていると思います。リアルタイムカーネルは、組み込みシステム上で単一のアプリケーションを構築する必要がある人のみを対象とするため、通常はかなりの数のアプリケーションを同時に実行するため、通常のデスクトップユーザーには本当のメリットはありません。

最後に、低遅延デスクトップを使用するためにカーネルを自分で再コンパイルする場合の最も関連性の高いカーネルオプションは次のとおりです。

PREEMPT=y

そして:

CONFIG_1000_HZ=y

いくつかの省電力を追加するには、これを確認できます:

CONFIG_NO_HZ=y

サーバーのメンテナンスについて言及していることに気付きました。バルブソース専用サーバー(特にCSGO)に最適なカーネルを見つけようとしています。私が見つけるほとんどのCSスレッドは1000Hzカーネルを必要とするgoldsrcに関連しています。srcdsの場合、低遅延は悪いですか?それが問題にならないなら、私はそれが私が今持っているものであるので、単に低遅延に固執します(とにかくマルチスレッドの恩恵を受けないので、128ティックsrcdsサーバーのCPUコアを分離します)。
ヴァンサンデスメット14

3つのヒントを知るのに役立ちますが、私は完全に先制に変更します。そんなに急いでいるわけではないので、カーネルを汚い海賊のように振る舞わせたいです。
userDepth

4

上記のドキュメント(http://www.versalogic.com/mediacenter/whitepapers/wp_linux_rt.asp)から

  1. ソフトリアルタイムシステムでは、平均待ち時間は短縮されますが、最大応答時間は保証されません。
  2. ハードリアルタイムシステムは、最悪のシステム負荷がかかった場合でも、希望する期限(100%)を常に満たします。
  3. Yaghmour [4]によると、「リアルタイムは生の速度ではなく保証を扱う」。

この記事では、ハードリアルタイムカーネルのレスポンシブレスまたは時間制限が最も重要なプロパティであるため、遅延につながる非クリティカルなアクティビティを遅延させる場合がありますが、低レイテンシまたは他のソフトリアルタイムカーネルでは、ほとんどの場合に役立つ一般的なレイテンシを削減しようとします。待ち時間が短縮されたため、システムは高速に見えます。記事を注意深く読んでください。


それは本当ですが、どのカーネルバリアントがどのリアルタイムシステムの「硬さ」に一致するかを知る必要があります。
メレビウス

0

1600MHzのデュアルAMD A6-4400Mを搭載したこの古いノートパソコンは、主にメールを読んだり、カジュアルなWebサイトを閲覧したりするために、外出中は控えめに使用しています。おそらくソフトウェアの更新に関連する何かがあり、それが応答しなくなりました。最初の文字を表示せずに12文字入力するようなものです。多くの場合、ウィジェットはプロセスを強制終了する必要があるかどうかを尋ねます。

sudo apt-get install linux-lowlatency再起動後、スムーズで応答性が向上しました。(uname -r 5.0.0-20-lowlatency。)素晴らしい、私は数年前に切り替えるべきだった。Sevenの答えを強調しましょう:数値演算サーバーから最大値を絞り出したくない場合は、-preemptを使用してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.