Pagination de la mémoire

Ferranti AtlasEdit

Le premier ordinateur à prendre en charge la pagination a été le supercalculateur Atlas, développé conjointement par Ferranti, l’Université de Manchester et Plessey en 1963. La machine avait une mémoire associative (adressable au contenu) avec une entrée pour chaque page de 512 mots. Le superviseur a géré les interruptions de non-équivalence et a géré le transfert des pages entre le noyau et le tambour afin de fournir un magasin à un niveau aux programmes.

Microsoft WindowsEdit

Windows 3.x et Windows 9xEdit

La pagination est une fonctionnalité de Microsoft Windows depuis Windows 3.0 en 1990. Fenêtres 3.x crée un fichier masqué nommé 386SPART.PAR ou WIN386.SWP à utiliser comme fichier d’échange. Il se trouve généralement dans le répertoire racine, mais il peut apparaître ailleurs (généralement dans le répertoire WINDOWS). Sa taille dépend de l’espace d’échange dont dispose le système (un paramètre sélectionné par l’utilisateur sous Panneau de configuration → Amélioré sous “Mémoire virtuelle”). Si l’utilisateur déplace ou supprime ce fichier, un écran bleu apparaîtra au prochain démarrage de Windows, avec le message d’erreur “Le fichier d’échange permanent est corrompu”. L’utilisateur sera invité à choisir de supprimer ou non le fichier (qu’il existe ou non).

Windows 95, Windows 98 et Windows Me utilisent un fichier similaire et ses paramètres se trouvent sous Panneau de configuration → Onglet Système → Performances → Mémoire virtuelle. Windows définit automatiquement la taille du fichier de page pour commencer à 1,5 × la taille de la mémoire physique et étendre jusqu’à 3 × la mémoire physique si nécessaire. Si un utilisateur exécute des applications gourmandes en mémoire sur un système avec une mémoire physique faible, il est préférable de définir manuellement ces tailles à une valeur supérieure à celle par défaut.

Windows NTEdit

Le fichier utilisé pour la pagination dans la famille Windows NT est pagefile.sys. L’emplacement par défaut du fichier de page se trouve dans le répertoire racine de la partition sur laquelle Windows est installé. Windows peut être configuré pour utiliser l’espace libre sur tous les lecteurs disponibles pour les fichiers de page. Il est cependant nécessaire pour la partition de démarrage (i.e., le lecteur contenant le répertoire Windows) pour avoir un fichier de page dessus si le système est configuré pour écrire des vidages de mémoire du noyau ou complets après un écran bleu de la mort. Windows utilise le fichier d’échange comme stockage temporaire pour le vidage de la mémoire. Lorsque le système est redémarré, Windows copie le vidage de mémoire du fichier de page dans un fichier séparé et libère l’espace utilisé dans le fichier de page.

FragmentationEdit

Cette section doit être mise à jour. Veuillez aider à mettre à jour cet article pour refléter les événements récents ou les informations nouvellement disponibles. (Juillet 2014)

Dans la configuration par défaut de Windows, le fichier de page est autorisé à s’étendre au-delà de son allocation initiale si nécessaire. Si cela se produit progressivement, il peut devenir fortement fragmenté, ce qui peut potentiellement causer des problèmes de performance. Le conseil courant donné pour éviter cela est de définir une seule taille de fichier de page “verrouillée” afin que Windows ne l’étende pas. Cependant, le fichier de page ne se développe que lorsqu’il a été rempli, ce qui, dans sa configuration par défaut, représente 150% de la quantité totale de mémoire physique. Ainsi, la demande totale de mémoire virtuelle soutenue par un fichier de page doit dépasser 250% de la mémoire physique de l’ordinateur avant que le fichier de page ne se développe.

La fragmentation du fichier de page qui se produit lorsqu’il se développe est temporaire. Dès que les régions développées ne sont plus utilisées (au prochain redémarrage, sinon plus tôt), les allocations d’espace disque supplémentaires sont libérées et le fichier de page revient à son état d’origine.

Le verrouillage de la taille d’un fichier de page peut être problématique si une application Windows demande plus de mémoire que la taille totale de la mémoire physique et du fichier de page, ce qui entraîne l’échec des demandes d’allocation de mémoire pouvant entraîner l’échec des applications et des processus système. De plus, le fichier de page est rarement lu ou écrit dans un ordre séquentiel, de sorte que l’avantage de performance d’avoir un fichier de page complètement séquentiel est minime. Cependant, un fichier de page volumineux permet généralement l’utilisation d’applications chargées en mémoire, sans pénalité en plus d’utiliser plus d’espace disque. Bien qu’un fichier de page fragmenté ne soit pas un problème en soi, la fragmentation d’un fichier de page de taille variable créera au fil du temps plusieurs blocs fragmentés sur le lecteur, entraînant la fragmentation d’autres fichiers. Pour cette raison, un fichier de page contigu de taille fixe est préférable, à condition que la taille allouée soit suffisamment grande pour répondre aux besoins de toutes les applications.

L’espace disque requis peut être facilement alloué sur des systèmes avec des spécifications plus récentes (p. ex. un système avec 3 Go de mémoire ayant un fichier de page de taille fixe de 6 Go sur un lecteur de disque de 750 Go, ou un système avec 6 Go de mémoire et un fichier de page de taille fixe de 16 Go et 2 To d’espace disque). Dans les deux exemples, le système utilise environ 0,8% de l’espace disque avec le fichier de page pré-étendu à son maximum.

La défragmentation du fichier de page est également parfois recommandée pour améliorer les performances lorsqu’un système Windows utilise de manière chronique beaucoup plus de mémoire que sa mémoire physique totale. Cette vue ignore le fait que, mis à part les résultats temporaires de l’expansion, le fichier de page ne se fragmente pas avec le temps. En général, les problèmes de performances liés à l’accès aux fichiers de page sont beaucoup plus efficacement traités en ajoutant plus de mémoire physique.

Systèmes Unix et de type Unixsedit

Les systèmes Unix, et d’autres systèmes d’exploitation de type Unix, utilisent le terme “swap” pour décrire l’acte de substituer de l’espace disque à la RAM lorsque la RAM physique est pleine. Dans certains de ces systèmes, il est courant de consacrer une partition entière d’un disque dur à l’échange. Ces partitions sont appelées partitions d’échange. De nombreux systèmes ont un disque dur entier dédié à l’échange, séparé du ou des disques de données, contenant uniquement une partition d’échange. Un disque dur dédié à l’échange est appelé “lecteur d’échange” ou “lecteur de grattage” ou “disque de grattage”. Certains de ces systèmes ne prennent en charge que l’échange vers une partition d’échange; d’autres prennent également en charge l’échange vers des fichiers.

LinuxEdit

Voir aussi: Swap de partitions sur SSD, zswap et zram

Le noyau Linux prend en charge un nombre pratiquement illimité de backends d’échange (périphériques ou fichiers), et prend également en charge l’attribution de priorités de backend. Lorsque le noyau échange des pages hors de la mémoire physique, il utilise le backend le plus prioritaire avec de l’espace libre disponible. Si plusieurs backends d’échange reçoivent la même priorité, ils sont utilisés de manière circulaire (ce qui est quelque peu similaire aux configurations de stockage RAID 0), offrant des performances améliorées tant que les périphériques sous-jacents sont accessibles efficacement en parallèle.

Fichiers et partitionsmodifier

Du point de vue de l’utilisateur final, échangez les fichiers dans les versions 2.6.x et les versions ultérieures du noyau Linux sont pratiquement aussi rapides que les partitions d’échange; la limitation est que les fichiers d’échange doivent être alloués de manière contiguë sur leurs systèmes de fichiers sous-jacents. Pour augmenter les performances des fichiers d’échange, le noyau conserve une carte de l’endroit où ils sont placés sur les périphériques sous-jacents et y accède directement, contournant ainsi le cache et évitant la surcharge du système de fichiers. Quoi qu’il en soit, Red Hat recommande d’utiliser des partitions d’échange. Lorsque vous résidez sur des disques durs, qui sont des supports magnétiques rotatifs, l’un des avantages de l’utilisation de partitions d’échange est la possibilité de les placer sur des zones de disque dur contiguës qui offrent un débit de données plus élevé ou un temps de recherche plus rapide. Cependant, la flexibilité administrative des fichiers d’échange peut l’emporter sur certains avantages des partitions d’échange. Par exemple, un fichier d’échange peut être placé sur n’importe quel système de fichiers monté, peut être réglé à la taille souhaitée et peut être ajouté ou modifié selon les besoins. Les partitions d’échange ne sont pas aussi flexibles; ils ne peuvent pas être agrandis sans utiliser des outils de partitionnement ou de gestion du volume, qui introduisent diverses complexités et des temps d’arrêt potentiels.

SwappinessEdit

Swappiness est un paramètre du noyau Linux qui contrôle le poids relatif accordé à l’échange hors de la mémoire d’exécution, par opposition à la suppression de pages du cache de pages système, chaque fois qu’une demande d’allocation de mémoire ne peut pas être satisfaite à partir de la mémoire libre. Swappiness peut être défini sur des valeurs comprises entre 0 et 200 (inclusivement). Une valeur faible amène le noyau à préférer expulser des pages du cache de pages tandis qu’une valeur plus élevée amène le noyau à préférer échanger des pages mémoire “froides”. La valeur par défaut est 60; la régler plus haut peut entraîner une latence élevée si des pages froides doivent être permutées (lors de l’interaction avec un programme inactif par exemple), tandis que la régler plus bas (même 0) peut entraîner une latence élevée lorsque des fichiers qui avaient été expulsés du cache doivent être lus à nouveau, mais rendra les programmes interactifs plus réactifs car ils seront moins susceptibles d’avoir besoin d’échanger des pages froides. L’échange peut également ralentir davantage les disques durs car il implique beaucoup d’écritures aléatoires, alors que les disques SSD n’ont pas ce problème. Certes, les valeurs par défaut fonctionnent bien dans la plupart des charges de travail, mais les ordinateurs de bureau et les systèmes interactifs pour toute tâche attendue peuvent vouloir abaisser le paramètre tandis que le traitement par lots et les systèmes moins interactifs peuvent vouloir l’augmenter.

Swap deathEdit

Lorsque la mémoire système est très insuffisante pour les tâches en cours et qu’une grande partie de l’activité mémoire passe par un swap lent, le système peut devenir pratiquement incapable d’exécuter une tâche, même si le processeur est inactif. Lorsque chaque processus attend le swap, le système est considéré comme étant en mort de swap.

La mort d’échange peut survenir en raison d’un surcommitment de mémoire mal configuré.

La description originale du problème de “permutation à mort” concerne le serveur X. Si le code ou les données utilisées par le serveur X pour répondre à une frappe ne sont pas dans la mémoire principale, alors si l’utilisateur entre une frappe, le serveur prendra un ou plusieurs défauts de page, exigeant que ces pages soient lues à partir du swap avant que la frappe puisse être traitée, ralentissant la réponse à celle-ci. Si ces pages ne restent pas en mémoire, elles devront à nouveau être saisies pour gérer la prochaine frappe, rendant le système pratiquement insensible même s’il exécute normalement d’autres tâches.

macOSEdit

macOS utilise plusieurs fichiers d’échange. L’installation par défaut (et recommandée par Apple) les place sur la partition racine, bien qu’il soit possible de les placer sur une partition ou un périphérique séparé.

AmigaOS 4Edit

AmigaOS 4.0 a introduit un nouveau système d’allocation de RAM et de défragmentation de la mémoire physique. Il utilise toujours un espace d’adressage partagé plat qui ne peut pas être défragmenté. Il est basé sur la méthode d’allocation de dalle et la mémoire de pagination qui permet l’échange. La pagination a été implémentée dans AmigaOS 4.1 mais peut verrouiller le système si toute la mémoire physique est épuisée. La mémoire d’échange peut être activée et désactivée à tout moment, ce qui permet à l’utilisateur de choisir de n’utiliser que de la RAM physique.

Leave a Reply