Mémoire Swap et paramétrage swappiness

27 juin 2025 — par admin_libra

L’object de cet article est de comprendre le réglage du paramètre « swappiness » et son impact sur la gestion de la mémoire  sous Linux :

1. Comprendre la mémoire virtuelle et le swap

  • Mémoire physique (RAM) : zone de stockage rapide, utilisée pour exécuter les programmes.

  • Mémoire virtuelle : abstraction créée par le noyau pour chaque processus, composée de pages virtuelles mappées sur la RAM ou vers un espace d’échange (swap)

Pages mémoire

La mémoire est découpée en pages (taille fixe, ex. 4 Ko), classées par type :

  • pages de code, données, stack, heap, pages liées aux fichiers, pages anonymes, partagées… .

  • Les pages peu utilisées (typiquement anonymes ou de code peu accédé) peuvent être déplacées vers le swap pour libérer de la RAM

 

2. Qu’est-ce que le swappiness ?

Le swappiness est un paramètre du noyau Linux qui contrôle l’agressivité du mécanisme de swap. Le swap déplace les pages mémoire inactives de la mémoire physique vers l’espace d’échange sur le disque (soit dans un fichier de swap, soit dans une partition de swap). Ce processus vise à équilibrer les données en RAM et à utiliser l’espace de swap lorsque la mémoire physique atteint ses limites.

La valeur du swappiness est un nombre compris entre 0 et 200. Des valeurs faibles indiquent un swapping léger, tandis que des valeurs élevées indiquent un swapping plus agressif. Lorsque la mémoire physique se fait rare, la valeur du swappiness guide la décision du noyau concernant le swap des pages.

Les candidats idéaux pour le swap sont les pages inactives ou peu fréquemment accessibles. Le processus libère de l’espace en RAM en priorisant les processus plus actifs.

La Relation entre Swappiness et Swap

Le paramètre swappiness affecte la manière dont le swap se produit et l’utilisation de l’espace de swap. Lorsque des processus sont échangés de la RAM, ils sont déplacés vers l’espace de swap. Cet espace est une extension de la mémoire physique et aide à libérer de l’espace en RAM.

Processus de « swap out » et « swap in »

L’espace de swap a une taille spécifique, qui détermine la quantité de données qu’un système peut échanger. Une fois que les processus en RAM ont terminé et libéré de la mémoire, les processus échangés reviennent en RAM. Le swappiness ne contrôle pas la taille de l’espace de swap, mais influence plutôt les limites et la fréquence du swapping. 

swapin-swapout
 

En résumé :

  • C’est un paramètre du noyau Linux (vm.swappiness) qui oriente la fréquence et l’agressivité du swap.

  • Valeur entre 0 et 200 (ou 0–100 selon les sources, mais certains noyaux voient jusqu’à 200) 

  • Plus la valeur est élevée, plus le noyau est “prompt” à utiliser le swap ; faible, il privilégie la RAM .

Test typique :

Valeur Comportement
0 Évite le swap autant que possible (usage quasi nul) fr.wikipedia.org
1–10 Swap minimal : recommandé si RAM suffisante (serveurs, desktop, base de données)
60 Valeur par défaut, bon compromis
>100 Swap agressif, pèse équitablement pages anonymes et fichier

Le noyau convertit swappiness en deux priorités : anon_prio = swappiness, file_prio = 200 − swappiness, régissant quel type de pages sont prioritairement swapées 

 

3. Quel réglage choisir ?

Tout dépend des besoins (usage, RAM, type de stockage, performances souhaitées) :

  • Grandes RAM, disques SSD rapides : vous pouvez descendre entre 1–10 pour limiter le swap et garder les données en RAM 

  • Systèmes avec moins de RAM ou besoin de libérer de la mémoire pour cache : valeur par défaut (60) ou plus peut être utile

  • Serveurs dédiés ou workloads intensifs (BD, ML…) : de nombreux témoignages préconisent 0–1–10 pour minimiser les ralentissements

  • 💡 Conseil : testez progressivement par pas (ex. 60 → 30 → 10 → 0) et surveillez la latence, I/O disques, swap, et performance via htop, iotop, vmstat.


4. Vérifier et ajuster la swappiness

Vérification

# Lire les paramètres du pseudo-filesystem kernel
cat /proc/sys/vm/swappiness
sysctl vm.swappiness

Changement temporaire

sudo sysctl vm.swappiness=10   # effet immédiat

Rendre permanent

Ajoutez dans /etc/sysctl.conf ou /etc/sysctl.d/99-swappiness.conf

vm.swappiness = 10

Appliquez immédiatement avec : 

# Appliquer les paramètres noyau immédiatement
sudo sysctl -p

Aucun redémarrage nécessaire

 

5. Ajustement fin et cas d’usage

  • Serveurs BD ou ML lourds : notamment 8–64 Go RAM, souvent recommandés entre 1–10 pour éviter qu’un swap ne ralentisse les calculs .

  • Desktop quotidien : 60 par défaut ou descendre à 10–20 si RAM ≥ 8 Go, SSD rapide, GUI – mais attention aux effets sur la réactivité des apps peu utilisées .

  • Desktops avec HDD lents : rester autour de 60 ou monter pour déplacer les caches plutôt que ralentir les accès disque .

 

En résumé

  1. Swappiness règle l’agressivité du swap entre RAM et disque (0 à 200).

  2. Val. par défaut = 60, bon équilibre général.

  3. Réduire (0–10) si beaucoup de RAM, SSD, besoins de performance.

  4. Augmenter si peu de RAM, besoin d’exploiter le cache disque.

  5. Testez par paliers selon usage spécifique.

  6. Mettez à jour via sysctl, pour permanence modifiez /etc/sysctl.conf.

 

À approfondir

  • Surveillance : outils vmstat, iotop, htop, etc.
Index complet

Tous les articles (46)

Date Article Tags
17/06/2026 APT : Guide complet de la gestion des paquets sous Debian et Ubuntu administration apt debian 17/06/2026 SHELL : Guide des commandes les plus usuelles et commandes couteau suisse awk bash commandes 17/06/2026 SUDO : implémentation et sécurisation des accès sur Debian/Ubuntu administration audit authentification 17/06/2026 ProFTPd : authentification MySQL centralisée, FTPs (SSL) et SFTP sur Debian/Ubuntu authentification debian ftp 09/06/2026 Fail2ban — configuration avancée et filtres personnalisés bruteforce debian fail2ban 07/06/2026 Docker : comment récupérer de l'espace disque cache conteneurs debian 07/06/2026 Graylog 7 — Centralisation et analyse de logs : l'alternative à ELK sur Debian/Ubuntu centralisation debian elk 07/06/2026 OpenZFS : tiering avec L2ARC et SLOG pour les workloads mixtes cache l2arc nvme 07/06/2026 Scripting Bash avancé — pièges, bonnes pratiques et optimisation automatisation bash bonnes-pratiques 07/06/2026 AppArmor sur Debian/Ubuntu : profils, modes et confinement applicatif apparmor audit confinement 07/06/2026 Durcissement SSH — au-delà des clés publiques 2fa authentification cryptographie 27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs