ソケットでブロックされているプロセスがあります。ソケットで入力が利用可能になると、プロセスは入力をデコードし、ほとんどの場合、メモリ内構造を更新するだけです。より複雑な分析がトリガーされるような入力が定期的に行われ、最終的には別の接続でメッセージが送信されます。この後者の場合の遅延を最小限に抑えたい、つまり、受信と送信の間の時間を最小限に抑えたいと考えています。私が気付いたのは、興味深いイベント間の時間が増加すると、レイテンシーの数値が 2 倍悪化することです。これは何が原因で、どうすれば改善できますか? プロセス用に CPU を予約しようとしましたが、あまり改善が見られません。
質問する
76 次
1 に答える
0
プロセスを負の値に "ナイス" するようにしてください。Linux スケジューラについて詳しくは知りませんが、通常のポリシーでは、プロセスがそのスライスの使用に失敗した場合にタイム スライス (場合によってはクォンタム) を減らします。逆の場合も同様です。これは、マルチレベル フィードバック ポリシーと呼ばれます。あなたの場合、迅速に処理される一連のイベントを取得すると、おそらくプロセスに非常に短いタイムスライスが与えられます。「重要な」イベントが発生すると、いくつかのコンテキスト スワップを介して、より長いスライスまで処理する必要があります。"nice" 値を十分に高く設定すると、必要なタイム スライスが得られる可能性があります。
残念ながら、ほとんどのシステムでは、「ネガティブ ナイスネス」にはスーパーユーザー権限が必要です。
于 2013-10-30T02:32:06.580 に答える