ハードウェア割り込み(第1レベル割り込みハンドラ)によってプロセスが中断した場合、CPUスケジューラはそれを認識します中断されたプロセスとは別に割り込み)?Linuxスケジューラはハードウェア割り込みを認識していますか(スケジューラジッタ)
詳細: 私はhtopのでCPU使用率が指定されたパケットの暗号化タスク(最大400Mbpsでパケットを暗号化するときにCPUが< 10%であるための方法が低すぎる問題を解決しようとしています。生の暗号化速度が唯一の1.6Gbpsであります、パケットの暗号化は生の暗号化の速度よりも速くならないはずです)。
説明: 私の仮説は、ハードウェア割り込みでパケットカプセル化が起こるため、htopでのCPU使用率が低いという錯覚を示しています。通常、FLIHはできるだけ早くタスクを終了し、SLIH(ksoftirqd/Xに代わって実行される第2レベルの割り込みハンドラ)に任せるように実装されています。しかし、FLIHが非常に長い時間プロセスを中断した場合はどうなりますか?これはOSジッタを導入しますか?
私はx86-64プラットフォームでUbuntu 10.04.1を使用しています。
追加のデバッグ情報:
while [ 1 ]; do cat /proc/stat | grep "cpu "; sleep 1; done;
cpu 288 1 1677 356408 1145 0 20863 0 0
cpu 288 1 1677 356772 1145 0 20899 0 0
cpu 288 1 1677 357108 1145 0 20968 0 0
cpu 288 1 1677 357392 1145 0 21083 0 0
cpu 288 1 1677 357620 1145 0 21259 0 0
cpu 288 1 1677 357972 1145 0 21310 0 0
cpu 288 1 1677 358289 1145 0 21398 0 0
cpu 288 1 1677 358517 1145 0 21525 0 0
cpu 288 1 1678 358838 1145 0 21652 0 0
cpu 289 1 1678 359141 1145 0 21704 0 0
cpu 289 1 1678 359563 1145 0 21729 0 0
cpu 290 1 1678 359886 1145 0 21758 0 0
cpu 290 1 1678 360296 1145 0 21801 0 0
セブンス(又は第6の番号列)ここで私が推測する列は、(htopのは、統計情報を取得するには、このprocファイルを使用しています)ハードウェア割り込みハンドラ内で費やした時間です。私はこれがLinuxかドライバのバグとして終わるかどうか疑問に思います。これらの/ proc/statスナップショットを取ったとき、トラフィックは500Mbps inと500Mbps outになりました。
これはプログラミングの質問ですか?私はかなり伝えることができない? – Gabe
N.B. 'while [1];は' while:; 'と書かれやすくなります。 – user562374
バーハード読み取り – hirschhornsalz