Mémoire

Optimisation de l'utilisation de la mémoire Linux

Optimisation de l'utilisation de la mémoire Linux
Dans la première partie de cette série, nous avons examiné de plus près l'espace Swap, et la deuxième partie traitait des outils et des commandes pour gérer la mémoire. Maintenant, nous allons discuter de divers paramètres et stratégies pour optimiser la mémoire et son utilisation en général. Cela couvre la quantité de mémoire, l'accélération de l'accès et la stratégie d'utilisation interne.

Quantité de mémoire

Comme déjà discuté dans la première partie, la mémoire entière est appelée mémoire virtuelle et se compose à la fois de mémoire physique et d'espace d'échange. La disponibilité de la mémoire physique dépend du matériel intégré à la machine ainsi que de la quantité de mémoire que le processeur peut adresser, en fait. A titre d'exemple, les systèmes d'exploitation 32 bits ont une limite de 4G de mémoire, uniquement (2^32bit), alors que les systèmes d'exploitation basés sur 64bit autorisent théoriquement jusqu'à 16 EB (2^64bit).

Pour être précis, la limitation est la carte mère avec le processeur lui-même, les modules de mémoire pris en charge par cette carte mère et les modules de mémoire spécifiques qui sont branchés dans les emplacements mémoire de la carte mère. Une façon de maximiser la mémoire disponible du système consiste à utiliser des modules de mémoire similaires qui ont la plus grande taille possible. La deuxième façon est d'utiliser la mémoire d'échange comme déjà expliqué dans la première partie.

Accès à la mémoire

Ensuite, une amélioration de la vitesse d'accès de la mémoire entre en considération. Dans un premier temps, la limite physique est donnée par le module mémoire lui-même. Vous ne pouvez pas aller en dessous des limites physiques du matériel. Au deuxième, un disque virtuel, et au troisième, l'utilisation de zRAM peut accélérer l'accès à la mémoire. Nous allons discuter de ces deux technologies plus en détail.

Création d'un disque virtuel

Un disque virtuel est un bloc de mémoire que le système d'exploitation gère comme un périphérique physique sur lequel stocker des données - un disque dur entièrement conservé en mémoire. Ce périphérique temporaire existe dès que le système démarre et active le disque virtuel, et le système désactive le disque virtuel ou s'arrête. Gardez à l'esprit que les données que vous stockez sur un tel disque virtuel sont perdues après l'arrêt de la machine.

Vous pouvez créer un disque virtuel dynamique via le système de fichiers tmpfs et via le système de fichiers ramfs. Les deux technologies diffèrent considérablement l'une de l'autre. Premièrement, dynamique signifie que la mémoire du disque virtuel est allouée en fonction de son utilisation (vrai pour les deux méthodes). Tant que vous n'y stockez pas de données, la taille du disque virtuel est de 0.

La création d'un ramdisk dynamique via tmpfs est la suivante :

# mkdir /media/ramdisk
# mount -t tmpfs aucun /media/ramdisk

La création d'un disque virtuel dynamique via ramfs est la suivante :

# mkdir /media/ramdisk
# mount -t ramfs ramfs /media/ramdisk

Deuxièmement, en utilisant tmpfs et sauf indication contraire, la taille du disque virtuel est limitée à 50% de la mémoire physique. En revanche un ramdisk basé sur ramfs n'a pas une telle limitation.

La création d'un ramdisk dynamique via tmpfs avec une taille relative de 20% de la mémoire physique est la suivante :

# mkdir /media/ramdisk
# mount -t tmpfs -o size=20% none /media/ramdisk

La création d'un ramdisk dynamique via tmpfs avec une taille fixe de 200M de mémoire physique est la suivante :

# mkdir /media/ramdisk
# mount -t tmpfs -o size=200M aucun /media/ramdisk

Troisièmement, les deux méthodes gèrent l'échange d'une manière différente. Si le système atteint la limite de mémoire d'un disque virtuel basé sur tmpfs, les données du disque virtuel sont échangées. Cela déjoue l'idée d'un accès rapide. D'autre part, le système d'exploitation donne la priorité à la fois au contenu et aux pages de mémoire demandées d'un disque virtuel basé sur ramfs, les conserve en mémoire et échange les pages de mémoire restantes sur le disque.

Dans les exemples ci-dessus, nous avons utilisé /media/disque virtuel comme point de montage. En ce qui concerne les données régulières, la seule partie du système de fichiers Linux qu'il est recommandé d'utiliser sur un disque virtuel est /tmp. Ce répertoire stocke uniquement les données temporaires qui ne persistent pas. La création d'un disque virtuel permanent qui stocke le système de fichiers /tmp nécessite une entrée supplémentaire dans le fichier /etc/fstab comme suit (basé sur ramfs):

ramfs   /tmp     ramfs   valeurs par défaut 0  0

La prochaine fois que vous démarrerez votre système Linux, le disque virtuel sera activé automatiquement.

Utilisation de la zRAM

zRAM signifie Virtual Swap Compressed in RAM, et crée un périphérique de bloc compressé directement dans la mémoire physique. La zRAM entre en action (utilisation) dès qu'il n'y a plus de pages de mémoire physique disponibles sur le système. Ensuite, le noyau Linux essaie de stocker les pages sous forme de données compressées sur le périphérique zRAM.

Actuellement, il n'y a pas de paquet disponible pour Debian GNU/Linux mais Ubuntu. Il s'appelle zram-config. Installez le package et configurez un périphérique zRAM en démarrant simplement le service systemd correspondant comme suit :

# systemctrl démarrer zram-config

Comme indiqué par la sortie de swapon -s, l'appareil est actif en tant que partition Swap supplémentaire. Automatiquement, une taille de 50% de la mémoire est allouée à la zRAM (voir figure 1). Actuellement, il n'y a aucun moyen de spécifier une valeur différente pour la zRAM à allouer.

Pour voir plus de détails sur la partition d'échange compressée, utilisez la commande zramctl. La figure 2 montre le nom du périphérique, l'algorithme de compression (LZO), la taille de la partition d'échange, la taille des données sur le disque et sa taille compressée ainsi que le nombre de flux de compression (valeur par défaut : 1).

Stratégie d'utilisation

Ensuite, nous nous concentrons sur la stratégie d'utilisation de la mémoire. Il y a quelques paramètres pour influencer le comportement de l'utilisation et de la distribution de la mémoire. Cela inclut la taille des pages de mémoire - sur les systèmes 64 bits, elle est de 4M. Ensuite, le paramètre swappiness joue un rôle. Comme déjà expliqué dans la première partie, ce paramètre contrôle le poids relatif accordé à l'échange de la mémoire d'exécution, par opposition à la suppression des pages mémoire du cache des pages système. Aussi, il ne faut pas oublier à la fois la mise en cache et l'alignement des pages mémoire.

Utilisez des programmes qui nécessitent moins de mémoire

Enfin, l'utilisation de la mémoire dépend des programmes eux-mêmes. La plupart d'entre eux sont liés à la bibliothèque C par défaut (libC standard). En tant que développeur, pour minimiser votre code binaire, envisagez d'utiliser une bibliothèque C alternative et beaucoup plus petite à la place. Par exemple, il existe dietlibc [1], uClibc [2] et musl lib C [3]. Le site Web du développeur de musl lib C contient une comparaison approfondie [4] concernant ces bibliothèques en termes de programme C statique le plus petit possible, une comparaison des fonctionnalités ainsi que les environnements de construction correspondants et les architectures matérielles prises en charge.

En tant qu'utilisateur, vous n'aurez peut-être pas à compiler vos programmes. Envisagez de rechercher des programmes plus petits et des cadres différents qui nécessitent moins de ressources. Par exemple, vous pouvez utiliser l'environnement de bureau XFCE au lieu de KDE ou GNOME.

Conclusion

Il existe de nombreuses options pour améliorer l'utilisation de la mémoire. Cela va de l'échange à la compression basée sur la zRAM ainsi que la configuration d'un disque virtuel ou la sélection d'un cadre différent.

Liens et références

Série de gestion de la mémoire Linux

Remerciements

L'auteur tient à remercier Axel Beckert et Gerold Rupprecht pour leur soutien lors de la préparation de cet article.

Top 5 des cartes de capture de jeu
Nous avons tous vu et aimé des gameplays en streaming sur YouTube. PewDiePie, Jakesepticye et Markiplier ne sont que quelques-uns des meilleurs joueur...
Comment développer un jeu sur Linux
Il y a dix ans, peu d'utilisateurs de Linux prédisaient que leur système d'exploitation préféré serait un jour une plate-forme de jeu populaire pour l...
Ports Open Source des moteurs de jeux commerciaux
Les récréations de moteur de jeu gratuites, open source et multiplateformes peuvent être utilisées pour jouer à d'anciens ainsi qu'à certains des titr...