Question

Laissez-moi le cadrer de cette façon ..

"Disons que mon serveur d'applications s'exécute sur un processeur Intel simple cœur & amp; desservant 200 utilisateurs simultanés. Le transfert du matériel sur un système à double cœur permettra-t-il à mon serveur d'applications de desservir, par exemple, 350 utilisateurs simultanés " ?

La question de base que je souhaite aborder est la suivante: "L'ajout de cœurs de processeur supplémentaires peut-il contribuer à augmenter les capacités d'E / S du serveur". Parce que parfois, c’est ce que les fabricants de matériel font allusion lorsqu’ils vantent leurs serveurs multicœurs.

Était-ce utile?

La solution

Vous devez profiler votre serveur, déterminer son goulot d'étranglement et les traiter.

Si vous êtes lié à la mémoire, achetez plus de mémoire ou achetez un ordinateur avec une mémoire plus rapide.

Si vous êtes lié au disque et que vous distribuez beaucoup de contenu statique, envisagez un lecteur SSD.

Si c'est votre base de données liée, considérez cela.

Mais en général, vous êtes "lié à la configuration" et modifiez votre configuration, par exemple. Si vous modifiez le nombre de threads dans un pool, vous obtiendrez une amélioration immédiate.

De nombreux serveurs Web et bases de données sont exactement le logiciel écrit pour tirer parti des cœurs supplémentaires. Bien sûr, beaucoup facturent également des droits de licence par cœur, donc tenez-en compte également.

Autres conseils

Vous pouvez ou non voir un avantage, mais comme le processeur ne fait pas vraiment les E / S, je ne m'attendrais pas à un avantage significatif car les tâches sont principalement liées aux E / S.

EDIT: Ma réponse suppose que votre code est écrit de telle sorte que vous utilisez réellement plusieurs cœurs. Si ce n'est pas le cas, votre application ne bénéficiera pas de cœurs supplémentaires, mais la machine sera mieux équipée pour exécuter d'autres tâches simultanées.

Cela dépend bien entendu de la manière dont votre serveur d'applications a été écrit. Si le logiciel n'utilise aucune technique de programmation en parallèle, vous ne pourrez pas l'exécuter en parallèle, même si le matériel le permet.

Si votre serveur est mono-threadé (avec select-based IO) et que le traitement de la requête est sans effet secondaire (c’est-à-dire qu’il pourrait être parallélisé de manière conceptuelle), le fait d’exécuter plusieurs instances (mises en correspondance) sur une machine multi-cœur maximisera utilitaire de calcul de la machine.

Que cela se traduise par un débit plus élevé ou non dépend de si le traitement de la demande était lié au cpu. En règle générale, l'IO est le principal goulot d'étranglement dans les systèmes distribués. Cela étant dit, si l'assemblage de messages (de requête) nécessite un calcul important, il existe un certain surcoût de processeur par requête, au-delà des coûts d'E / S. Avoir plusieurs assistants CPU ferait clairement une différence dans ce cas.

Au-delà des considérations de niveau de protocole, évidemment, si le traitement de chaque demande nécessite des calculs importants, un goulot d'étranglement de l'unité centrale aura une incidence sur la disponibilité du serveur. L'utilisation de plusieurs processeurs aidera clairement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top