2017-09-05 1 views
1

Je configure un cluster avec une machine virtuelle 4 cœurs (2 GHz) et 16 cœurs (1,8 GHz). La création et la connexion au cluster fonctionnent sans problèmes. Mais maintenant, je veux faire un peu d'apprentissage en profondeur sur le cluster, où je vois une distribution inégale pour l'utilisation de la performance de ces deux machines virtuelles. Celui avec 4 cœurs est toujours à 100% de l'utilisation du processeur alors que la machine à 16 cœurs est inactive la plupart du temps. Dois-je effectuer une configuration supplémentaire pendant la génération du cluster? Parce que c'est étrange pour moi que la machine la plus forte des deux soit inactive tandis que la plus faible fait tout le travail.Répartition inégale des performances en cluster H2O

Cordialement, Markus

+0

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. –

Répondre

1

Deux choses à garder à l'esprit ici.

  1. 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

  2. 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.]