3.2. Puissance de traitement

Souvent appelée puissance CPU, la puissance de traitement des cycles CPU (qui portent parfois d'autres noms) représente la capacité d'un ordinateur à manipuler des données. La puissance de traitement varie en fonction de l'architecture (et de la vitesse d'horloge) du CPU — généralement, des CPU à vitesses d'horloge élevées et des CPU prenant en charge des longueurs de mots plus importantes ont une puissance de traitement supérieure aux CPU plus lents supportant des mots de tailles inférieures.

3.2.1. Informations sur la puissance de traitement

Il est important de garder à l'esprit deux points principaux concernant la puissance de traitement, à savoir :

La puissance de traitement est fixe dans le sens où la vitesse du CPU est déterminée. Par exemple, si vous devez ajouter deux nombres (une opération qui, sur la plupart des ordinateurs, ne nécessite qu'une seule instruction pour la machine), un CPU spécifique peut effectuer la tâche à une vitesse déterminée et seulement à cette vitesse spécifique. Mises à part quelques rares exceptions, il n'est même pas possible de ralentir le taux auquel le CPU traite les instructions, alors pour ce qui est de l'augmenter, il ne faut même pas y songer.

La puissance de traitement est également fixe à un autre niveau : elle est limitée. C'est à dire qu'il existe des limites quant aux CPU pouvant être branchés dans un ordinateur donné. Certains systèmes sont à même de prendre en charge une vaste gamme de CPU à vitesses variées, alors que d'autres ne pourront peut-être même pas faire l'objet d'une mise à niveau[1].

La puissance de traitement ne peut pas être mise en réserve pour une utilisation ultérieure. En d'autres termes, si un CPU peut traiter 100 millions d'instructions en une seconde, une seconde d'inactivité se traduit par une perte de traitement équivalent à 100 millions d'instructions.

En prenant ces informations et en les examinant sous une optique légèrement différente, un CPU peut être considéré comme "produisant" un flux d'instructions exécutées à un taux fixe. Si le CPU "produit" des instructions exécutées, un autre élément doit indubitablement les "consommer". La section suivante se concentre sur ces consommateurs d'instructions.

3.2.2. Consommateurs de puissance de traitement

Les deux principaux consommateurs de puissance de traitement sont :

3.2.2.1. Les applications

Les consommateurs de puissance de traitement les plus évidents sont les applications et les programmes que vous souhaitez voir exécuter par l'ordinateur. Qu'il s'agisse d'un tableur ou d'une base de données, ces outils sont les raisons pour lesquelles vous disposez d'un ordinateur.

Un système à CPU unique ne peut effectuer qu'une seule tâche à un moment donné. Par conséquent, si votre application est en cours d'exécution, aucun autre élément de votre système ne peut être exécuté. Et bien évidemment, il en va de même pour la relation inverse — si tout autre élément autre que votre application est en cours d'exécution, votre application ne pourra être exécutée.

Dans de telles conditions, comment se fait-il que de nombreuses applications différentes puissent en apparence tourner sous un système d'exploitation moderne ? La réponse est simple ; ces systèmes d'exploitation sont des systèmes multi-tâche. En d'autres termes, ils créent l'illusion que de nombreux éléments sont exécutés simultanément alors que c'est en fait impossible. L'astuce consiste à donner à chaque processus une durée d'exécution sur le CPU d'une fraction de seconde avant d'accorder le même traitement à un autre processus qui lui, disposera de la fraction de seconde suivante. À condition que ces changements de contexte se produisent suffisamment rapidement, il est possible de créer l'illusion que de multiples applications sont exécutées de manière simultanée.

Bien sûr, les applications effectuent des tâches autres que la seule manipulation de données par le biais du CPU. Elles peuvent aussi bien attendre des entrées de l'utilisateur qu'effectuer des activités d'E/S vers des périphériques comme les disques durs ou des affichages de graphiques. Lorsque ces événements se produisent, l'application n'a plus besoin du CPU. Dans ces cas-là, le CPU peut être utilisé pour d'autres processus exécutant d'autres applications sans pour autant ralentir du tout l'application en attente.

En outre, le CPU peut être utilisé par un autre consommateur de puissance de traitement : le système d'exploitation lui-même.

3.2.2.2. Le système d'exploitation

Il est difficile de déterminer le degré de puissance de traitement consommé par le système d'exploitation. En effet, pour effectuer leur travail, les systèmes d'exploitation utilisent une combinaison de codes au niveau des processus et au niveau du système. Alors qu'il est facile d'utiliser par exemple, un contrôleur de processus pour déterminer ce que fait le processus exécutant un démon ou service, il est plus difficile de déterminer la puissante de traitement consommée par le traitement d'activités en relation avec les E/S au niveau du système (ce qui est normalement effectué dans le contexte du processus demandant les E/S).

En général, il est possible de diviser ce genre de temps de gestion du système d'exploitation en deux types :

  • Gestion interne du système d'exploitation

  • Activités en relation avec les processus

La gestion interne du système d'exploitation inclut des activités telles que la programmation des processus et la gestion de la mémoire alors que les activités associées aux processus incluent tout processus supportant le système d'exploitation lui-même, tels que des processus traitant la journalisation des événements dans tout le système ou effectuant le vidage de cache des E/S (cache flashing).

3.2.3. Réponse à une insuffisance de CPU

Lorsque la puissance de traitement disponible est insuffisante pour faire face au travail devant être effectué, deux options sont disponibles :

3.2.3.1. Réduction de la charge

La réduction de la charge CPU est une opération ne nécessitant aucun coût supplémentaire. L'astuce consiste à identifier les aspects de la charge du système qui sont sous votre contrôle et peuvent être réduits. À cet égard, trois aspects ont une importance particulière :

  • La réduction du temps de gestion du système d'exploitation

  • La réduction du temps de gestion des applications

  • L'élimination totale des applications

3.2.3.1.1. La réduction du temps de gestion du système d'exploitation

Afin de réduire le temps de gestion du système d'exploitation, il est nécessaire d'examiner la charge actuelle de votre charge afin d'identifier les aspects précis entraînant des temps de gestion excessifs. Parmi ces derniers pourraient figurer :

  • La réduction du besoin de programmation fréquente de processus

  • La réduction de la quantité d'E/S effectuées

Ceci dit, il ne faut pas s'attendre à des miracles ; dans un système raisonnablement bien configuré, il y a peu de chances que la seule réduction du temps de gestion du système d'exploitation n'entraîne une amélioration considérable de la performance. En effet, un système raisonnablement bien configuré, par définition n'a qu'un temps de gestion minimal. Toutefois, si votre système tourne par exemple avec une quantité de RAM insuffisante, vous serez peut-être en mesure de réduire le temps de gestion en résolvant le problème d'une mémoire vive trop petite.

3.2.3.1.2. Réduction du temps de gestion des applications

Pour réduire le temps de gestion d'une application, il est nécessaire de s'assurer que cette dernière dispose bien de tout ce dont elle a besoin pour fonctionner correctement. Certaines applications ont des comportements extrêmement différents sous différents environnements — une application peut par exemple voir ses capacités fortement limitées par le traitement de certains types de données, mais pas par le traitement d'autres.

À ce stade, il est important de garder à l'esprit qu'une bonne compréhension des applications exécutées sur votre système est nécessaire pour pouvoir leur permettre de tourner aussi efficacement que possible. Pour ce faire, vous devrez souvent travailler avec vos utilisateurs et/ou les développeurs de votre entreprise afin de pouvoir découvrir des moyens permettant aux applications de tourner plus efficacement.

3.2.3.1.3. Élimination complète des applications

Selon l'environnement de votre entreprise, il est possible que cette approche ne puisse pas être utilisée, car il n'est souvent pas du ressort de l'administrateur système d'imposer une liste des applications qui peuvent ou ne peuvent pas tourner. Toutefois, si vous pouvez identifier des applications qui sont connues pour leur "monopole de CPU", vous serez peut-être en mesure d'influencer les personnes responsables de ce genre de décision, afin que les applications en question soient supprimées.

À cet égard, vous ne serez vraisemblablement pas la seule personne impliquée. Les utilisateurs concernés devraient certainement faire partie de ce processus ; dans bien des cas, ils disposeront probablement des connaissances et du pouvoir politique nécessaires pour apporter les changements nécessaires à la liste des applications.

TuyauAstuce
 

Gardez bien à l'esprit qu'il ne sera peut-être pas nécessaire de retirer une application donnée de tout les systèmes de votre entreprise. Vous pourrez peut-être déplacer une application particulièrement gourmande en CPU d'un système surchargé vers un autre système quasiment inoccupé.

3.2.3.2. Augmentation de la capacité

Bien sûr, s'il n'est pas possible de réduire la demande de puissance de traitement, vous devez trouver des moyens d'augmenter la puissance de traitement disponible. Cette option est certes tout à fait possible, mais elle entraînera des dépenses.

3.2.3.2.1. Mis à niveau du CPU

L'approche la plus simple consiste à déterminer s'il est possible de mettre à niveau le CPU de votre système. Pour ce faire, la première étape consiste à voir si le CPU actuel peut être retiré. Certains systèmes (essentiellement les ordinateurs portables) dotés de CPU soudés ne permettent pas une mise à niveau. Sur les autres en revanche, les CPU sont branchés et rendent donc les mises à niveau possibles — tout du moins en théorie.

Ensuite, il convient de faire un peu de recherche afin de déterminer si un CPU plus rapide existe pour la configuration de votre système. Par exemple, si vous disposez actuellement d'un CPU de 1GHz et qu'il existe une unité de 2GHz du même type, une mise à jour sera peut-être possible.

Finalement, il est essentiel de déterminer la vitesse d'horloge maximale prise en charge par votre système. Toujours sur la base de l'exemple précédent, même s'il existe une CPU de 2GHz d'un type approprié, un simple échange de CPU n'est pas vraiment une option si votre système ne prend en charge que des processeurs tournant à une vitesse égale ou inférieure à 1GHz.

Dans le cas où vous ne pourriez pas installer un CPU plus rapide dans votre système, l'étendue de vos options se limitera peut-être au remplacement des cartes mères ou à la mise à niveau massive dont nous avons parlé précédemment.

Toutefois, certaines configurations système permettent une approche légèrement différente. Au lieu de remplacer le CPU actuel, pourquoi ne pas tout simplement en ajouter un autre ?

3.2.3.2.2. Le traitement multi-tâche symétrique est-il adapté à votre situation ?

Le traitement multi-tâche symétrique (aussi appelé multi-traitement symétrique ou SMP de l'anglais Symmetric multiprocessing) permet à un ordinateur d'avoir plus d'un CPU partageant toutes les ressources système. Ainsi, contrairement à un système doté d'un seul processeur, un système SMP peut, lui, faire tourner plus d'un processus à la fois.

Au premier abord, cette situation semble représenter le rêve d'un administrateur système. SMP permet avant tout d'augmenter la puissance de CPU d'un système, même s'il existe des CPU avec une vitesse d'horloge plus rapide — simplement en ajoutant un autre CPU. Cette souplesse s'accompagne néanmoins d'un certain nombre de contraintes.

La première d'entre elles est que tous les systèmes ne sont pas en mesure de fonctionner en traitement multi-tâche symétrique (SMP). La carte mère de votre système doit être conçue pour prendre en charge de multiples processeurs. Si ce n'est pas le cas, la mise à niveau de la carte mère (au strict minimum) sera nécessaire.

Le deuxième d'entre elles est que SMP augmente le temps de gestion du système. En y réfléchissant bien, l'augmentation du nombre de CPU pour lesquels la programmation de tâches doit être effectuée se traduit logiquement, pour le système d'exploitation, en un plus grand nombre de cycles CPU au niveau de la gestion. En outre, un plus grand nombre de CPU peut entraîner une contention accrue pour les ressources système. En raison de ces facteurs, la mise à niveau d'un système à double processeur vers une unité à quadruple processeur n'entraîne pas une augmentation à 100% de la puissance CPU disponible. En fait, en fonction du matériel même, de la charge de travail et de l'architecture du processeur, il est possible d'arriver à un stade où l'ajout d'un autre processeur pourrait en fait réduire la performance du système.

Il est aussi important de se souvenir que SMP ne permet pas d'influencer des charges de travail composées d'une application monolithique avec un seul flux d'exécution. En d'autres termes, si un grand programme de simulation nécessitant une activité de calcul intense tourne en tant qu'un processus et n'a pas de fils (ou thread), il ne sera pas exécuté plus rapidement sur un système SMP que sur un ordinateur à processeur unique. En fait, il tournera même peut-être un peu plus lentement à cause de la gestion supplémentaire engendrée par SMP. Ainsi, de nombreux administrateurs système estiment qu'en matière de CPU, une puissance de traitement à flux unique est l'option à retenir. Elle offre une puissance CPU optimale avec des restrictions minimales au niveau de son utilisation.

Même si ces informations semblent indiquer que SMP n'est jamais une bonne option, il existe certaines situations dans lesquelles un tel choix est tout à fait approprié. Des environnements faisant tourner de multiples applications à calculs intensifs représentent, par exemple, un environnement tout à fait approprié pour SMP. En effet, des applications dont la tâche n'est autre que d'effectuer des calculs pendant de longues périodes de temps maintiennent la contention entre les processus actifs (et par conséquent, le temps de gestion du système d'exploitation) à un minimum, alors que les processus eux-mêmes utilisent chaque CPU.

Il est important de se rappeler également que la performance d'un système SMP à tendance à se dégrader plus progressivement au fur et à mesure que la charge du système augmente. C'est précisément une des raisons pour lesquelles les systèmes SMP sont populaires dans des environnements de serveurs ou dans des environnements à utilisateurs multiples, car l'impact qu'un mélange de processus changeant constamment a sur la charge du système entier est moindre sur un ordinateur à processeurs multiples.

Notes

[1]

Cette situation mène à ce que l'on appelle de manière humoristique une mise à niveau massive, qui correspond en fait au remplacement complet d'un ordinateur