Résultat de recherche d'images pour "memory linux"

Je vais vous parler aujourd'hui de ce capteur sur la mémoire des Linux qui peut générer certaines incompréhensions.


Contexte


Ce capteur est intéressant, car il permet pour des systèmes Linux de concentrer en un seul capteur, différents points de supervision mémoire: physique, virtuelle, swap.

C'est un capteur SNMP, donc à faible empreinte, et plutôt à privilégier qu'un équivalent au travers d'une connexion SSH.


Le soucis, c'est que nativement, il se déploie avec une limite positionnée notamment sur le channel principal "Percent Available Memory".

Or il se trouve que cette valeur est bien souvent basse, très basse, et globalement en dessous d'un seuil acceptable de mémoire libre pour un système.

Conséquence directe: ces capteurs sont en rouge si l'on ne fait rien alors qu'il est plus que probable que tout aille bien.


Ajouter de la RAM ne solutionnera pas notre problème.



Que faire alors?


Déjà, il faut comprendre ce qu'il se passe. Pourquoi mon capteur est en rouge? Pourquoi la valeur de mémoire libre indiquée est-elle si faible et pourquoi ce n'est-il pas si grave au final?



Linux et la gestion de la mémoire


Là où souvent on distingue uniquement la mémoire vive (RAM) et la mémoire morte (ROM, les disques), Linux travaille avec 4 principes que vous pouvez rapidement apercevoir au travers de la commande free.

  • La mémoire physique (Physical): elle correspond à la mémoire vive installée.
  • La mémoire tampon (Buffers): partie de la RAM, elle est utilisée par Linux pour y mettre des informations pour augmenter les performances du système. On y retrouve les données en attente d'écriture sur disque, les données lues (liste, droits,..)
  • La mémoire cache (Cached): partie de la RAM, elle est utilisée pour des données d'applications, les partitions montées en RAM, des données non indispensables à l'exécution... Bref tout un tas de données plutôt orientée appli. Ce qu'il faut bien comprendre, c'est que Linux favorise les performances globale en utilisant la RAM plutôt que de l'avoir et de ne pas s'en servir. Cela dit, Linux libérera automatiquement une zone mémoire de cet espace si un besoin survenait.
  • La mémoire swap (Swap): elle correspond à l'espace provisionné sur les disques durs en cas de saturation de la RAM.


Le principe global à avoir en tête, c'est que Linux n'aime pas le gaspillage, et favorise les performances en utilisant la RAM disponible. On peut imaginer bien sur que ce comportement évoluera avec la généralisation des disques flash.



Et donc pour notre cas d'usage?


Pour en revenir à notre capteur, le pourcentage de mémoire libre est calculé sur la base de la valeur de la colonne "free" de la commande du même nom.



Or cette valeur considère que la mémoire cache est consommée, et donc plus disponible! Et c'est là que du coup la supervision basée sur ce point est limite... Etant donné que Linux, quelque soit la quantité de RAM qu'on lui donne, l'utilisera en mode Cached, il vaut mieux surveiller le pourcentage de mémoire physique disponible qui est du coup beaucoup plus représentatif de ce que l'on cherche.



Au final, on prendra soin donc de retirer la limite gênante, et d'en configurer une avec les seuils désirés sur le pourcentage libre de mémoire physique. Pour des raisons d'exploitation et de confort, on pourra enfin intervertir ces deux canaux pour avoir une lecture directe de celui qui nous intéresse.




Nicolas Jançon

Co-fondateur et associé chez Sensor Factory