Serveur sur Cluster Mpich / OpenMPI

  • Auteur de la discussion Auteur de la discussion Aang23
  • Date de début Date de début
Certes tu dois avoir des machines très performantes, mais je me pose une question: LA LATENCE.

même si tes machines sont sur le même cluster, n'as tu pas peur de la latence entre 2 machines ?
Certes elle est quasi-inexistante, mais si la "machine principale" doit attendre les autres, ne penses-tu pas que cela va rendre ton serveur plus lent ?

Sinon, c'est une très bonne idée :)
 
Théoriquement les latences réseau seront extrement faible ( 10GB/s dans mon cas ), après, dans la configuration classique d'un serveur, les tâches ont des latences souvent causées par le fait qu'il y des prioritées... Via ce principe, la charge par serveur sera beaucoup plus faible et devrait même réduire les latences. Le serveur pourra traiter plusieurs grosse tâches sans "CPU bottleneck". La principale n'aurai pas à atendre les autres, vu qu'un serveur dédié est théoriquement plus rapide qu'un serveur déja surchargé par d'autre taches même sur une tache aussi basique que traiter les IA.
Sinon c'est sur que j'aurai quelque chose à traiter la dessus niveau optimisation réseau, il faut réduire le protocole au minimun. Pour l'instant du netcat ne pose aucune latences comparé au serveur d'origine.

Un exemple assez récurent dans le crash des serveurs : la RAM. Un serveur utilisant déja 2/3G de RAM avec la gestions des mobs pourrait être allégé en déplaçant le thread sur un autre serveur. Rien qu'avec la TNT déplacé mon serveur de test peux gérer les explosions sans troubles au niveau du reste.... Maintenant il faut terminer de déplacer l'intégralité de ces classes. Mais le gain de performances semble pouvoir aller assez loin.

PS : je commencer sur le serveur vanilla, pour ensuite m'attaquer au serveur Forge, qui serai surement plus avantageux.
 
Dernière édition:
  • J'aime
Reactions: lebabadu35
Hey !

Tu as réussi à gérer que la TNT ou tous les systèmes du jeu (Redstone, Mob, entités etc...) ? Mais sinon excellent travail. Il est clair que le code m'interesse beaucoup et je me ferai un plaisir de l'étudier. Du coup ca fonctionne comment ? Tu utilises 1 fichier en .jar qui gère tout et alors tu met 1 fichier .jar par machine physique et tu configure les fichiers pour qu'ils se lient en réseau ? Expliques moi si tu peux parce que ça m'intéresse beaucoup :)

AlexFatta
 
Hey !

Pour l'instant je ne me suis occupé que de la TNT, étant je pense un bon début. Les autre viendront quand j'aurais fini de me fixer sur un protocole... Il reste encore de nombreux bugs.
Le fonctionnement que je vise serai d'utiliser un .jar "master" gérant les connexion entrantre / sortante vers les clients. Celui la se connecte aux nodes ( "slaves", pour l'instant qu'une seule ), après je n'ai pas décidé si le serveur "master" sera aussi le serveur TCP ou un client. Lorsque qu'une méthode d'une classe, pour example Explosion.java, a la place de l'executer en local, les variables utile sont transmit aux "nodes". Ces "nodes" ne sont que le même .jar a part que la classe net.minecraftserver.server.MinecraftServer n'est jamais appelé, et qu'il ne fait que créer un lien TCP avec le "master", puis attendre les variables. Après récéption le calcul est effectué, puis le résultat est retransmit au "master" qui actualise ces valeures, action totalement transparent d'un point de vu serveur.
La principale difficulté ici est de trouver une fonction "universelle" pour le retour du résultat. Pour l'instant une explosion de certain blocks cause un beau crash des 2 cotés ! Faut admettre que clusteriser un serveur conçu pour le contraire n'est pas aisé...
J'éspère que l'expliquation était assez claire, c'est encore assez fouillit... Je le mettrais sur github dès que le code sera stable pour cette classe.
Ah, et la configuration se fera par le simple fait d'entrer l'ip du central, et bien sur de configurer les méthodes. Les 1ère chose à gérer sont d'après moi, la redstone, la tnt, les IA ( mobs ).
Une autre idée est de se passer totalement de fichier partagé et de ne faire passer que le minimum : les variables ( souvent "this" ).
Par contre pour l'instant je test en VM car je ne suis pas chez moi... Et le comportement pourrait être différent sur des machines physiques.
Et au final, les outils cités dans le titre du topic se révèlent inutiles.
 
  • J'aime
Reactions: Alex Fatta