Spigot prend-il en charge le Multi-Threads?

iDre4mZ

Configurations machines @ Tolarys
30 Décembre 2011
1 332
149
182
28
twitter.com
Bonjour,

Actuellement activement à la recherche d'un serveur, je me suis posé la question.
Ayant commencé comme tout le monde avec Bukkit, on est pas sans savoir que cette suite n'utilisais pas de Multi-Cores sur un serveur dédié, il était donc recommandé de chercher des hébergeurs avec des processeurs très très bien cadencé, pour peu de coeurs.

On m'a dit, récemment, que Spigot prenait en charge le Multi-Threads, et j'en doute fortement, mais je tenais quand même à en être sur.

Est-il, à l'heure actuelle, plus rentable de prendre un serveur avec plus de threads, moins bien cadencé? 12 threads à 3.2Ghz, ou de prendre un serveur avec 8 threads cadencé à 3.7Ghz.

J'ai cherché mais n'ai pas trouvé de réponse fiable.

J'attends donc vos réponses avec impatience, et bonne soirée tout le monde!
 
Salut,

On m'a également dis que cela gérais le multi Threads...
On m'a également conseillé de passé en Java 8.

Voila, c'est tout ce que je peux dire. En gros rien à part confirmer tes dires, montrant que ce n'est pas spécialement faux mais ne prouvant pas que c'est vrai...


Cordialement,
Detobel36
 
M'étant renseigné, je peux juste dire que le Wiki de Spigot préconise Java 7. (Source)

Pour ce qui est du Multi-Threads, j'attends de voir si d'autres personnes en savent plus.

Merci de ta réponse en tout cas!
 
  • J'aime
Reactions: Detobel36
Bonjour,

Je vais essayer de ne pas trop te mélanger et t'expliquer pourquoi, non, spigot n'est pas à proprement dit ''multi-thread'' et pourquoi il ne le sera jamais. Pour débuter, plusieurs thread peuvent être utilisé par spigot mais pas pour les ''ticks'' en jeu. Le chat peux être sur un thread indépendant mais les plugins et map sont tout les deux exécuté par un thread. Mais pourquoi? Imagine que le jeu, pour fonctionner, dois calculer des tass de paramètre et il doit les faire dans un ordre séquentiel. Il à 1000/20 de seconde pour le faire. Le problème est que même si MC était sur plusieurs thread, c'est thread devraient attendre le résultat de l'autre thread pour continuer son opération, et le thread ''exécuté devras attendre à son tour la réponse du thread actif. Se qui est totalement une perte de temps. Bon, c'est sûr que se n'est pas IMPOSSIBLE mais je ne croit pas que les milliers d'heures nécessaire et le casse-tête monstrueux en vaudrait la peine pour un gain possible de peut-être 5-10% maximum!

J'espère avoir répondu à ta question!
 
Bonjour,

Je vais essayer de ne pas trop te mélanger et t'expliquer pourquoi, non, spigot n'est pas à proprement dit ''multi-thread'' et pourquoi il ne le sera jamais. Pour débuter, plusieurs thread peuvent être utilisé par spigot mais pas pour les ''ticks'' en jeu. Le chat peux être sur un thread indépendant mais les plugins et map sont tout les deux exécuté par un thread. Mais pourquoi? Imagine que le jeu, pour fonctionner, dois calculer des tass de paramètre et il doit les faire dans un ordre séquentiel. Il à 1000/20 de seconde pour le faire. Le problème est que même si MC était sur plusieurs thread, c'est thread devraient attendre le résultat de l'autre thread pour continuer son opération, et le thread ''exécuté devras attendre à son tour la réponse du thread actif. Se qui est totalement une perte de temps. Bon, c'est sûr que se n'est pas IMPOSSIBLE mais je ne croit pas que les milliers d'heures nécessaire et le casse-tête monstrueux en vaudrait la peine pour un gain possible de peut-être 5-10% maximum!

J'espère avoir répondu à ta question!
J'ai à peu près compris je pense... mais dans ce cas, de combien de Threads, au maximum, un serveur Spigot a besoin, d'après toi?

merci en avance de ta réponse.
 
Se qui compte le plus pour spigot est la vitesse et le nombre d'instruction par cycle qu'un processeur peut faire. 2 Thread est optimal selon moi. Pour un serveur fluide, cherche à avoir une machine avec 3Ghz+. Si tu veux avoir plusieurs serveurs Spigot sur une machine, dédie toujours un processeur par instance minimum!
 
M'étant renseigné, je peux juste dire que le Wiki de Spigot préconise Java 7. (Source)

Pour ce qui est du Multi-Threads, j'attends de voir si d'autres personnes en savent plus.

Merci de ta réponse en tout cas!
Il y a écrit "Java 7 or above" donc le 8 ça va aussi.
Sinon le mieux serait de faire des tests réels. Lancer un serveur Spigot et regarder l'utilisation cpu sur chaque cœurs.
Le programme htop permet d'avoir ces info. Elle permet d'ailleurs en même temps de voir tout les threads qui tournent.

J'avais déjà fait quelques tests sur un serveur MCPC à l'époque, d'après ce que j'avais constaté MCPC utilisait plusieurs cœurs, mais de façon mal réparti. Il y a toujours un des cœurs qui fait le plus gros du boulot, surement celui qui s'occupe du thread principale.
Il faudrait refaire des tests en 1.8, puisqu'une partie des choses de MC utilise le multi-cœur en 1.8 (notamment le chargement des chunks).
 
Se qui compte le plus pour spigot est la vitesse et le nombre d'instruction par cycle qu'un processeur peut faire. 2 Thread est optimal selon moi. Pour un serveur fluide, cherche à avoir une machine avec 3Ghz+. Si tu veux avoir plusieurs serveurs Spigot sur une machine, dédie toujours un processeur par instance minimum!
Ouais je comprends, donc d'après toi, il faut privilégier moins de threads pour une meilleure fréquence, ce que je pense depuis toujours.

Il y a écrit "Java 7 or above" donc le 8 ça va aussi.
Je me suis arrêté là moi:
Keep in mind that Java 7 is the recommended Java version for all Minecraft applications.