L'une des réponses à Ai-je besoin d'espace de swap si j'ai plus qu'assez de RAM? m'a fait me demander s'il existe une relation entre la fragmentation de la mémoire mesurée par cat /proc/buddyinfo
et si le swap est utilisé ou non. Pour être plus précis, je me demande si l'utilisation du swap peut réduire la fragmentation de la mémoire. Pendant un travail normal avec swap off sur mon système, j'ai ceci:
tvbox@tvbox-G31M-ES2L:~$ cat /proc/buddyinfo
Node 0, zone DMA 3 3 4 14 16 6 2 0 0 1 0
Node 0, zone Normal 1564 1052 462 356 240 109 33 21 6 1 0
Node 0, zone HighMem 43 1972 839 285 183 109 98 34 16 0 0
tvbox@tvbox-G31M-ES2L:~$ free
total used free shared buffers cached
Mem: 2053888 1821904 231984 171376 299908 812940
-/+ buffers/cache: 709056 1344832
Swap: 0 0 0
Remarque: ce système a un temps de disponibilité qui ne dépasse jamais 18 heures.
Sur un système plus utilisé, j'ai ceci:
me@me-zippy:~$ cat /proc/buddyinfo
Node 0, zone DMA 149 106 70 26 15 5 4 0 0 2 0
Node 0, zone Normal 2455 3527 4651 1421 367 157 61 19 14 3 0
Node 0, zone HighMem 7 43 75 266 166 162 91 43 27 0 0
me@me-zippy:~$ free -h
total used free shared buffers cached
Mem: 7.4G 7.0G 351M 281M 116M 6.0G
-/+ buffers/cache: 967M 6.4G
Swap: 0B 0B 0B
me@me-zippy:~$ uptime
12:01:49 up 3 days, 3:20, 2 users, load average: 0.52, 0.23, 0.17
Vous remarquerez qu'aucun de ces systèmes n'a activé l'échange.
Réponses:
L'échange permet de déplacer des pages physiques, dans le sens où une page utilisée dans un but peut voir son contenu échangé puis utilisé dans un autre but.
Dans un système de gestion de mémoire virtuelle de type jardin, il n'y a pas de fragmentation de la mémoire physique en ce qui concerne les applications. Chaque page allouée par une application peut être prise n'importe où dans la mémoire physique, il n'y a aucune raison pour que deux pages consécutives dans la mémoire virtuelle aient besoin d'avoir une proximité particulière dans la mémoire physique.
Il existe de nombreux cas où la fragmentation de la mémoire est un problème: toutes les circonstances dans lesquelles l'emplacement de la mémoire physique est important. Ceci comprend:
En l'absence de scénarios «complexes», la fragmentation de la mémoire physique pourrait entraîner des problèmes de connexion d'un nouveau périphérique qui nécessite un pool de mémoire contiguë (le noyau conserve ces pools pour cela, mais ils pourraient avoir besoin d'être agrandis si un pilote crée soudainement un grand demande). Si l'utilisation du périphérique est constante, la fragmentation physique n'aurait pas d'importance et, en particulier, n'entraînerait pas le ralentissement ou le manque d'espace d'une application.
Il est possible que la fragmentation de l'espace d'adressage physique conduise à l'utilisation de plus de mémoire dans le noyau pour représenter la liste libre. Je ne pense pas que ce soit le cas sous Linux mais je suis loin d'être un expert de la gestion de sa mémoire.
Pour résumer, autoriser l'échange d'une partie d'une application ne permet pas à cette application d'allouer plus de mémoire, mais pourrait permettre à certains pilotes matériels d'allouer la mémoire dont ils ont besoin.
L'ajout de swap n'a aucun effet sur l'espace mémoire virtuel de l'application. C'est le point de l'échange, après tout - c'est transparent pour les applications.
Cependant, il est possible que l'ajout de swap à une machine ait une influence indirecte sur la fragmentation à l'intérieur de l'espace mémoire virtuel d'une application. Si le système manque de mémoire virtuelle, l'application devra faire avec ce qu'elle a. Si l'application utilise la majeure partie de la mémoire qu'elle a allouée à partir du système d'exploitation, cela entraînera au fil du temps une fragmentation à l'intérieur de cet espace car de petits blocs sont libérés ici et là. Si l'application dispose de plus de mémoire virtuelle (dont une partie est remplacée), cela donne au gestionnaire de mémoire plus de marge de manœuvre et réduit ainsi le risque que l'application manque de mémoire, avec trois blocs distincts de 2 Ko disponibles quand il en souhaite un seul. Objet de 4 Ko.
la source