2011-01-20 13 views
4

ハードウェア割り込み(第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になりました。

+0

これはプログラミングの質問ですか?私はかなり伝えることができない? – Gabe

+0

N.B. 'while [1];は' while:; 'と書かれやすくなります。 – user562374

+0

バーハード読み取り – hirschhornsalz

答えて

1

割り込みハンドラで費やされた時間が考慮されます。

htopは、 "si"(ソフト割り込み)と "hi"(ハード割り込み)で表示します。 niは素敵で、waはio-waitです。

編集:男性PROCから :

6列目のハードウェアIRQの時間である

7列目はのsoftirq

8であるが

nienthがゲストの時間である時間を盗まれました。

後者の2つは、仮想化システムでのみ意味があります。

CONFIG_IRQ_TIME_ACCOUNTING(プロセッサタイプと機能/細粒度のタスクレベルIRQ時間アカウンティング)オプションでカーネルを構築していますか?

+0

私が指定した生の暗号化速度は、バイトではなく、バイトであり、それらは間違いなく正しいです(CPUはQ6600、暗号はaes-128です)。プロセスの横にハードウェア割り込みを表示するツールはありますか? Powertopはそのようなツールのように見えますが、ハードウェア割り込みハンドラの中で費やす時間はわかりませんが、どれくらいの頻度で起動するのかはわかります。そして、パケットカプセル化の最中の%idは〜95%に近いため、何かが正しく説明されていません... –

+0

これは非常に近いヒントを提供したようです。毎秒掛かったcat/proc/statの出力を添付しました。 –

+0

いいえ私はCONFIG_IRQ_TIME_ACCOUNTINGを持っていません。私はUbuntuサーバカーネルを使用していますが。 –

関連する問題