一部のプロセスは、ほとんどの「生存」期間をsleep
ステータスで費やしています。デーモン、サーバー、一般的なリスナーが思い浮かびます。彼らがその状態で同じCPU時間を取得するかどうか疑問に思っていましたか?私のラップトップのようなものでは、それはあまり最適ではありません!
私のオペレーティングシステムコースでは、スケジューリングにはさまざまなアプローチがあることを漠然と覚えています。私の現在のLinux(Debian)ボックスについてもっと知りたいです。
現在のスケジュールポリシーを確認するにはどうすればよいですか?動的に変更できますか?きれいなユーザーランドアプリをお持ちですか?
プロセスは、スリープしている間はCPUリソースを消費しません。カーネルがそれらを調整しなければならないので、それらはいくらかのオーバーヘッドを追加するかもしれませんが、それは非常に重要ではありません。
ただし、質問の言い方が原因で、LinuxのCFS(Completely Fair Scheduler)を使用すると、プログラムがCPU時間をスリープ時間に比例して増加させようとすること、つまり、プロセスが多くスリープする場合に言及する必要があります、再開すると優先度が高くなります。
CFSの説明については、 http://www.ibm.com/developerworks/linux/library/l-completely-fair-scheduler/ を参照してください。
定義上、スリープ状態のプロセスはCPUで実行されていないため、CPUが使用しているCPU時間は明らかにゼロです。