ik heb een interessant probleem. Ik heb een programma gemaakt welke werkt op meerdere machines.
Elke machine(node) genereert een X aantal (worker) threads. Er is een master node welke de jobs genereert (met een global queue) (ook deze heeft worker threads). Elke thread haalt de jobs op bij de global queue en begint ze dan uit te voeren. Als de queue leeg is dan locken de threads totdat de queue weer gevult is (dit werkt naar behoren)
Het probleem: Vanaf 4/8 nodes maakt het weinig meer uit of er 1 of meer threads draaien per node (elke node heeft 2 cpus). Vreemd genoeg gaat de performance wel weer omhoog als er een node bijgeplaatst wordt. 16 nodes met 1 thread performen dus beter dan 8 nodes met 2 threads.
Ik zat zelf te denken dat de master node misschien teveel moet doen (omdat de workers ook werken op dezelfde thread) maar ook dit is niet de reden. Zelfs als de master node alleen maar zorgt voor de global queue zie je hetzelfde patroon (dat vanaf een bepaalt aantal nodes het niet uitmaakt hoeveel threads er zijn)
Ik begrijp niet precies waarom er wel performance gain is bij meerdere nodes, maar haast geen bij extra threads. Terwijl er tot de 4 nodes juist wel flinke performance gain is bij 2 threads tov 1 thread. Iemand een idee?
Elke machine(node) genereert een X aantal (worker) threads. Er is een master node welke de jobs genereert (met een global queue) (ook deze heeft worker threads). Elke thread haalt de jobs op bij de global queue en begint ze dan uit te voeren. Als de queue leeg is dan locken de threads totdat de queue weer gevult is (dit werkt naar behoren)
Het probleem: Vanaf 4/8 nodes maakt het weinig meer uit of er 1 of meer threads draaien per node (elke node heeft 2 cpus). Vreemd genoeg gaat de performance wel weer omhoog als er een node bijgeplaatst wordt. 16 nodes met 1 thread performen dus beter dan 8 nodes met 2 threads.
Ik zat zelf te denken dat de master node misschien teveel moet doen (omdat de workers ook werken op dezelfde thread) maar ook dit is niet de reden. Zelfs als de master node alleen maar zorgt voor de global queue zie je hetzelfde patroon (dat vanaf een bepaalt aantal nodes het niet uitmaakt hoeveel threads er zijn)
Ik begrijp niet precies waarom er wel performance gain is bij meerdere nodes, maar haast geen bij extra threads. Terwijl er tot de 4 nodes juist wel flinke performance gain is bij 2 threads tov 1 thread. Iemand een idee?
[ Voor 3% gewijzigd door justice strike op 20-01-2008 00:46 ]
U can call me sir.... or justice as long as u bow down ;)