☆Linux カーネルの仕組みを勉強するスレ☆
■ このスレッドは過去ログ倉庫に格納されています
0185login:Penguin
01/11/14 19:55ID:IRaPmSaY> と思うわけ。
I/O バウンドなプロセスを優先して動かすと、バランスよく動くようになるん
だよ。I/O バウンドなプログラムは、名前の定義からして CPU はそんなに使
わない、CPU を掴んでもすぐに手放すんだから、優先的に CPU を回してやっ
ても全く何の問題ないんだよ。
> 画像のレンダリングとかをやるならCPUバウンドの方を優先した方がいい。
違うよ。CPU intensive なプロセスを優先すると、正帰還が起きて CPU を消
費しないプロセスには決して CPU が割り当てられないという致命的な状況が
発生するでしょ。対話的なプログラムなんかは、ほとんど入力待ちにいてCPU
を使わないから優先度が下がって、優先度の高い CPU intensive なプロセス
が終了するまで決してスケジュールされないことになる。つまり、ほとんどシ
ングルタスク OS 状態、しかも対話的なプロセスが常に一番後回しにされてし
まうという。そんな OS 決して誰も使わないよ。
もし信じられないなら、p->couter が大きい方を優先する代わりに p->counter
が小さい方を優先するように goodness() を書き換えて試してごらんよ。そん
なことをしなくても、ちょっと考えれば分かる筈だと思うんだが。
> 他のUnixはスリープ優先度でI/O intensiveを実現してるんだけどLinuxの場合は
> 違う方法でそれを実現しているってのもクセを作ってる一因だと思う。
これも違うなあ。I/O intensive なプロセスが優先されるのは、基本的にはそ
ういうプロセスが CPU を使わない (Linux の実装の言葉で言うと、
p->counterの値が大きい) からだよ。これは、Linux 以外の UNIX でも変わら
ない。Linux の異なる点は、他の UNIX が持っているもう一つの仕組み (スリー
プ優先度) を持ってないことであって、Linux 独自の特別な仕組みで I/O バ
ウンドなプログラムを優先させているわけじゃない。
あと、気になっているんだけど、Linux のスケジューラを、4.3BSD のスケジュー
ラに毛が生えたって表現するのは、かなり違うと思うな。ラウンドロビン以外
の優先度クラスがあるって意味では毛が生えているけど、逆に抜けている毛も
大きいと思うよ。ロードアベレージを勘案した decay なんてのは、すっぽり
抜け落ちてるでしょ。
■ このスレッドは過去ログ倉庫に格納されています