@PascalHambourg au fait, c’est contradictoire… Car le swap est sur le disque, donc que tu le off/on ou le laisse, ton disque sera sollicité.
Si on laisse le swap tel quel, il n’y a pas d’accès disque tant qu’on n’a pas besoin d’accéder aux données qu’il contient.
En revanche si on arrête le swap, tout son contenu (sauf les données “swapcached”, dont il existe une copie à la fois en mémoire et dans le cache, cf. /proc/meminfo) doit d’abord être rechargé en mémoire. Donc on provoque des accès disque alors qu’on n’a pas besoin d’accéder aux données contenues dans le swap.
Pour couronner le tout, s’il n’y a pas assez de mémoire libre pour contenir toutes les données du swap, il faut d’abord libérer une partie du cache en lui faisant “oublier” des données précédemment copiées depuis le disque qui étaient potentiellement plus souvent accédées que les données dans le swap et devront ultérieurement être rechargées depuis le disque.
Mais cela au moins n’implique pas d’accès disque immédiat ; il existe une catégorie particulière dans le cache : des données dites “sales” (dirty) qui n’ont pas encore été écrites sur le disque. Si la mémoire qu’elles occupent doit être libérée, il faut d’abord les écrire sur le disque, entraînant des accès disque supplémentaires immédiats.
Pour résumer, dans le pire cas on aura
avec swapoff+swapon :
- écriture immédiate des données sales du cache vers le disque
- lecture immédiate de presque toutes les données du swap depuis le disque
- lecture à la demande des données “oubliées” depuis le disque
en laissant le swap :
- lecture à la demande des données du swap depuis le disque