Deux choses à garder à l'esprit ici.
Vos données doivent être suffisamment grandes pour tirer parti du parallélisme des données. En particulier, le nombre de blocs par colonne doit être suffisamment grand pour que tous les cœurs aient du travail à faire. Voir cette réponse pour plus de détails: H2O not working on parallel
H2O-3 suppose que vos nœuds sont symétriques. Il n'essaie pas de charger le travail d'équilibrage à travers le cluster en fonction de la capacité des nœuds. Les noeuds les plus rapides termineront leur travail en premier et attendront que les noeuds les plus lents se rattrapent. (Vous pouvez voir ce même effet que si vous avez deux noeuds symétriques, mais l'un d'eux est occupé à courir un autre processus.)
Asymétrie est un problème plus important pour la mémoire (où les petits noeuds peuvent manquer de mémoire et de ne pas tout à fait) que pour le processeur (où certains nœuds ne font qu'attendre). Veillez donc toujours à démarrer chaque noeud H2O avec la même valeur de -Xmx
.
Vous pouvez limiter le nombre de cœurs H2O avec l'option -nthreads
. Vous pouvez donc essayer de donner à chacun de vos deux nœuds -nthreads 4
et voir s'ils se comportent de façon plus symétrique avec chacun utilisant approximativement quatre cœurs. Dans le cas que vous décrivez, cela signifie que la plus petite machine est utilisée à peu près à 100% et que la plus grande machine est utilisée à peu près 25%. (Mais puisque les deux machines ont probablement des puces différentes, les coeurs ne sont probablement pas identiques et ne s'équilibrent pas parfaitement, ce qui est OK.)
[J'ignore complètement l'aspect de la virtualisation, mais les parts de CPU pourraient également entrer en l'image dépend de la configuration de votre hyperviseur.]
En supposant que vous ne soyez pas lié aux données (en supposant que toutes vos données tiennent sur la plus grande machine), vous obtiendrez de meilleures performances en utilisant simplement la machine 16-core, dans ce cas. Je soupçonne fortement que cela sera aussi plus rapide que d'essayer des idées plus complexes, comme de diviser la machine à 16 cœurs en machines à 4 x 4 cœurs et d'avoir un cluster de 5 nœuds. –