Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Linux
  3. Analyse des performances
Extrait - Linux Administration avancée - Maintenance et exploitation de vos serveurs (3e édition)
Extraits du livre
Linux Administration avancée - Maintenance et exploitation de vos serveurs (3e édition) Revenir à la page d'achat du livre

Analyse des performances

Introduction

Avant d’optimiser, il faut effectuer une bonne analyse pour comprendre le problème rencontré. La lecture des journaux est un bon début afin de noter les entrées inhabituelles. Vérifiez également que les logiciels soient bien mis à jour.

Configurer finement le système d’exploitation ne résout pas tous les problèmes. Vous pouvez aussi rencontrer des applications mal codées ou un matériel défectueux. Pour bien mener votre investigation, il faut :

  • identifier le goulet d’étranglement,

  • identifier la cause,

  • définir les solutions potentielles,

  • implémenter une solution,

  • évaluer la solution.

Goulet d’étranglement

Un goulet ou un goulot d’étranglement est un constituant du système qui limite les performances globales. Il peut en cacher un autre.

Les serveurs doivent être efficaces et fiables en exploitation. Pour optimiser leurs performances, vous devez collecter des données qui permettent d’identifier les goulets d’étranglement du système et créer une base de référence.

Pour concevoir une base de référence, vous devez :

  • identifier les ressources,

  • capturer des données,

  • stocker ces données.

1. Identifier les ressources

Il s’agit d’élaborer un inventaire matériel et logiciel le plus précis possible. Aidez-vous des commandes lshw, lspci, lsscsci, lsusb entre autres... Ces dernières ont été évoquées dans les chapitres précédents.

Ressources matérielles :

Matériel

Commandes suggérées

Nombre de CPU

Vitesse du CPU

lshw -C cpu

Mémoire RAM

cat /proc/meminfo

free -t

Stockage interne

Stockage externe

lshw -C disk

Interfaces réseau

lshw -C network

Ressources logicielles :

Système

Commandes suggérées

Distribution Linux

Version de la distribution

cat /etc/*release*

lsb_release -a

Noyau

uname -r

Liste des modules chargés

lsmod

Partitionnement

cat /proc/partitions

lsblk

fdisk -l

Version du shell...

Processeur

La majeure partie des activités en cours d’exécution sur un ordinateur font appel au processeur. Un serveur peut avoir un ou plusieurs rôles :

  • serveur d’authentification (NIS, LDAP...),

  • serveur de services réseau (DHCP, DNS...),

  • serveur d’application (PostgreSQL, MariaDB...),

  • serveur de fichiers (Samba, NFS...) ou d’impressions.

L’activité normale d’un processeur dépend du rôle qu’on lui attribue. Un serveur d’application fait appel davantage au processeur et à la mémoire vive pour les traitements de données alors qu’un serveur de fichiers utilise plutôt en premier lieu une interface réseau et des accès aux disques.

Si vous combinez plusieurs rôles, vous risquez de voir les quatre ressources critiques trop sollicitées.

Les principales causes d’engorgement du processeur sont les programmes qui prennent trop de temps de traitement et des ressources disques ou réseau qui génèrent des interruptions excessives.

La commande top permet de visualiser, de façon ad hoc, l’activité de l’ordinateur et, en ce qui nous concerne pour le moment, celle du processeur.

Syntaxe

top <options> 

Options utiles :

Option

Description

-d <secondes>

Spécifie le délai de rafraîchissement. La valeur par défaut est 3 secondes.

-u <nom_utilisateur>

Affiche les processus de l’utilisateur mentionné.

images/13EI01.png

Sur la troisième ligne de l’écran, vous avez la valeur %Cpu(s) :

Champ

Description

us

Temps CPU utilisé par les processus de l’utilisateur (us comme user).

sy

Temps CPU utilisé par les processus du noyau Linux (sy comme system).

ni

Temps CPU utilisé par les processus de l’utilisateur qui ont vu leur niveau de priorité modifié (ni comme nice).

id

Non sollicité (id comme idle).

wa

Temps CPU utilisé pour attente d’E/S (wa comme wait ou I/O-wait).

hi

Temps CPU utilisé pour les interruptions matérielles (hi comme hardware interruptions).

si

Temps CPU utilisé pour les interruptions logicielles (si comme software interruptions).

st

Temps CPU de la machine virtuelle courante « volé » par l’hyperviseur (st comme stolen).

Les lignes affichées...

Mémoires

Dans le système d’exploitation Linux, différentes mémoires existent :

  • la mémoire physique (physical),

  • la mémoire tampon (buffers),

  • la mémoire cache (cached),

  • l’espace d’échange (swap) ,

  • la mémoire virtuelle.

1. Mémoire physique

La mémoire physique ou RAM (Random Access Memory) est gérée différemment en fonction de l’architecture x86 32 bits ou 64 bits.

a. Architecture x86

Sur une architecture x86 32 bits, la mémoire physique est séparée en trois zones :

images/13EI02.png

La zone ZONE_DMA correspond aux adresses physiques de 0 à 16 Mio. La zone ZONE_NORMAL va de 16 à 896 Mio et la zone ZONE_HIGHMEM va de 896 à 4 Gio, voire 64 Gio avec l’extension PAE.

b. Architecture x86_64/amd64

La structure de la mémoire sur une architecture x86_64 diffère de celle du x86 :

images/13EI03.png

La zone ZONE_DMA correspond aux adresses physiques de 0 à 16 Mio. Elle existe pour des raisons historiques. La ZONE_DMA32 existe uniquement sur les plates-formes 64 bits de 16 à 4 Gio. La ZONE_NORMAL est toute la RAM disponible au-delà des 4 Gio.

2. Mémoire tampon

Comparé à la mémoire physique, un disque dur est généralement beaucoup plus lent. Linux place dans la mémoire tampon (buffers) les données en attente d’écriture sur le disque, les données lues depuis un disque, la position des blocs disponibles, etc.

La mémoire tampon permet d’augmenter les performances du système d’exploitation durant ses interactions avec les périphériques tels que les disques durs.

3. Mémoire cache

Les données conservées en mémoire cache (cached) sont en majorité des données qui remplissent la mémoire vive dans laquelle vous retrouvez principalement :

  • les partitions montées en mémoire physique (tmpfs, procfs, sysfs...),

  • les données d’application terminée,

  • les données d’application considérées "non-vitales" à l’exécution telles qu’un fichier multimédia en cours de lecture,

  • etc.

Le fait de garder en mémoire cache des données plus ou moins utiles permet d’exploiter tout l’espace de la RAM afin d’éviter...

Disques

La surveillance des disques permet de déterminer la présence de goulots d’étranglement :

  • le besoin de disques supplémentaires ou plus rapides,

  • un excès de pagination.

La commande sar permet d’analyser la pagination du noyau.

Syntaxe

sar <option> <intervalle> <compteur> 

sar recueille des valeurs tous les <intervalle> en secondes pour le nombre de fois mentionné dans <compteur>.

Options nécessaires :

Option

Description

-B

Recueille les statistiques de pagination du noyau.

-d

Rapporte l’activité de chaque périphérique de bloc.

-p

Affiche le nom du périphérique. Cette option doit être combinée avec -d.

Exemple 1

sar recueille la pagination toutes les 10 secondes pour 3 fois :

images/11EI02N.png

La colonne majflt/s (major faults per second) montre combien de pages sont chargées depuis le swap dans la mémoire. S’il y a un trop grand nombre de majflt/s, le système peut ralentir. C’est une indication d’une mémoire insuffisante.

Exemple 2

Affichez l’activité des périphériques de bloc :

images/11EI03N.png

Si la machine utilise plusieurs disques, vous obtenez la meilleure performance si les demandes d’E/S sont uniformément réparties sur tous les disques.

Les valeurs retournées sont des moyennes. Comparez les colonnes tps (transferts par seconde), rd_sec/s...

Interfaces réseau

Les principales causes des goulets d’étranglement du réseau sont les suivantes :

  • serveur surchargé,

  • réseau surchargé,

  • perte d’intégrité du réseau.

La commande sar permet d’analyser les E/S des interfaces réseau.

Syntaxe

sar <option> <mots_clés> 

Option nécessaire :

Option

Description

-n

Recueille les statistiques réseau.

Vous pouvez utiliser des mots-clés pour choisir les valeurs à retourner. Les principaux mots-clés sont :

  • DEV pour obtenir des statistiques sur un périphérique précis.

  • EDEV pour obtenir des statistiques concernant les échecs sur un périphérique précis.

  • ALL pour générer un rapport intégral des statistiques réseau.

Les valeurs de DEV :

Valeur

Description

IFACE

Nom de l’interface.

rxpck/s

Nombre total de paquets reçus par seconde.

txpck/s

Nombre total de paquets transmis par seconde.

rxkB/s

Nombre total de Kio reçus par seconde.

txkB/s

Nombre total de Kio transmis par seconde.

rxcmp/s

Nombre de paquets compressés reçus par seconde.

txcmp/s

Nombre de paquets compressés transmis par seconde.

rxmcst/s

Nombre de paquets multicast reçus par seconde.

Exemple

images/13EI07.png

Les valeurs de EDEV :

Valeur

Description

IFACE

Nom de l’interface.

rxerr/s

Nombre total de mauvais paquets...

Exercice

Vous allez utiliser la machine virtuelle Debian.

Ouvrez une session en ligne de commande et soyez super-utilisateur.

1. Création d’un fichier swap

1. Regardez l’état du swap actuel et notez les valeurs.

2. Créez un fichier swap de 100 Mio qui se nomme mem.swp.

3. Activez le fichier swap. Vérifiez s’il est activé.

4. Supprimez le fichier swap. Vérifiez s’il est supprimé.

2. Stress de la mémoire

1. Installez le logiciel Stress depuis les dépôts de Debian.

2. Exécutez la commande stress comme ceci :

# stress --vm-bytes $(awk '/MemFree/{printf "%d\n", $2 * 2;}' 
< /proc/meminfo)k --vm-keep -m 1 & 

Vous avez la commande stress qui simule une charge mémoire. Elle fonctionne en arrière-plan :

# jobs -l 

3. Affichez avec la commande free l’état de la mémoire.

4. Affichez les statistiques avec vmstat.

5. Recueillez avec la commande sar 5 fois toutes les 10 secondes la pagination.

6. Tuez le processus stress exécuté en arrière-plan. Vérifiez.

7. Affichez avec la commande free l’état de la mémoire.