サーバーのパフォーマンスを改善しようとしています。低ジッター(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)に変更してみませんか?
サーバーのパフォーマンスを改善しようとしています。低ジッター(10ms未満の変動)を必要とするいくつかのプロセスがあります。
リアルタイムを使用してもパフォーマンスは向上しません。システム全体がスムーズになりますが、実際には少し遅くなります。つまり、スループットとレイテンシの関係です。それが本当に必要なものであれば、いくつかのオプションがあります:
Nice
、schedtool
を使用して、ニーズに応じて適切な優先度/クラスを割り当てます1)ticklessを使用しないでください。これは依然として非常に実験的なものであり、開発者以外には推奨されません。これは、省電力にも役立ちます。
2)完全に可換可能なシステムは、desktorの応答性を向上させることになっていますが、自発的なプリエンプティブは一般的な用途(応答性とスループットの混合)です。サーバーがSMP(マルチコア)を使用している場合、ほとんどの作業はコアで割り込みなしで実行されるため、おそらくプリエンプティブルではないはずです。通常、1)時間がかかります2)ゴミ箱のキャッシュ
3)1000Hzはオーバーヘッドを導入するデスクトップ値ですが、たとえばゲームやものをプレイすることができます。 300 Hzはビデオに推奨される値です(これにより、スケジュールが変更されてもフレームが失われることはありません)。100Hzは、最高のスループットを提供します(ただし、低遅延ネットワークのものには対応していません)。
(RTパッチを使用せずに)できるだけ安定したい場合は、次のようにしてください:定期的なティック(安定性)プリエンプティブでない(安定性)タイマーの頻度(最大1000最高の応答性と低レイテンシの場合は100、最高のスループットは100ですがタイマーの分解能は10msです。たとえば、ものは少なくとも10ms実行されます)
これが多少役に立てば幸いです。
低ジッタが重要な場合は、はい、1000hzとPREEMPTの両方を使用することをお勧めします。
これらのプロセスが本当に時間に敏感であると考えられる場合、おそらくよりリアルタイム指向のパッチ/カーネル、または少なくともrtprioのようないくつかのプロセスレベルのスケジューリングパラメーターが必要になります。
一般的な用途はオーディオサーバーです。たとえば jackaudio からのアドバイスを参照してください