Blog d’experts: Optimiser l’utilisation et les performances du processeur

  • FrançaisFrançais



  • Danilo Danicic

    Pour la plupart des applications, les performances sont centrées sur le débit, c’est-à-dire la quantité de travail que le serveur peut traiter dans une période donnée. C’est pourquoi le plus haut de gamme les serveurs sur le marché aujourd’hui sont conçus avec le débit à l’esprit.

    Cependant, il n’existe pas de serveur parfaitement optimisé pour exécuter tous les types de charges de travail prêts à l’emploi. Pour tirer le meilleur parti des ressources disponibles de votre serveur, vous devez comprendre les limitations physiques du processeur par rapport à vos exigences de performances.

    Tous les efforts d’optimisation du processeur sont essentiellement basés sur des logiciels. Cela implique l’optimisation de votre charge de travail ou d’autres logiciels exécutés sur la machine par opposition à la mise à niveau du matériel. Le processus de réglage fin des performances du serveur implique généralement des compromis – l’optimisation d’un aspect du serveur au détriment d’un autre.

    Définir les objectifs de performance

    Lors de l’optimisation de vos charges de travail pour l’utilisation des ressources et les performances, les compromis entre le processeur, la mémoire et le stockage sont inévitables. Par exemple, augmenter la taille du cache améliorera la vitesse de traitement globale, mais entraînera une consommation de mémoire plus élevée.

    C’est pourquoi déterminer quelle partie de votre système doit être optimisée nécessite une compréhension approfondie des charges de travail qui y sont exécutées.

    Étant donné que chaque charge de travail est unique et consomme les ressources différemment, il n’y a pas de règles fixes pour définir les exigences matérielles ou les objectifs de performances. Les charges de travail de base de données SQL, par exemple, pèsent lourd sur le processeur tandis que les charges de travail de rendu 3D engloutissent de grandes quantités de mémoire.

    Avant de déployer ou de configurer votre infrastructure de serveur, vous devez évaluer vos besoins via un processus appelé planification de la capacité. La planification de la capacité du serveur vous donne un aperçu de votre utilisation actuelle des ressources et vous aide à développer des stratégies d’optimisation pour les objectifs de performances actuels et futurs.

    Pour les types de charges de travail les plus courants tels que le traitement de base de données, les applications ou l’hébergement Web, vous devez tenir compte de ces questions fondamentales lors de la définition des objectifs de performances du processeur:

    • Quel est le nombre d’utilisateurs prévus qui utiliseront votre application?
    • Quelle est la taille d’une seule demande?
    • À combien de demandes vous attendez-vous pendant une charge moyenne et des pics de demande?
    • Quel est le SLA souhaité? (c’est-à-dire une seconde, cinq secondes, etc.)
    • Quelle est votre utilisation cible du processeur?

    Vous devrez également déterminer les composants serveur sur lesquels votre application s’appuie le plus:

    • Performance / débit – basé sur le processeur
    • Consommation de mémoire – Basé sur la RAM
    • Latence – basé sur le réseau
    • Opérations d’E / S – base de disque

    Lors de l’optimisation des performances, le nombre de cœurs de processeur joue un rôle crucial. Les travaux multi-threads bénéficient de processeurs multicœurs. Ainsi, ne pas avoir suffisamment de cœurs peut entraîner un temps d’attente élevé du processeur, ce qui augmente le temps nécessaire pour traiter les travaux multi-threads.

    Votre configuration de stockage a également un impact sur les performances. Avoir le bon type de disque et des ressources de stockage correctement configurées réduit la latence. Ceci est particulièrement important lors de l’exécution de charges de travail sensibles à la latence telles que le traitement de base de données. Ces charges de travail doivent être optimisées pour utiliser efficacement les ressources mémoire.

    Par conséquent, comprendre comment différents types de charges de travail utilisent des ressources de serveur différentes peut vous aider à atteindre vos objectifs de performances.

    • Charges de travail gourmandes en ressources processeur – encodage vidéo, apprentissage automatique, calculs algorithmiques, serveurs Web à fort trafic
    • Charges de travail gourmandes en mémoire – Bases de données SQL, rendu CGI, traitement du Big Data en temps réel
    • Charges de travail sensibles à la latence – streaming vidéo, moteurs de recherche, traitement de SMS sur mobile, trading haute fréquence

    Surveiller l’utilisation des ressources

    Une utilisation élevée du processeur dégradera les performances globales de vos serveurs. Lorsque l’utilisation dépasse 80% des ressources physiques du processeur, votre application se chargera plus lentement ou le serveur peut cesser de répondre.

    Il existe de nombreuses causes d’utilisation élevée du processeur. Par exemple, si un serveur de base de données utilise 100% des capacités du processeur, cela peut être dû au fait que l’application exécute trop de tâches gourmandes en ressources processeur telles que les requêtes de tri. Pour réduire la charge, vous devez optimiser vos requêtes SQL pour utiliser plus efficacement les ressources disponibles.

    Une utilisation élevée du processeur peut également être attribuée à des applications mal codées, à des logiciels obsolètes ou à des vulnérabilités de sécurité. La seule façon de déterminer avec précision la cause première des problèmes de performances ou des goulots d’étranglement consiste à utiliser des outils d’analyse et de surveillance.

    Lors de l’analyse des données de surveillance, gardez à l’esprit que l’utilisation du processeur ne doit jamais être à pleine capacité. Si votre application consomme 100% de la puissance de traitement totale sous une charge moyenne, le processeur ne pourra pas gérer les pics soudains de demande, ce qui entraînera une latence ou une indisponibilité du service.

    En règle générale, les applications sensibles à la latence doivent utiliser au maximum 80% de la puissance du processeur. Et pour les applications moins sensibles à la latence, l’utilisation du processeur peut atteindre 90%. Cependant, une charge qui est continuellement supérieure à 80% doit être étudiée plus avant pour déterminer ce qui consomme des ressources.

    Pour atténuer les problèmes d’utilisation élevée du processeur, les solutions courantes incluent l’optimisation du code de votre application, la limitation du nombre de requêtes, l’optimisation des processus du noyau ou du système d’exploitation ou le déchargement de la charge de travail vers des serveurs supplémentaires.

    Optimisation matérielle

    La plupart des serveurs sont livrés avec des composants matériels prédéfinis, en particulier ceux proposés par les fournisseurs de services. Cela signifie généralement des ressources CPU et RAM fixes. Par conséquent, vous aurez rarement la possibilité d’effectuer des mises à niveau matérielles lorsque vos charges de travail atteignent la capacité maximale du processeur. Cependant, il existe une solution sur le marché qui se rapproche.

    En collaboration avec Intel, phénixNAP a développé et lancé FlexServers – la seule plate-forme de serveur dédié au monde avec des capacités de mise à l’échelle verticale du processeur. Les FlexServers sont fournis avec quatre configurations de CPU prédéfinies dans un seul châssis. Lorsque vous avez besoin de plus de puissance de traitement, un simple redémarrage du serveur suffit pour accéder à un processeur physique plus robuste.

    Selon les spécifications, chacun FlexServer est alimenté par 2nd Processeurs évolutifs Intel Xeon de génération. La configuration de base du processeur fournit 20 cœurs à une vitesse d’horloge de 2,1 GHz par cœur, tandis que la configuration la plus puissante offre 56 cœurs à une fréquence de 2,7 GHz par cœur.

    Cœurs, vitesse d’horloge et threads

    En fonction de la structure de votre application et du type de charge de travail, le nombre d’unités de traitement (cœurs) et la fréquence du processeur (vitesse d’horloge) joueront un rôle important lors de l’exécution des tâches d’optimisation.

    Gardez à l’esprit qu’un nombre plus élevé de cœurs ne signifie pas nécessairement de meilleures performances. Un processeur avec moins de cœurs fonctionnant à une fréquence plus élevée peut traiter plus d’instructions plus rapidement qu’un système avec un nombre de cœurs plus élevé et une vitesse d’horloge plus lente.

    Les serveurs Web, par exemple, bénéficient de plusieurs cœurs car ils lancent des centaines de threads qui nécessitent plus d’unités de traitement. Alors que les charges de travail de l’hyperviseur fonctionnent mieux avec des vitesses d’horloge plus rapides. En effet, l’hyperviseur distribue les ressources physiques sur plusieurs machines virtuelles qui peuvent partager une seule unité de traitement.

    Cependant, les hyperviseurs peuvent également tirer parti des processeurs multicœurs. Plus le nombre de cœurs est élevé, plus il peut prendre en charge de machines virtuelles, tout en réduisant les temps d’attente du processeur.

    Le langage de programmation exécutant votre application a également un impact sur l’utilisation du processeur. Les langages de programmation qui fonctionnent à proximité du métal, tels que C ou C ++, vous donnent plus de contrôle sur les opérations matérielles que les langages compilés tels que Python ou PHP. C’est pourquoi l’écriture d’applications en C ou C ++ vous donne un avantage évident si vous avez besoin d’un contrôle granulaire sur la façon dont votre application consomme les ressources CPU et mémoire.

    Conclusion

    Étant donné que chaque charge de travail est différente, vous devez utiliser divers outils de surveillance pour déterminer quelles parties de votre système ou application doivent être optimisées. Presque tous vos efforts d’optimisation de l’utilisation du processeur seront basés sur des logiciels. En effet, la mise à niveau des composants physiques du serveur pour prendre en charge les augmentations de la demande est souvent impossible, coûteuse ou peu pratique. Cependant, il existe des solutions sur le marché telles que FlexServers de phoenixNAP qui vous permettent de modifier les configurations physiques du processeur pour accéder à plus de puissance de traitement lorsque vous en avez besoin, sans mettre à niveau le matériel.

    phénixNAP

    Source

    N'oubliez pas de voter pour cet article !
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading...

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée.