分散レイトレースベンチ改その2

一度に送る行数を変えられるようにして実験してみた。
結果は、遺憾ながら1行ずつ送ったときが最速という残念な結果に。

(xp1@192.168.0.10)25> timer:tc(dist_ray, start, ["tmp.bmp", 200, 1, 3, [node(), node(), 'xp2@192.168.0.11', 'osx@192.168.0.12', 'linux@192.168.0.13']]).
waiting for boot servants...['xp1@192.168.0.10','xp1@192.168.0.10', 'xp2@192.168.0.11','osx@192.168.0.12', 'linux@192.168.0.13']
start rendering[<6002.171.0>,<6001.73.0>,<6000.69.0>,<0.129.0>,<0.128.0>]
finish PID: <0.128.0>
finish PID: <0.129.0>
finish PID: <6000.69.0>
finish PID: <6001.73.0>
finish PID: <6002.171.0>
finished!
{22734000,ok}

1行ずつのとき->22秒

(xp1@192.168.0.10)26> timer:tc(dist_ray, start, ["tmp.bmp", 200, 2, 3, [node(), node(), 'xp2@192.168.0.11', 'osx@192.168.0.12', 'linux@192.168.0.13']]).
waiting for boot servants...['xp1@192.168.0.10','xp1@192.168.0.10', 'xp2@192.168.0.11','osx@192.168.0.12', 'linux@192.168.0.13']
start rendering[<6002.173.0>,<6001.75.0>,<6000.71.0>,<0.134.0>,<0.133.0>]
finish PID: <0.133.0>
finish PID: <0.134.0>
finish PID: <6000.71.0>
finish PID: <6002.173.0>
finish PID: <6001.75.0>
finished!
{22281000,ok}

2行ずつのとき->22秒。変化なし

(xp1@192.168.0.10)27> timer:tc(dist_ray, start, ["tmp.bmp", 200, 4, 3, [node(), node(), 'xp2@192.168.0.11', 'osx@192.168.0.12', 'linux@192.168.0.13']]).
waiting for boot servants...['xp1@192.168.0.10','xp1@192.168.0.10', 'xp2@192.168.0.11','osx@192.168.0.12', 'linux@192.168.0.13']
start rendering[<6002.175.0>,<6001.77.0>,<6000.73.0>,<0.139.0>,<0.138.0>]
finish PID: <0.139.0>
finish PID: <0.138.0>
finish PID: <6000.73.0>
finish PID: <6001.77.0>
finish PID: <6002.175.0>
finished!
{22875000,ok}

4行ずつ。->22秒。変化なし。

(xp1@192.168.0.10)28> timer:tc(dist_ray, start, ["tmp.bmp", 200, 8, 3, [node(), node(), 'xp2@192.168.0.11', 'osx@192.168.0.12', 'linux@192.168.0.13']]).
waiting for boot servants...['xp1@192.168.0.10','xp1@192.168.0.10', 'xp2@192.168.0.11','osx@192.168.0.12', 'linux@192.168.0.13']
start rendering[<6002.177.0>,<6001.79.0>,<6000.75.0>,<0.144.0>,<0.143.0>]
finish PID: <0.144.0>
finish PID: <0.143.0>
finish PID: <6001.79.0>
finish PID: <6000.75.0>
finish PID: <6002.177.0>
finished!
{28328000,ok}

8行ずつ。遅くなったw


どうやらメッセージのやりとりによるオーバーヘッドは、レイトレース依頼を送るのを1行単位に減らした時点でほとんど無かったらしい。
帰りのメッセージも減るようにすべての仕事が終わってから結果を送るように改造したのだけど影響はなかった。
各マシンで実行中のCPU負荷を監視すると何れのマシンもずっと100%であることから、
ちゃんと仕事は分散されていてこれが限界なのだろうと思う。
最後に8行ずつ送ると遅くなったのは遅いマシンの仕事が終わるのを待っていたためだった。
ローカルマシンが圧倒的なパワーを持つ状況では、分散させても嬉しさがあまり無いということがよくわかった。
ちょっと残念。
というか事前に使うマシンのベンチくらいとっておくべきかw