Remarque : Cet article a ete initialement publie en 2014. Certaines etapes, commandes ou versions de logiciels peuvent avoir change. Consultez la documentation actuelle d’Ubuntu pour les informations les plus recentes.

Dans ce guide etape par etape, vous apprendrez a configurer le swappiness dans Ubuntu. Ubuntu est une distribution Linux populaire basee sur Debian, largement utilisee pour les serveurs et les environnements de developpement.

Prerequis

Avant de commencer, assurez-vous d’avoir :

  • Un systeme sous Ubuntu (edition bureau ou serveur)
  • Un acces au terminal avec des privileges sudo
  • Une familiarite de base avec la ligne de commande Linux

Comment : Configurer le Swappiness dans Ubuntu

Dans un de mes articles precedents sur (</install-swap-file-windows-azure-ubuntu-vm/> “How to: Install a swap file in a Windows Azure Ubuntu VM”), j’ai couvert comment installer un espace swap pour une VM Windows Azure. J’ai deploye le swap principalement comme precaution contre le manque de memoire, ce qui pourrait empecher les applications de fonctionner correctement et le site pourrait tomber en panne. Pour eviter cela, vous deployez le swap qui reduira probablement la vitesse de vos services, mais au moins ils ne planteront pas. Cela vous fait effectivement gagner du temps pour resoudre vos problemes de memoire au prix de l’utilisation du disque dur, entrainant des latences supplementaires. Donc, jusqu’ici, la configuration de votre memoire swap semble geniale, mais attention, si votre swappiness n’est pas configuree correctement, vous ferez face a des latences inutiles. Dans mon cas, j’avais encore plus d’un gigaoctet de memoire disponible, mais j’utilisais deja beaucoup le swap. Il n’y a aucun interet a utiliser le swap quand il reste beaucoup de RAM ; vous ne faites que deplacer des informations dans et hors de la memoire qui pourraient facilement toutes tenir en memoire. Le swappiness controle donc l’agressivite avec laquelle le systeme d’exploitation doit utiliser l’espace swap.

Qu’est-ce que le Swappiness ?

Le parametre swappiness dans Ubuntu controle la tendance du noyau du systeme d’exploitation a deplacer la memoire (informations) utilisee par les processus hors de la memoire physique vers le disque swap. Comme mentionne ci-dessus, l’utilisation d’un disque dur est par nature supposee etre beaucoup plus lente que l’utilisation de la RAM. Cela se traduit par des applications qui mettent plus de temps a repondre, en particulier celles qui sont basculees sur le disque (les autres souffrent indirectement a cause des operations d’E/S supplementaires, mais au moins elles sont deja presentes en RAM).

Il y a quelques points importants a connaitre sur l’utilisation de ce parametre :

  • Les valeurs de Swappiness acceptees vont de 0 a 100 inclus.
  • Une valeur de 0 indique au noyau d’eviter le swap a tout prix.
  • Une valeur de 100 indique qu’il doit basculer agressivement les informations en memoire.

Jusqu’ici, vous devez penser apres avoir lu mes reflexions sur le swappiness que 0 est la voie a suivre : soyez prudent avec ce choix. La bonne reponse depend de nombreux facteurs, y compris vos applications, l’utilisation et la capacite du systeme. Par exemple, supposons que vous utilisiez une valeur de 0 et que la memoire soit presque pleine. Si vous essayez de lancer une application volumineuse, il y aura un delai jusqu’a ce que le systeme soit capable de liberer suffisamment de memoire en faisant du swap avant que vous puissiez utiliser votre application. Prenez l’autre extreme de 100 : vous devriez a tout moment avoir beaucoup de RAM pour lancer de gros processus, mais le taux de reponse global de votre machine subira une baisse de performance.

Ubuntu a determine par defaut qu’une valeur de 60 est ideale pour la plupart des utilisateurs. Elle permet d’avoir de la memoire disponible pour lancer de nouvelles applications tout en n’etant pas assez agressive pour causer une enorme baisse de performance. Mais comme je l’ai mentionne, la meilleure valeur pour votre machine depend de l’utilisation que vous faites du systeme. Par exemple, je fais tourner un serveur qui lance occasionnellement des processus pour traiter les requetes entrantes, mais leur taille est relativement petite et la plupart du temps j’ai toujours beaucoup de RAM pour gerer tous les services necessaires. Dans mon cas, j’aime utiliser une valeur de swappiness de 10. Vous devriez reflechir a vos habitudes generales d’utilisation de la RAM et n’hesitez pas a experimenter. Je m’attends a ce que les valeurs limites (0 et 100) soient trop extremes, mais vous pouvez voir quelle est la difference entre 25 et 75 par exemple.

Comment configurer le Swappiness ?

C’est plutot facile. Il y a un fichier (/proc/sys/vm/swappiness) qui est utilise pendant le fonctionnement et qui indique le swappiness actuel sous lequel le systeme fonctionne. Modifier cette valeur entrainera un changement du swappiness du systeme pour la duree du noyau (c’est-a-dire jusqu’a ce que vous redemarriez / eteigniez et rallumiez).

Si vous voulez voir la valeur, je recommande d’utiliser cat plutot que nano pour eviter de modifier accidentellement le fichier :

$ cat /proc/sys/vm/swappiness
60

Vous verrez probablement la valeur par defaut de 60, sauf si elle a deja ete modifiee. Comme je l’ai mentionne, vous pourriez modifier le fichier, desactiver et reactiver le swap pour que le changement prenne effet uniquement pendant votre session actuelle. Si vous modifiez la valeur via la commande sysctl (je recommande de ne pas modifier directement le fichier /etc/sysctl.conf pour eviter de casser accidentellement autre chose). Ce changement ne prendra effet qu’apres le redemarrage de la machine. Supposons que vous vouliez utiliser un niveau de swappiness de 15 :

$ sysctl vm.swappiness=15

Si vous le souhaitez, vous pouvez executer swapoff -a et swapon -a pour appliquer votre nouvelle valeur de swappiness au systeme (au lieu de devoir redemarrer, cela pourrait etre une option interessante).

N’oubliez pas de verifier votre utilisation de la memoire avec free -m pour voir la taille et l’utilisation du swap.

Quelle valeur de swappiness recommandez-vous ?

C’est mon opinion personnelle et vous devriez surveiller votre utilisation du swap et les performances pour l’ajuster finement. Je pense que c’est un bon point de depart, mais utilisez votre propre jugement, experimentez et decidez ce qui est le mieux pour vous.

Swappiness recommande Memoire generalement disponibleTaille relative des nouveaux processusSwappiness recommande
BeaucoupPetit< 10
BeaucoupMoyen10 < x < 20
BeaucoupGrand15 < x < 30
MoyenPetit10 < 15
MoyenMoyen15 < x < 25
MoyenGrand25 < x < 45
FaiblePetit35 < x < 60
FaibleMoyen50 < x < 70
FaibleGrand65 < x < 90

Tout devient relatif mais vous comprenez l’idee generale : plus vous avez generalement de memoire libre ou disponible, plus le swappiness que vous pouvez utiliser est faible. De plus, plus les nouveaux processus que vous lancez sont volumineux, plus le swappiness dont vous aurez besoin sera eleve pour qu’ils puissent correctement tenir en memoire si necessaire. Considerez le scenario suivant : vous avez une machine avec 16 Go de RAM et vous n’en utilisez generalement que 2 Go. Vous n’avez jamais utilise plus de 13 Go et ne vous attendez pas a le faire. Donc, meme si les nouveaux processus utilisent beaucoup de RAM, vous ne manquez jamais vraiment de memoire, donc une valeur de 10 ou moins serait recommandee (meme 0).

Si vous le souhaitez, n’hesitez pas a fournir via les commentaires les specifications de votre systeme, vos habitudes d’utilisation de la memoire et je pourrai vous aider a choisir une valeur de depart avec laquelle experimenter !

(http://img.zemanta.com/zemified_h.png?x-id=5a719463-cced-4eb4-b803-0e78fba9e3bb)](http://www.zemanta.com/?px “Enhanced by Zemanta”)

Resume

Vous avez appris avec succes a configurer le swappiness dans Ubuntu. Si vous rencontrez des problemes, verifiez les prerequis et assurez-vous que votre environnement Ubuntu est correctement configure.

Articles connexes