Shinya TAKEBAYASHI
takeb****@nttco*****
2007年 6月 14日 (木) 17:15:54 JST
黒澤 様 竹林です. お疲れ様です. 返信が遅れ,すみません. アドバイスありがとうございます. gcd を使った方式で,実装してみます. ----------------------------------------------------------- NTT コムウェア株式会社 プロジェクト管理統括部 OSS 推進部門 OSS 適用担当 竹林 信哉(たけばやし しんや) 〒261-0023 千葉市美浜区中瀬 1-6 NTT 幕張ビル 21F En TEL: 043-211-2452 (+383-8054) E-mail: takeb****@nttco***** GPG ID: 70298B55 GPG FP: 98C3 25CF 8201 4881 9328 5C91 CBFA DCFC 7029 8B55 ----------------------------------------------------------- *** KUROSAWA Takahiro wrote in message <20070****@mail***** > *** Subject: [Ultramonkey-l7-develop 28] Re: Weighted RoundRobin 機能 追加パッチ *** Date: 2007/06/12 17:46:44 > 黒澤です. > > On Sun, 03 Jun 2007 02:08:12 +0900 > Shinya TAKEBAYASHI <makot****@kanon*****> wrote: > > > > 1:1:2や5:5:10に設定された場合の動作は、リアルサーバの > > > 1台目->2台目->3台目->3台目->1台目->2台目・・・という > > > ような感じでバランシングされるものと思います。 > > > > そうですね,そうでないとラウンドロビンになりませんよね・・・. > > > > http://primeserver.fujitsu.com/ipcom/catalog/data/1/3.html > > > > の「静的な重み付きラウンドロビン」を参考に,アルゴリズムを > > 再考してみます. > > LVS の WRR アルゴリズム (net/ipv4/ipvs/ip_vs_wrr.c) からひっぱっ > てくれば実装できそうですが,ソースをそのまま使ってしまうとコピー > ライトとライセンスの問題が出てきますね. > > LVS でやっているのは,だいたいこんな感じみたいです: > > (1) 各リアルサーバに指定された weight の最大公約数 (gcd と表記) と > weight の最大値 (max_weight と表記) を調べておく. > 最大公約数の計算にはユークリッドの互除法というものを使っているよ うです. > 計算方法自体は簡単です. > > (2) 整数 x を用意し,それに max_weight を代入. > > (3) リアルサーバのスケジュール時に,リアルサーバの weight が x 以上 の > ものだけを round-robin で一周だけスケジュールする. > > (4) 一周スケジュールしたら x から gcd を引く (x -= gcd). > x > 0 なら (3) へ.x <= 0 なら (2) へ. > > > 例えば,リアルサーバが rs_a, rs_b, rs_c, rs_d の 4 台構成で, > weight がそれぞれ 24, 12, 18, 30 の場合,gcd = 6, max_weight = 30 > となるので,それぞれの周回でスケジュールされるのは, > > 1 周目: x = 30 / rs_d > 2 周目: x = 24 / rs_a, rs_d > 3 周目: x = 18 / rs_a, rs_c, rs_d > 4 周目: x = 12 / rs_a, rs_b, rs_c, rs_d > 5 周目: x = 6 / rs_a, rs_b, rs_c, rs_d > > 6 周目: x = 30 / (一周目と同じ) > ... > > となります.5 周スケジュールして,各リアルサーバがスケジュールされる 回数は, > rs_a : rs_b : rs_c : rs_d = 4 : 2 : 3 : 5 = 24 : 12 : 18 : 30 となり ます. > > _______________________________________________ > Ultramonkey-l7-develop mailing list > Ultra****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-develop >