【らうんどろびん】

ラウンドロビン とは?

最終更新:
💡 順番に選んで、最後まで行ったら先頭へ戻る

対象を順番に選び、最後まで行ったら先頭へ戻る割り当て方式。CPUの実行時間やサーバーへのリクエスト配分などに使う。順番や件数が均等でも、実際の負荷が均等とは限らない。

📌 このページのポイント
実行できる仕事を、順に回す仕事A仕事B仕事CCPU全て実行可能・同じ優先度の例仕事A0仕事B10仕事C2030 ms10 msは仮の上限。次は再びAへ
緑は現在の選択先、矢印は実行順です。10 msの時間枠を使い切る単純な例で、待機や割込み、切替時間を省略しています。
ひよこ ひよこ
ラウンドロビンってどんな方式?
ペンギン先生 ペンギン先生
例えばA、B、Cを順に選び、Cの次はAへ戻る方式だよ。単純な構成では順番が一方へ偏りにくい。ただし回るのは実行できる対象や有効な配分先で、待機中や停止中のものまで必ず選ぶわけではないんだ
ひよこ ひよこ
CPUではどう回すの?
ペンギン先生 ペンギン先生
一定の時間の上限を決め、その間に終わらなければ次の順番へ回すよ。この上限をタイムスライスや時間量子という。例えば10ミリ秒は説明用の値で、全OSの共通設定ではない。途中で実行できなくなる場合もあるね
ひよこ ひよこ
優先度は付けられないの?
ペンギン先生 ペンギン先生
単純なラウンドロビン自体は、同じ対象の間で順番を回す考え方だよ。優先度の仕組みと組み合わせることはできる。例えばLinuxのSCHED_RRは、同じ優先度の実行可能なスレッドの間で回し、より高い優先度には先を譲るんだ
ひよこ ひよこ
サーバーなら負荷も均等になる?
ペンギン先生 ペンギン先生
リクエストを順番に配ることと、負荷が同じになることは別だよ。処理の重さやサーバーの性能が違えば、件数が同じでも忙しさは違う。配分比率を変える方式では配分の比率を設定できるけれど、同じ相手へ必ず連続して送る方式とは限らないんだ
ひよこ ひよこ
DNSでも使うの?
ペンギン先生 ペンギン先生
複数のアドレスなどのDNSの回答項目を返す順序を回す方法があるよ。BINDのcyclic設定は、問い合わせごとに返す順番をずらす。これは接続先へリクエストを直接振り分けるのとは別で、DNSならいつでも均等に接続されるとは言えないね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ラウンドロビン」って出てきたら「順番に選んで、繰り返し割り振る方式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Round-Robin」 = 順繰り・巡回する方式
💬 ここでは対象を順番に選び、繰り返し回す意味で使うよ。CPUや通信の配分では、何を順番に回すのかを区別しよう

参考資料

← 用語集にもどる