誰を先に呼ぶか
席は一つ、待つ仕事は何人も。呼ぶ順番が待ちを変えます。
誰を先に呼びますか
窓口は一つなのに、待っている人は何人もいます。
一度に一人しか呼べないので、誰を先に呼ぶか決めなければなりません。先に来た人。用事がすぐ終わる人。急いでいる人。
この「呼ぶ順番を決めること」がスケジューリングです。CPUの前にも仕事が列を作っていて、どれを先に処理するか誰かが決める必要があります。
席は一つ、待つ仕事は何人も。呼ぶ順番を決める。
スケジューリングは、待っている仕事のうちどれを先に処理するか決めることです。
順番を変えると待ち時間も変わります
同じ三人の客がいます。一人は用事が長く、二人は短いです。
上は来た順に呼びます。長い用事が先頭だと、後ろの短い二人はそれが終わるまでずいぶん待ちます。下は短い用事を先に呼びます。短い二人がすぐ終わり、長い一人だけ残ります。
客も用事も同じなのに、順番を変えただけで、みんなが待った時間の平均が変わりました。
同じ三人でも、呼ぶ順番によって平均の待ちが変わる。
仕事の量が同じでも、順番を変えると平均の待ち時間が変わります。
自分で順番を決めてみます
四人の客が待っています。それぞれ用事の長さが違います。
誰を先に呼ぶか順番を変えると、下にみんなが待った時間の平均がすぐ出ます。
短い用事を前に置くと平均が減り、長い用事を前に置くと増えます。いろいろ動かしてみて、どの順番が平均を一番減らすか探してみてください。
順番を変えながら、平均の待ちがどう変わるか見てください。
短い用事を先にすると平均の待ちは減りますが、それがいつも正解とは限りません。
速ければいいとは限りません
短い用事ばかり先に呼ぶと平均は減ります。でも用事がとても長い客は、自分の番がずっと後回しにされて、いつまでも待つことになりかねません。
だから別のやり方もあります。一人に集中させず、みんなに少しずつ交代で順番を回すのです。誰も最後まで後回しにされません。
その代わり、頻繁に交代するとその分だけ席を替える代償がかかります。速さを取るか、公平さを取るか、ただの選択はありません。
短い用事優先は速いが、長い用事がずっと後回しになりうる。
平均を減らす速さと、誰も後回しにされない公平さは、互いに引き換えです。
一枚にまとめます
三つだけ覚えれば大丈夫です。
一つ目、スケジューリングは呼ぶ順番を決めることです。席は一つで、待つ仕事は何人もいるからです。
二つ目、順番を変えると平均の待ちが変わります。短い用事を先にすると平均が減ります。三つ目、それでも正解は一つではありません。速さと公平さは引き換えで、頻繁に交代すれば替える代償もかかります。
順番が平均を変え、速さと公平さは引き換え。