web-dev-qa-db-ja.com

スリープ状態のプロセスは同じCPU時間を取得しますか?

一部のプロセスは、ほとんどの「生存」期間をsleepステータスで費やしています。デーモン、サーバー、一般的なリスナーが思い浮かびます。彼らがその状態で同じCPU時間を取得するかどうか疑問に思っていましたか?私のラップトップのようなものでは、それはあまり最適ではありません!

私のオペレーティングシステムコースでは、スケジューリングにはさまざまなアプローチがあることを漠然と覚えています。私の現在のLinux(Debian)ボックスについてもっと知りたいです。

現在のスケジュールポリシーを確認するにはどうすればよいですか?動的に変更できますか?きれいなユーザーランドアプリをお持ちですか?

11
rahmu

プロセスは、スリープしている間はCPUリソースを消費しません。カーネルがそれらを調整しなければならないので、それらはいくらかのオーバーヘッドを追加するかもしれませんが、それは非常に重要ではありません。

ただし、質問の言い方が原因で、LinuxのCFS(Completely Fair Scheduler)を使用すると、プログラムがCPU時間をスリープ時間に比例して増加させようとすること、つまり、プロセスが多くスリープする場合に言及する必要があります、再開すると優先度が高くなります。

CFSの説明については、 http://www.ibm.com/developerworks/linux/library/l-completely-fair-scheduler/ を参照してください。

15
Shawn J. Goff

定義上、スリープ状態のプロセスはCPUで実行されていないため、CPUが使用しているCPU時間は明らかにゼロです。

4
psusi