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 d'échange, et la deuxième partie traitant d'outils et de 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'échange d'espace. 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 aborder, en fait. À titre d'exemple, les systèmes d'exploitation 32 bits ont une limite de 4 g de mémoire, seulement (2 ^ 32 bits), tandis que les systèmes d'exploitation basés sur 64 bits permettent 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 qui sont pris en charge par cette carte mère et les modules de mémoire spécifiques qui sont branchés sur les emplacements de mémoire de la carte mère. Une façon de maximiser la mémoire disponible du système est d'utiliser des modules de mémoire similaires qui ont la plus grande taille que 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 est prise en compte. Au début, la limite physique est donnée par le module de mémoire lui-même. Vous ne pouvez pas descendre en dessous des limites physiques du matériel. Au deuxième rang, un Ramdisk, et au troisième rang l'utilisation de Zram peut accélérer l'accès à la mémoire. Nous discuterons de ces deux technologies plus en détail.

Créer un Ramdisk

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

Vous pouvez créer un Ramdisk dynamique via le système de fichiers TMPFS et via le système de fichiers RAMFS. Les deux technologies diffèrent considérablement les unes des autres. Premièrement, dynamique signifie que la mémoire du Ramdisk est allouée en fonction de son utilisation (vraie pour les deux méthodes). Tant que vous ne stockez pas de données dessus, la taille du Ramdisk est 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 Ramdisk dynamique via Ramfs est la suivante:

# Mkdir / Media / Ramdisk
# Mount -T Ramfs Ramfs / Media / Ramdisk

Deuxièmement, l'utilisation de TMPFS et sauf si explicitement spécifiée, la taille du Ramdisk 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 les TMPF avec une taille relative de 20% de la mémoire physique est la suivante:

# Mkdir / Media / Ramdisk
# Mount -T TMPFS -O Size = 20% Aucun / Media / Ramdisk

La création d'un Ramdisk dynamique via les TMPF avec une taille fixe de 200 m 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. Dans le cas où le système atteint la limite de mémoire d'un Ramdisk basé sur les TMPF, les données du Ramdisk sont échangées. Cela déjoue l'idée d'un accès rapide. D'un autre côté, le système d'exploitation priorise à la fois le contenu et les pages de mémoire demandées d'un Ramdisk basé sur RAMFS, maintient cela en mémoire et échange des pages de mémoire restantes sur disque.

Dans les exemples ci-dessus, nous avons utilisé / Media / Ramdisk comme point de montage. En ce qui concerne les données régulières, la seule partie du système de fichiers Linux qui est recommandée pour être utilisée sur un Ramdisk est / tmp. Ce répertoire stocke les données temporaires, seulement, qui ne persistent pas. La création d'un Ramdisk 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 par défaut 0 0

La prochaine fois que vous démarrez votre système Linux, le Ramdisk sera activé, automatiquement.

Utilisation de Zram

ZRAM signifie un échange virtuel comprimé dans RAM et crée un périphérique de bloc comprimé directement dans la mémoire physique. 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 des pages sous forme de données compressées sur l'appareil ZRAM.

Actuellement, aucun package n'est disponible pour Debian GNU / Linux mais Ubuntu. Il s'appelle Zram-Config. Installez le package et configurez un périphérique ZRAM simplement en démarrant le service Systemd comme suit:

# SystemCtrl Start Zram-Config

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

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 comprend la taille des pages de mémoire - sur les systèmes 64 bits, il est de 4 m. Ensuite, le swappiness des paramètres joue un rôle. Comme déjà expliqué dans la première partie, ce paramètre contrôle le poids relatif donné à l'échange de la mémoire d'exécution, par opposition à la suppression des pages de mémoire du cache de la page du système. De plus, nous ne devons pas oublier à la fois la mise en cache et l'alignement de la page de mémoire.

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

Enfin et surtout l'utilisation de la mémoire dépend des programmes lui-même. 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. Par exemple, il y a diététique [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 plus petit programme C statique possible, une comparaison de fonctionnalités ainsi que les environnements selon la construction 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 différents cadres qui nécessitent moins de ressources. À titre d'exemple, vous pouvez utiliser l'environnement de bureau XFCE au lieu de KDE ou GNOME.

Conclusion

Il existe pas mal d'options pour modifier l'utilisation de la mémoire pour le mieux. Cela va de l'échange à la compression basée sur ZRAM ainsi que de la configuration d'un Ramdisk ou de la sélection d'un cadre différent.

Liens et références

  • [1] Dietlibc, https: // www.fefe.DE / DIETLIBC /
  • [2] UCLIBC, https: // uclibc.org /
  • [3] Musl Lib C, http: // www.mousl-libc.org /
  • [4] Comparaison des bibliothèques C, http: // www.étalabs.net / compare_libcs.html

Série de gestion de la mémoire Linux

  • Partie 1: Gestion de la mémoire du noyau Linux: Swap Space
  • Partie 2: Commandes pour gérer la mémoire Linux
  • Partie 3: Optimisation de l'utilisation de la mémoire Linux

Remerciements

L'auteur tient à remercier Axel Beckert et Gerold Rupprecht pour leur soutien tout en préparant cet article.