web-dev-qa-db-ja.com

ティックレスで高解像度のタイマーがある場合、1000 HZ Linuxカーネルが必要ですか?

サーバーのパフォーマンスを改善しようとしています。低ジッター(10ms未満の変動)を必要とするいくつかのプロセスがあります。

I7-920の最大負荷は4つです(4つの物理コア、8つはHTを使用)。コアユーザーモードの40%から90%に及ぶ約10のプロセスがあります。システム使用率は合計3%です。合計CPU使用率は最大80%です。

ティックレスで高解像度のタイマーがすでに設定されている場合、カーネルを100hzから1000hzに設定するとジッターが改善されますか?

このページは、まだ何かをしていることを示しているようです。 https://lkml.org/lkml/2009/4/28/401

自発的(PREEMPT_VOLUNTARY)からプリエンプティブル(PREEMPT)に変更してみませんか?

13
Bob

サーバーのパフォーマンスを改善しようとしています。低ジッター(10ms未満の変動)を必要とするいくつかのプロセスがあります。

リアルタイムを使用してもパフォーマンスは向上しません。システム全体がスムーズになりますが、実際には少し遅くなります。つまり、スループットとレイテンシの関係です。それが本当に必要なものであれば、いくつかのオプションがあります:

  • 300 Hzまたは1KHzのPREEMPTを使用し、ティックレスを使用しない
  • Niceschedtoolを使用して、ニーズに応じて適切な優先度/クラスを割り当てます
  • [〜#〜] rt [〜#〜] または [〜#〜] bfs [〜#〜] を試してみてください
4
poige

1)ticklessを使用しないでください。これは依然として非常に実験的なものであり、開発者以外には推奨されません。これは、省電力にも役立ちます。

2)完全に可換可能なシステムは、desktorの応答性を向上させることになっていますが、自発的なプリエンプティブは一般的な用途(応答性とスループットの混合)です。サーバーがSMP(マルチコア)を使用している場合、ほとんどの作業はコアで割り込みなしで実行されるため、おそらくプリエンプティブルではないはずです。通常、1)時間がかかります2)ゴミ箱のキャッシュ

3)1000Hzはオーバーヘッドを導入するデスクトップ値ですが、たとえばゲームやものをプレイすることができます。 300 Hzはビデオに推奨される値です(これにより、スケジュールが変更されてもフレームが失われることはありません)。100Hzは、最高のスループットを提供します(ただし、低遅延ネットワークのものには対応していません)。

(RTパッチを使用せずに)できるだけ安定したい場合は、次のようにしてください:定期的なティック(安定性)プリエンプティブでない(安定性)タイマーの頻度(最大1000最高の応答性と低レイテンシの場合は100、最高のスループットは100ですがタイマーの分解能は10msです。たとえば、ものは少なくとも10ms実行されます)

これが多少役に立てば幸いです。

3
pruzinat

低ジッタが重要な場合は、はい、1000hzとPREEMPTの両方を使用することをお勧めします。

これらのプロセスが本当に時間に敏感であると考えられる場合、おそらくよりリアルタイム指向のパッチ/カーネル、または少なくともrtprioのようないくつかのプロセスレベルのスケジューリングパラメーターが必要になります。

一般的な用途はオーディオサーバーです。たとえば jackaudio からのアドバイスを参照してください

3
koollman