21 votes

Comment faire fonctionner un serveur Minecraft sur plusieurs cœurs de processeur ?

Je travaille à la mise en place d'un serveur Minecraft sur une machine que j'ai à la maison. Cette machine particulière a deux CPU quad-core fonctionnant à 2.0Ghz, j'aimerais donc profiter du nombre de cœurs et faire tourner un serveur avec 4 ou 6 des cœurs. Mon serveur de choix est CraftBukkit, dont la dernière version est craftbukkit-1.4.7-R1.0 et qui se lance avec un script de démarrage de :

"C:\Program Files\Java\jre7\bin\java.exe" -Xms1G -Xmx8G -jar craftbukkit-1.4.7-R1.0.jar"

En Wiki Minecraft dit :

Depuis la version 1.1.0, les serveurs Minecraft peuvent utiliser plusieurs cœurs, ce qui leur permet de ne pas rester inactifs.

mais ne s'étend pas vraiment sur ce point.

Mes questions, donc :

  • Est-il possible de définir le nombre de cœurs utilisés par le serveur ?
  • Comment procéder - via les options de démarrage ou d'autres méthodes ?
  • Cela en vaut-il vraiment la peine et cela ferait-il une telle différence pour un grand nombre de joueurs ?

16voto

Emma Points 19

Si vous utilisez le JDK au lieu du JRE, vous pouvez utiliser la ligne de commande suivante pour forcer le JDK à utiliser tous les cœurs disponibles pour optimiser Java lui-même ( source ) :

-server -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:ParallelGCThreads=7 -XX:+AggressiveOpts -Xms1G -Xmx8G -jar craftbukkit-1.4.7-R1.0.jar

Comme vous utilisez manifestement Windows, avez-vous pensé à YAMS (je l'ai créé) ? YAMS fera tout cela pour vous.

3voto

Lex Points 61

Merci d'avoir essayé, mais un processus en Java a besoin de déclencheurs spécifiques pour qu'un thread se sépare - il doit être codé de cette façon.

Vous trouverez ici quelques exemples pratiques : https://beginnersbook.com/2013/03/multithreading-in-java/

Alors que Minecraft dispose d'un support multicœur développé de manière relativement robuste du côté client, il en manque du côté serveur. Tout ce qui dépasse 3 cœurs ne sera pas utilisé, à moins que les nouvelles itérations n'introduisent une blockchain de commande avec un partage automatique des threads - rendant le code du serveur dédié plus évolutif qu'il ne l'a été depuis la sortie du jeu.

AlleGamers.com

AlleGamers est une communauté de gamers qui cherche à élargir la connaissance des jeux vidéo.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X