{"id":20866,"date":"2026-08-21T15:06:21","date_gmt":"2026-08-21T13:06:21","guid":{"rendered":"https:\/\/webhosting.de\/vm-swappiness-optimieren-linux-hosting-server-tuning-swap\/"},"modified":"2026-08-21T15:06:21","modified_gmt":"2026-08-21T13:06:21","slug":"optimisation-du-parametre-swappiness-hebergement-linux-reglage-des-serveurs-swap","status":"publish","type":"post","link":"https:\/\/webhosting.de\/fr\/vm-swappiness-optimieren-linux-hosting-server-tuning-swap\/","title":{"rendered":"R\u00e9gler correctement le param\u00e8tre vm.swappiness pour optimiser les performances du serveur"},"content":{"rendered":"<p>Je vais vous montrer comment configurer vm.swappiness afin que les services Web et les bases de donn\u00e9es sur les serveurs d'h\u00e9bergement r\u00e9agissent plus rapidement et g\u00e9n\u00e8rent moins d'op\u00e9rations d'E\/S. Gr\u00e2ce \u00e0 des \u00e9tapes claires, des valeurs de d\u00e9part judicieuses et un suivi efficace, vous tirerez le meilleur parti de la m\u00e9moire vive disponible et r\u00e9duirez <strong>Latence<\/strong> et \u00e9vite ainsi un \u00e9change de m\u00e9moire inutile.<\/p>\n\n<h2>Points centraux<\/h2>\n\n<p>Ces points te donnent un aper\u00e7u rapide des r\u00e9glages que tu peux mettre en \u0153uvre imm\u00e9diatement.<\/p>\n<ul>\n  <li><strong>Comportement de Swappiness<\/strong>: D\u00e9termine \u00e0 quel moment le noyau commence \u00e0 d\u00e9placer la m\u00e9moire vive vers l'espace d'\u00e9change.<\/li>\n  <li><strong>En fonction de la charge de travail<\/strong>: Adapter les valeurs au type d'application, par exemple une base de donn\u00e9es ou un site web.<\/li>\n  <li><strong>Tester temporairement<\/strong>: V\u00e9rifier d'abord en conditions r\u00e9elles, puis valider d\u00e9finitivement.<\/li>\n  <li><strong>Disposition des swaps<\/strong>: Tenir compte de la taille, du contexte et des priorit\u00e9s.<\/li>\n  <li><strong>Suivi<\/strong>: Surveiller et ajuster les E\/S, la m\u00e9moire vive et les temps de r\u00e9ponse.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/optimale-servereinstellung-5932.png\" alt=\"Serveur optimis\u00e9 pour des performances exceptionnelles\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Qu'est-ce que vm.swappiness et comment fonctionne-t-il ?<\/h2>\n\n<p>Le param\u00e8tre du noyau <strong>vm.swappiness<\/strong> d\u00e9termine l\u2019intensit\u00e9 avec laquelle Linux d\u00e9place les pages m\u00e9moire de la RAM vers l\u2019espace d\u2019\u00e9change. Vous trouverez la valeur actuelle dans le pseudo-syst\u00e8me de fichiers sous \/proc\/sys\/vm\/swappiness et pouvez la modifier \u00e0 la vol\u00e9e ou de mani\u00e8re permanente. Une valeur \u00e9lev\u00e9e entra\u00eene un transfert plus pr\u00e9coce vers l'espace d'\u00e9change, tandis qu'une valeur faible conserve plus longtemps le contenu en RAM. L'objectif est de trouver un bon \u00e9quilibre entre l'utilisation de la RAM, le cache de pages et un comportement contr\u00f4l\u00e9 de l'espace d'\u00e9change. Je garde \u00e0 l'esprit que la RAM est bien plus rapide que n'importe quel SSD, c'est pourquoi je privil\u00e9gie <strong>M\u00e9moire de travail<\/strong> clairement avant le swap.<\/p>\n\n<h2>Pourquoi la \u00ab swappiness \u00bb est importante sur les serveurs d'h\u00e9bergement<\/h2>\n\n<p>Sur les serveurs Web et d'applications, le param\u00e8tre <strong>Swappiness<\/strong> concernant le temps de r\u00e9ponse et le d\u00e9bit. Un swap agressif g\u00e9n\u00e8re une charge d'E\/S suppl\u00e9mentaire et ralentit les requ\u00eates, en particulier dans le cas de charges de travail fortement ax\u00e9es sur les bases de donn\u00e9es. \u00c0 l'inverse, des valeurs trop faibles comportent le risque d'\u00e9v\u00e9nements OOM ult\u00e9rieurs, qui mettent fin brusquement aux processus. C'est pourquoi j'\u00e9value non seulement la m\u00e9moire vive et l'espace d'\u00e9change, mais aussi les pics de charge typiques, les caches et les mod\u00e8les de requ\u00eates. R\u00e9duire les latences permet d'\u00e9viter les saccades et de maintenir des transactions nettement plus fluides <strong>liquide<\/strong>.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/servermeeting_swappiness_3847.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Recommandations en fonction de la charge de travail<\/h2>\n\n<p>Une valeur unique convient rarement \u00e0 tous les cas de figure ; c'est pourquoi je commence par des plages \u00e9prouv\u00e9es dans la pratique, puis je les adapte en fonction des donn\u00e9es de mesure. Les bases de donn\u00e9es tirent profit de r\u00e9glages tr\u00e8s bas, tandis que les serveurs web purs supportent souvent des valeurs l\u00e9g\u00e8rement plus \u00e9lev\u00e9es. Les syst\u00e8mes de test ou de d\u00e9veloppement peuvent fonctionner plus pr\u00e8s des valeurs par d\u00e9faut, car le confort y joue un r\u00f4le plus important. J'utilise le sch\u00e9ma suivant comme point de d\u00e9part pragmatique pour <strong>H\u00e9bergement<\/strong>- les charges de travail. Ensuite, je surveille les op\u00e9rations d'E\/S, l'utilisation de l'espace d'\u00e9change et les temps de r\u00e9ponse, puis j'affine les r\u00e9glages en fonction des besoins.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Charge de travail<\/th>\n      <th>Swappiness recommand\u00e9<\/th>\n      <th>Objectif<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>Bases de donn\u00e9es<\/strong> (MySQL, PostgreSQL)<\/td>\n      <td>0\u201310<\/td>\n      <td>Conserver les donn\u00e9es en m\u00e9moire tampon dans la RAM, limiter les latences<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Temps r\u00e9el \/ Faible latence<\/strong><\/td>\n      <td>0\u201310<\/td>\n      <td>\u00c9viter les pics d'E\/S gr\u00e2ce \u00e0 la m\u00e9moire swap<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Serveur web<\/strong> avec des caches<\/td>\n      <td>10-20 (parfois 10-30)<\/td>\n      <td>D\u00e9placer les pages inactives, conserver les requ\u00eates actives en m\u00e9moire vive<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>D\u00e9veloppement\/Tests<\/strong><\/td>\n      <td>30-60<\/td>\n      <td>Le confort et la stabilit\u00e9 avant la latence<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>V\u00e9rifier la valeur actuelle<\/h2>\n\n<p>Avant de modifier des valeurs, je lis l'\u00e9tat et je consigne les <strong>Ligne de base<\/strong>. Pour cela, j'utilise soit la commande `cat \/proc\/sys\/vm\/swappiness`, soit `sysctl vm.swappiness` ; ces deux m\u00e9thodes renvoient une valeur telle que 60. En parall\u00e8le, je v\u00e9rifie l'utilisation de la m\u00e9moire vive et de l'espace d'\u00e9change \u00e0 l'aide de la commande `free -h`. Avec `swapon \u2013show`, j\u2019identifie la taille, la priorit\u00e9 et le support des p\u00e9riph\u00e9riques de swap actifs. Ces donn\u00e9es de d\u00e9part m\u2019aident \u00e0 \u00e9valuer les effets ult\u00e9rieurement <strong>attribuer<\/strong> de pouvoir.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/server-optimierung-swappiness-4287.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Tester temporairement plut\u00f4t que de modifier d\u00e9finitivement tout de suite<\/h2>\n\n<p>Je vais d'abord installer Swappiness \u00e0 titre d'essai, afin de voir les r\u00e9actions en conditions r\u00e9elles <strong>Dernier<\/strong> \u00e0 observer. La commande `sysctl vm.swappiness=10` prend effet imm\u00e9diatement, mais ne dure que jusqu'au red\u00e9marrage. Pendant les tests, je surveille `top` ou `htop`, je v\u00e9rifie `vmstat` et `iostat` et je mesure les temps de r\u00e9ponse des services. Si le taux d'utilisation de la m\u00e9moire swap diminue et que les latences restent stables, je proc\u00e8de par \u00e9tapes raisonnables. Ce n'est que lorsque les indicateurs sont convaincants que j'enregistre la valeur <strong>durable<\/strong> fixe.<\/p>\n\n<h2>Configurer de mani\u00e8re permanente<\/h2>\n\n<p>Si la valeur test\u00e9e convient, je l\u2019ajoute dans un fichier de configuration sysctl et je recharge les param\u00e8tres. Dans \/etc\/sysctl.conf, j\u2019ajoute la ligne vm.swappiness=10 et je l\u2019active avec sysctl -p. Pour plus de clart\u00e9, je pr\u00e9f\u00e8re utiliser un fichier d\u00e9di\u00e9 dans \/etc\/sysctl.d\/, par exemple 99-swappiness.conf, et le charger via sysctl \u2013system. Cela facilite la gestion des versions et l'int\u00e9gration dans des processus automatis\u00e9s. Cet article fournit un aper\u00e7u d\u00e9taill\u00e9 des param\u00e8tres associ\u00e9s : <a href=\"https:\/\/webhosting.de\/fr\/optimisation-des-performances-dun-serveur-dhebergement-web-via-sysctl\/\">R\u00e9glage sysctl<\/a>, qui m'aide \u00e0 organiser les modifications et <strong>Clart\u00e9<\/strong> apporte.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/serverperformance_8432.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Taille de la zone d'\u00e9change, disposition de la m\u00e9moire et supports de donn\u00e9es<\/h2>\n\n<p>La \u00ab swappiness \u00bb n'agit jamais de mani\u00e8re isol\u00e9e, c'est pourquoi j'\u00e9value la taille et l'emplacement du <strong>Swap<\/strong> toujours \u00e0 port\u00e9e de main. Un espace d'\u00e9change insuffisant se remplit rapidement, tandis qu'un espace d'\u00e9change surdimensionn\u00e9 allonge les phases d'E\/S en cas de charge importante. Sur un SSD ou un NVMe, l'espace d'\u00e9change est plus rapide que sur un disque dur, mais la m\u00e9moire vive reste bien plus rapide, de plusieurs ordres de grandeur. La mise en place de plusieurs p\u00e9riph\u00e9riques d'\u00e9change avec des priorit\u00e9s permet d'utiliser en premier le support le plus rapide. Si vous souhaitez approfondir les avantages et les inconv\u00e9nients, vous trouverez dans cet aper\u00e7u sur <a href=\"https:\/\/webhosting.de\/fr\/le-swap-est-il-utile-en-hebergement-ou-nuit-il-aux-performances-ramboost\/\">Swap dans l'h\u00e9bergement<\/a> des pistes de r\u00e9flexion utiles pour les <strong>Cabinet m\u00e9dical<\/strong>.<\/p>\n\n<h2>D\u00e9roulement des op\u00e9rations au cabinet : \u00e9tape par \u00e9tape<\/h2>\n\n<p>Je commence par faire le point : je note la valeur actuelle de Swappiness, l'utilisation de la RAM et de l'espace d'\u00e9change, ainsi que l'activit\u00e9 du processeur et des E\/S, puis je les enregistre sous forme de <strong>R\u00e9f\u00e9rence<\/strong> Sauvegarder. Ensuite, je classe la charge de travail : principalement base de donn\u00e9es, Web avec cache, exploitation mixte ou en conteneurs. Puis je d\u00e9finis une valeur cible : de 0 \u00e0 10 pour les bases de donn\u00e9es, g\u00e9n\u00e9ralement de 10 \u00e0 20 pour le Web, et je proc\u00e8de avec prudence pour les charges mixtes. Je d\u00e9finis cette valeur \u00e0 titre temporaire, j\u2019observe plusieurs phases de charge et je compare les m\u00e9triques. Si les r\u00e9sultats concordent de mani\u00e8re r\u00e9p\u00e9t\u00e9e, je fixe la valeur, je documente la modification et je la v\u00e9rifie apr\u00e8s une mise \u00e0 jour du noyau, du mat\u00e9riel ou <strong>Release<\/strong>-Changer \u00e0 nouveau.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/serverperformance_vm_4512.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Sc\u00e9narios sp\u00e9cifiques : conteneurs, machines virtuelles et cloud<\/h2>\n\n<p>Dans les conteneurs et les machines virtuelles, j'\u00e9value le param\u00e8tre \u00ab swappiness \u00bb au niveau de l'h\u00f4te et de l'invit\u00e9 <strong>ensemble<\/strong> . Les orchestrateurs tels que Kubernetes tirent g\u00e9n\u00e9ralement parti de param\u00e8tres tr\u00e8s bas sur les n\u0153uds de travail afin de limiter les latences des pods. Dans les machines virtuelles, je d\u00e9finis en interne des valeurs adapt\u00e9es, tout en veillant \u00e0 ce que l\u2019hyperviseur ne fonctionne pas \u00e0 l\u2019encontre de ces r\u00e9glages. Dans les configurations cloud \u00e9lastiques, des valeurs prudentes aident \u00e0 lisser les pics jusqu\u2019\u00e0 ce que la mise \u00e0 l\u2019\u00e9chelle prenne effet. J\u2019\u00e9vite qu\u2019un seul conteneur, en raison d\u2019une utilisation intensive de la m\u00e9moire virtuelle, ne monopolise l\u2019ensemble de la <strong>Plate-forme<\/strong> freine.<\/p>\n\n<h2>Monitoring et recherche d'erreurs<\/h2>\n\n<p>Je consid\u00e8re qu\u2019une charge d\u2019E\/S \u00e9lev\u00e9e alors que de la RAM est encore disponible, des temps de r\u00e9ponse irr\u00e9guliers et des requ\u00eates de base de donn\u00e9es lentes sont des signes avant-coureurs typiques d\u2019un param\u00e8tre \u00ab swappiness \u00bb inadapt\u00e9. Je v\u00e9rifie ces sch\u00e9mas \u00e0 l\u2019aide de vmstat, iostat, sar ainsi que des m\u00e9triques issues de ma pile d\u2019observabilit\u00e9. Si le syst\u00e8me utilise beaucoup d\u2019espace d\u2019\u00e9change malgr\u00e9 de la m\u00e9moire RAM libre, je r\u00e9duis g\u00e9n\u00e9ralement le param\u00e8tre de swappiness. Si je constate des journaux OOM ou des interruptions en cas de m\u00e9moire RAM insuffisante, j\u2019augmente mod\u00e9r\u00e9ment le param\u00e8tre de swappiness ou j\u2019ajuste la configuration de l\u2019espace d\u2019\u00e9change. Le tableau suivant r\u00e9pertorie les sympt\u00f4mes d\u2019un probable <strong>Cause<\/strong> et donne une premi\u00e8re orientation.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Sympt\u00f4me<\/th>\n      <th>Cause probable<\/th>\n      <th>Prochaine \u00e9tape<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>E\/S \u00e9lev\u00e9es<\/strong> lorsque la m\u00e9moire vive est libre<\/td>\n      <td>Niveau de \u00ab swappiness \u00bb trop \u00e9lev\u00e9<\/td>\n      <td>R\u00e9duire la valeur, mesurer l'impact<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>\u00c9v\u00e9nements OOM<\/strong> en charge<\/td>\n      <td>Swappiness trop faible ou espace d'\u00e9change insuffisant<\/td>\n      <td>Augmenter la valeur, v\u00e9rifier la taille du swap<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Requ\u00eates lentes<\/strong> malgr\u00e9 la r\u00e9serve de puissance du processeur<\/td>\n      <td>M\u00e9moire tampon de la base de donn\u00e9es transf\u00e9r\u00e9e<\/td>\n      <td>Valeur comprise entre 0 et 10, analyser le tampon DB<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Pics de charge<\/strong> sans goulot d'\u00e9tranglement au niveau du processeur<\/td>\n      <td>Pics d'E\/S induits par le swap<\/td>\n      <td>R\u00e9duire le taux de swappiness, v\u00e9rifier les acc\u00e8s au cache<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Comprendre les indicateurs granulaires<\/h2>\n\n<p>Pour \u00e9valuer objectivement le param\u00e8tre \u00ab swappiness \u00bb, j'examine de plus pr\u00e8s les compteurs du noyau. Dans \/proc\/vmstat, les variables pswpin et pswpout indiquent respectivement le nombre de pages charg\u00e9es et d\u00e9charg\u00e9es. Les variables pgscan_kswapd_* et pgsteal_* montrent le degr\u00e9 d\u2019agressivit\u00e9 du r\u00e9cup\u00e9rateur. Si les pgmajfault (erreurs de page majeures) se multiplient, cela indique des rechargements gourmands en E\/S. Je consulte ces valeurs \u00e0 plusieurs reprises ou \u00e0 l'aide de sar -B et sar -W afin d'observer les taux, et pas seulement des instantan\u00e9s. Avec `vmstat 1`, je d\u00e9tecte les `si\/so` (Swap in\/out) et je peux attribuer les pics \u00e0 des \u00e9v\u00e9nements r\u00e9els. En compl\u00e9ment, `\/proc\/pressure\/memory` fournit une estimation de l'intensit\u00e9 avec laquelle les t\u00e2ches sont affect\u00e9es par la pression m\u00e9moire <strong>bloquer<\/strong> (PSI). Si ces valeurs augmentent l\u00e9g\u00e8rement ou fortement, j'ai l\u00e0 une indication claire d'un \u00ab reclaim \u00bb trop agressif ou d'un \u00ab swappiness \u00bb inadapt\u00e9.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/serverperformance-8734.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Swappiness 0 vs. 1 : ce que fait r\u00e9ellement le noyau<\/h2>\n\n<p>On pense souvent que Swappiness=0 d\u00e9sactive compl\u00e8tement la pagination. Ce n'est pas tout \u00e0 fait exact. La valeur 0 indique au noyau d'\u00e9viter autant que possible la pagination et de ne l'utiliser qu'en cas de v\u00e9ritable pression sur la m\u00e9moire. En pratique, une valeur comprise entre 1 et 10 suffit pour obtenir un comportement tr\u00e8s prudent, tandis que la valeur 0 peut, dans certaines versions, entra\u00eener occasionnellement des phases de r\u00e9cup\u00e9ration tardives, mais d\u2019autant plus intenses. Pour les services o\u00f9 la latence est critique, je r\u00e8gle g\u00e9n\u00e9ralement la valeur entre 1 et 5 et je v\u00e9rifie si les valeurs pswpout\/pswpin restent pratiquement \u00e0 z\u00e9ro. Si, avec une valeur de 0, des \u00e9v\u00e9nements OOM surviennent lors de pics de charge, j'augmente l\u00e9g\u00e8rement la valeur afin que le noyau rel\u00e2che la pression plus t\u00f4t et en douceur, plut\u00f4t que brutalement. <strong>faire irruption<\/strong>.<\/p>\n\n<h2>Utiliser Zswap et ZRAM \u00e0 bon escient<\/h2>\n\n<p>Outre le swap classique sur disque, j'utilise Zswap ou ZRAM selon le profil. Zswap compresse les pages transf\u00e9r\u00e9es en m\u00e9moire virtuelle et les conserve d'abord en RAM avant de les transf\u00e9rer sur le support de stockage si n\u00e9cessaire. Cela r\u00e9duit les op\u00e9rations d'E\/S et lisse les latences, mais sollicite davantage le processeur. Sur les h\u00f4tes disposant d'une importante r\u00e9serve de puissance CPU, c'est une <strong>plus rentable<\/strong> Compromis. ZRAM met \u00e0 disposition un espace d'\u00e9change compress\u00e9 directement en RAM \u2013 id\u00e9al pour les charges en rafales ou les tr\u00e8s petites machines virtuelles, dans lesquelles je pr\u00e9f\u00e8re utiliser de la RAM compress\u00e9e plut\u00f4t que des E\/S lentes. Important : je choisis d\u00e9lib\u00e9r\u00e9ment l\u2019un des deux concepts et j\u2019\u00e9tablis les priorit\u00e9s de mani\u00e8re \u00e0 ce que le chemin le plus rapide soit servi en premier. Le param\u00e8tre \u00ab swappiness \u00bb reste un levier de contr\u00f4le : m\u00eame avec Zswap\/ZRAM, je souhaite \u00e9viter les vagues de r\u00e9cup\u00e9ration inutiles.<\/p>\n\n<h2>Cache de page, vfs_cache_pressure et acc\u00e8s au cache<\/h2>\n\n<p>Swappiness interagit avec le cache de pages, qui conserve les fichiers et les inodes en m\u00e9moire vive. Le param\u00e8tre vm.vfs_cache_pressure me permet de contr\u00f4ler l'intensit\u00e9 avec laquelle le noyau lib\u00e8re ces caches au profit de pages anonymes. Des valeurs trop \u00e9lev\u00e9es entra\u00eenent la disparition trop rapide des caches de m\u00e9tadonn\u00e9es, ce qui ralentit les serveurs web. Je commence g\u00e9n\u00e9ralement avec une valeur comprise entre 50 et 100, je mesure les taux de r\u00e9ussite du cache et j\u2019observe l\u2019\u00e9volution des latences au niveau des ressources statiques et des r\u00e9ponses API. L'objectif est de conserver en m\u00e9moire vive les contenus fr\u00e9quemment utilis\u00e9s, sans que les pages rarement consult\u00e9es n'encombrent la m\u00e9moire. Si le taux de r\u00e9ussite reste bon et les E\/S faibles, l'\u00e9quilibre est satisfaisant ; dans le cas contraire, j\u2019ajuste les param\u00e8tres \u00ab swappiness \u00bb et \u00ab vfs_cache_pressure \u00bb dans le <strong>Tandem<\/strong>.<\/p>\n\n<h2>\u00c9viter les \u00ab dirty writebacks \u00bb et les pics d'E\/S<\/h2>\n\n<p>Les chemins d'\u00e9criture influencent les latences tout autant que le swap. Avec les param\u00e8tres vm.dirty_background_ratio\/bytes et vm.dirty_ratio\/bytes, je d\u00e9termine la quantit\u00e9 de cache \u00ab sale \u00bb qui s'accumule avant que le noyau ne proc\u00e8de \u00e0 l'\u00e9criture. Je pr\u00e9f\u00e8re utiliser les valeurs en *_bytes plut\u00f4t que les pourcentages pour d\u00e9finir des limites maximales, en particulier dans les configurations \u00e0 grande m\u00e9moire vive o\u00f9 les pourcentages peuvent g\u00e9n\u00e9rer d\u2019\u00e9normes vagues de r\u00e9\u00e9criture. Objectif : une \u00e9criture continue et pr\u00e9visible plut\u00f4t que des pics sporadiques qui, combin\u00e9s \u00e0 l\u2019espace d\u2019\u00e9change, g\u00e9n\u00e8rent des verrous d\u2019E\/S. Je surveille iostat et les files d\u2019attente de r\u00e9\u00e9criture, et je maintiens les valeurs de mani\u00e8re \u00e0 ce que les SSD\/NVMe soient constamment sollicit\u00e9s, mais sans <strong>\u00e9cras\u00e9<\/strong> \u00eatre.<\/p>\n\n<h2>NUMA, \u00ab Zone Reclaim \u00bb et les h\u00f4tes de grande taille<\/h2>\n\n<p>Sur les syst\u00e8mes NUMA, la localisation de la m\u00e9moire joue un r\u00f4le important. Si vm.zone_reclaim_mode est activ\u00e9, le noyau peut r\u00e9cup\u00e9rer de mani\u00e8re plus agressive de la m\u00e9moire sur le n\u0153ud NUMA local, ce qui peut d\u00e9clencher des pics de r\u00e9cup\u00e9ration ind\u00e9sirables. Pour de nombreuses charges de travail d\u2019h\u00e9bergement, je d\u00e9sactive la r\u00e9cup\u00e9ration par zone et laisse le planificateur se charger du placement afin d\u2019obtenir un comportement plus stable. De plus, je v\u00e9rifie les pages g\u00e9antes transparentes (THP) : les bases de donn\u00e9es r\u00e9agissent souvent mieux \u00e0 THP=never ou madvise, car la d\u00e9fragmentation impr\u00e9vue et les allocations THP peuvent provoquer des pics de latence. Le param\u00e8tre \u00ab swappiness \u00bb peut \u00eatre parfait \u2013 mais si les politiques THP ou NUMA viennent perturber le fonctionnement, les <strong>saccades<\/strong>.<\/p>\n\n<h2>Les subtilit\u00e9s des conteneurs et des cgroups<\/h2>\n\n<p>Avec Cgroups v2, je dispose d\u2019autres leviers en plus du param\u00e8tre \u00ab host-swappiness \u00bb : \u00ab memory.high \u00bb d\u00e9clenche un \u00ab reclaim \u00bb progressif, \u00ab memory.max \u00bb fixe des limites strictes, et \u00ab memory.swap.max \u00bb limite l\u2019utilisation de l\u2019espace d\u2019\u00e9change par charge de travail. Cela m\u2019\u00e9vite que certains conteneurs ne ralentissent l\u2019h\u00f4te en recourant \u00e0 l\u2019espace d\u2019\u00e9change. Je d\u00e9finis des valeurs de swappiness faibles sur le n\u0153ud et j\u2019accorde la priorit\u00e9 aux charges de travail critiques via `memory.low`, afin que leurs hotsets restent plus longtemps en m\u00e9moire vive. Dans Kubernetes, je surveille la mani\u00e8re dont le n\u0153ud g\u00e8re l\u2019espace d\u2019\u00e9change et je teste d\u2019abord les modifications dans des pools hors production. Il est important d\u2019avoir une vue d\u2019ensemble : les param\u00e8tres de l\u2019h\u00f4te, les limites des Cgroups et l\u2019orchestrateur doivent \u00eatre coh\u00e9rents, sinon la pression ne fait que se d\u00e9placer d\u2019un niveau \u00e0 l\u2019autre <strong>autres<\/strong>.<\/p>\n\n<h2>D\u00e9ploiement, automatisation et retour en arri\u00e8re<\/h2>\n\n<p>Je d\u00e9ploie les modifications apport\u00e9es \u00e0 Swappiness de mani\u00e8re contr\u00f4l\u00e9e, comme pour toute optimisation des performances : d\u2019abord sur un petit groupe de n\u0153uds quasi identiques (Canary), puis progressivement \u00e0 plus grande \u00e9chelle. Systemd-sysctl ou la gestion de configuration permettent d\u2019int\u00e9grer ces valeurs de mani\u00e8re reproductible. Je documente les valeurs initiales et finales, les dates et heures, les h\u00f4tes concern\u00e9s et <strong>M\u00e9triques<\/strong>. En pr\u00e9vision d'une rechute, je planifie \u00e0 l'avance la modification inverse (par exemple, sysctl vm.swappiness=60) et je conserve les fichiers sysctl pr\u00e9c\u00e9dents. Pendant les fen\u00eatres de maintenance, je mesure d\u00e9lib\u00e9r\u00e9ment des sc\u00e9narios de charge typiques afin de ne pas confondre les changements avec les fluctuations li\u00e9es \u00e0 l\u2019heure de la journ\u00e9e ou au trafic. C\u2019est la seule fa\u00e7on de garantir que les d\u00e9cisions restent fiables et soient prises en \u00e9quipe. <strong>compr\u00e9hensible<\/strong>.<\/p>\n\n<h2>Id\u00e9es re\u00e7ues courantes et anti-mod\u00e8les<\/h2>\n\n<ul>\n  <li><strong>\u201e Swappiness=0 d\u00e9sactive la m\u00e9moire swap \u201c<\/strong>: Non, le noyau continue d'utiliser la m\u00e9moire swap, mais de mani\u00e8re tr\u00e8s mod\u00e9r\u00e9e.<\/li>\n  <li><strong>\u201e Plus on fait de swap, plus c'est s\u00fbr \u201c<\/strong>: Un espace d'\u00e9change trop important prolonge les phases de charge et masque les goulots d'\u00e9tranglement de la m\u00e9moire vive, au lieu de les r\u00e9soudre.<\/li>\n  <li><strong>\u201e Avec NVMe, le swapping n'a plus d'importance \u201c<\/strong>: Le NVMe est rapide, mais nettement plus lent que la RAM. Les latences restent perceptibles.<\/li>\n  <li><strong>\u201e Une valeur pour tous les serveurs \u201c<\/strong>: Les charges de travail varient consid\u00e9rablement. Sans mesure, l'optimisation rel\u00e8ve du hasard.<\/li>\n  <li><strong>\u201e Swappiness r\u00e9sout tous les probl\u00e8mes de latence \u201c<\/strong>: Les probl\u00e8mes proviennent souvent des acc\u00e8s au cache, du \u00ab writeback \u00bb, du THP, des plans de requ\u00eate ou des chemins r\u00e9seau.<\/li>\n<\/ul>\n\n<h2>R\u00e9sum\u00e9 pour un d\u00e9marrage rapide<\/h2>\n\n<p>Je r\u00e8gle g\u00e9n\u00e9ralement vm.swappiness entre 10 et 20 pour les serveurs web et entre 0 et 10 pour les bases de donn\u00e9es, je teste l'effet obtenu et j'observe les E\/S, les latences et <strong>Swap<\/strong>-pourcentage. Je d\u00e9finis la valeur finale via sysctl dans \/etc\/sysctl.d\/ et je veille \u00e0 ce que les modifications restent tra\u00e7ables. Parall\u00e8lement, je m\u2019assure que la configuration de l\u2019espace d\u2019\u00e9change est coh\u00e9rente : taille adapt\u00e9e, support rapide, priorit\u00e9s pertinentes. En cas de pression sur la m\u00e9moire, je surveille \u00e9galement le cache de pages et son comportement ; cet aper\u00e7u fournit une bonne introduction \u00e0 ce sujet : <a href=\"https:\/\/webhosting.de\/fr\/serveur-page-cache-eviction-linux-memory-impression-optimisation-insight\/\">\u00c9viction du cache de page<\/a>, qui m'aide \u00e0 analyser les causes et <strong>Contexte<\/strong> . Cette approche me permet d'obtenir des temps de r\u00e9ponse fiables, d'\u00e9viter les pics de pagination et d'utiliser efficacement la m\u00e9moire vive disponible.<\/p>","protected":false},"excerpt":{"rendered":"<p>D\u00e9couvrez comment optimiser de mani\u00e8re cibl\u00e9e le param\u00e8tre vm.swappiness pour votre serveur d'h\u00e9bergement Linux et am\u00e9liorer consid\u00e9rablement les performances du serveur gr\u00e2ce \u00e0 un r\u00e9glage adapt\u00e9 de l'espace swap sous Linux.<\/p>","protected":false},"author":1,"featured_media":20859,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-20866","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server_vm"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"155","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"vm.swappiness","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"20859","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts\/20866","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/comments?post=20866"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/posts\/20866\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/media\/20859"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/media?parent=20866"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/categories?post=20866"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/fr\/wp-json\/wp\/v2\/tags?post=20866"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}