Maison  >  Article  >  Opération et maintenance  >  Explication détaillée du rôle de la partition swap sous Linux

Explication détaillée du rôle de la partition swap sous Linux

小云云
小云云original
2018-01-24 13:22:252142parcourir

Cet article présente principalement l'explication détaillée du rôle de la partition swap sous Linux. L'éditeur pense qu'il est assez bon et a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela pourra aider tout le monde.

Cet article étudie principalement le contenu associé à la partition swap sous Linux. L'introduction spécifique est la suivante.

Introduction à la partition Swap

Actualités du site chinois Linux embarqué, la partition Swap du système Linux, c'est-à-dire la zone de swap, le rôle de l'espace Swap peut être simplement décrit comme : lorsque le la mémoire physique du système n'est pas suffisante, il est nécessaire de libérer une partie de l'espace dans la mémoire physique pour que le programme en cours d'exécution puisse l'utiliser. L'espace libéré peut provenir de certains programmes qui n'ont pas fonctionné depuis longtemps. L'espace libéré est temporairement enregistré dans l'espace Swap. Lorsque ces programmes sont sur le point de s'exécuter, les données enregistrées sont restaurées depuis Swap vers la mémoire. De cette manière, le système effectue toujours un Swap lorsque la mémoire physique est insuffisante. En fait, l'ajustement du Swap est crucial pour les performances des serveurs Linux, en particulier des serveurs Web. En ajustant Swap, les goulots d'étranglement des performances du système peuvent parfois être surmontés et les coûts de mise à niveau du système peuvent être économisés.

Comme nous le savons tous, les systèmes d'exploitation modernes ont mis en œuvre la technologie de la « mémoire virtuelle », qui non seulement brise les limites de la mémoire physique en termes de fonctionnalités, mais permet également aux programmes de manipuler un espace plus grand que la mémoire physique réelle. Plus important encore, la « mémoire virtuelle » est un filet de protection de sécurité qui isole chaque processus afin que chaque processus ne soit pas interféré par d'autres programmes.

Peut-être que les utilisateurs d'ordinateurs sont souvent confrontés à ce phénomène. Par exemple, lorsque vous utilisez un système Windows, vous pouvez exécuter plusieurs programmes en même temps. Lorsque vous passez à un programme auquel vous n'avez pas prêté attention depuis longtemps, vous entendrez le bip du disque dur. C'est parce que la mémoire de ce programme a été "volée" par des programmes fréquemment exécutés et placée dans la zone Swap. Par conséquent, une fois ce programme placé sur le front-end, il récupérera ses données de la zone Swap, les mettra en mémoire, puis continuera à s'exécuter.

De plus, toutes les données extraites de la mémoire physique ne seront pas placées dans Swap (si tel est le cas, Swap sera submergé), une partie considérable des données est échangée directement vers le système de fichiers. . Par exemple, certains programmes ouvriront certains fichiers et liront et écriront des fichiers (en fait, chaque programme doit ouvrir au moins un fichier, qui est le programme en cours d'exécution lui-même). Lorsque l'espace mémoire de ces programmes doit être échangé, il y en a). pas besoin de Les données de la partie fichier sont placées dans l'espace Swap, mais elles peuvent être placées directement dans le fichier. S'il s'agit d'une opération de lecture de fichier, les données de la mémoire sont libérées directement et n'ont pas besoin d'être échangées, car elles peuvent être restaurées directement à partir du système de fichiers en cas de besoin la prochaine fois s'il s'agit d'une opération d'écriture de fichier, seules les données modifiées ; doit être enregistré dans le fichier pour la récupération. Mais les données des objets générés par malloc et les nouvelles fonctions sont différentes. Elles nécessitent de l'espace Swap car elles n'ont pas de fichiers « de réserve » correspondants dans le système de fichiers, elles sont donc appelées données de mémoire « anonymes ». Ce type de données inclut également certaines données d'état et variables dans la pile. L’espace Swap est donc un espace d’échange de données « anonymes ».

Dépasser la limite d'échange de 128 M

Certains manuels d'installation de Linux (version nationale chinoise) contiennent les instructions suivantes : L'espace d'échange ne peut pas dépasser 128 M. Pourquoi est-ce dit ? Avant d'expliquer l'origine du nombre « 128M », permettez-moi d'abord de répondre à la question : il n'y a plus de limite à 128M maintenant ! La limite actuelle est de 2G !

L'espace Swap dans le système Linux est paginé et la taille de chaque page est la même que la taille de la page mémoire, ce qui facilite l'échange de données entre l'espace Swap et la mémoire. Lorsque les anciennes versions de Linux implémentaient l'espace Swap, elles utilisaient la première page de l'espace Swap comme « bitmap » pour toutes les pages de l'espace Swap. Cela signifie que chaque bit de la première page correspond à une page d'espace Swap. Si ce bit est à 1, cela signifie que le Swap de cette page est disponible ; s'il est à 0, cela signifie que cette page est un mauvais bloc et ne peut pas être utilisée. De cette façon, le premier bit de mappage Swap doit être 0, car la première page Swap est une page de mappage. De plus, les 10 derniers bits de mappage sont également occupés pour indiquer la version Swap (la version originale est Swap_space, la version actuelle est swapspace2). Ensuite, si la taille d'une page est s, cette méthode d'implémentation de Swap peut gérer un total de "8 * (s - 10) - 1" pages de Swap. Pour le système i386, s=4096, la taille totale de l'espace est de 133890048. Si 1 Mo=2^20 octets est pris en compte, la taille est exactement de 128 Mo.
Le but de la gestion de l'espace Swap de cette manière est d'éviter les mauvais blocs dans l'espace Swap. Si le système détecte qu'il y a des blocs défectueux dans Swap, il marque 0 sur le bitmap correspondant, indiquant que cette page n'est pas disponible. De cette façon, lors de l'utilisation de Swap, les blocs défectueux ne seront pas utilisés et provoqueront des erreurs dans le système.

Les concepteurs de systèmes actuels pensent :

1. La qualité des disques durs est désormais très bonne, avec très peu de blocs défectueux.
2. Même s'il y en a, il n'y en a pas beaucoup. Il suffit de lister les blocs défectueux, et il n'est pas nécessaire de créer un mappage pour chaque page.
3. S'il y a de nombreux blocs défectueux, ce disque dur ne doit pas être utilisé comme espace de swap.

En conséquence, Linux annule désormais la méthode de mappage de bits, annulant ainsi la limite de 128 Mo. Accès directement par adresse, limité à la 2G.

L'impact de la configuration Swap sur les performances

Allouer trop d'espace Swap gaspillera de l'espace disque, et s'il y a trop peu d'espace Swap, des erreurs système se produiront.

Lorsque la mémoire physique du système est épuisée, le système fonctionnera très lentement, mais il peut toujours fonctionner si l'espace de swap est utilisé, une erreur se produira dans le système. Par exemple, un serveur Web peut générer plusieurs processus de service (ou threads) en fonction d'un nombre différent de requêtes. Si l'espace Swap est utilisé, le processus de service ne peut pas être démarré et une erreur « L'application manque de mémoire » se produit généralement. Dans les cas graves, cela entraînera un blocage du processus de service. Par conséquent, l’allocation de l’espace Swap est très importante.

Généralement, l'espace Swap doit être supérieur ou égal à la taille de la mémoire physique, et le minimum ne doit pas être inférieur à 64 Mo. Habituellement, la taille de l'espace Swap doit être de 2 à 2,5. fois la mémoire physique. Cependant, selon l'application, il doit y avoir des configurations différentes : s'il s'agit d'un petit système de bureau, seul un espace Swap plus petit est requis, tandis qu'un grand système serveur nécessite différentes tailles d'espace Swap selon la situation. Surtout pour les serveurs de base de données et les serveurs Web, à mesure que le nombre de visites augmente, les besoins en espace Swap augmenteront également. Pour des configurations spécifiques, veuillez vous référer aux instructions de chaque produit serveur.

De plus, le nombre de partitions Swap a également un grand impact sur les performances. Étant donné que l'opération Swap est une opération d'E/S sur disque, s'il existe plusieurs zones d'E/S Swap, l'allocation de l'espace Swap sera effectuée sur tous les Swaps de manière rotative, ce qui équilibrera considérablement la charge d'E/S et accélérera l'échange d'E/S. S'il n'y a qu'une seule zone de swap, toutes les opérations de swap rendront la zone de swap très occupée, laissant le système dans un état d'attente la plupart du temps, ce qui est très inefficace. À l'aide d'outils de surveillance des performances, vous constaterez que le processeur n'est pas très occupé à ce moment-là, mais que le système est lent. Cela montre que le goulot d'étranglement est l'E/S et que le problème ne peut pas être résolu en augmentant la vitesse du processeur.
Surveillance des performances du système

L'allocation de l'espace Swap est certainement importante, mais la surveillance des performances pendant que le système est en cours d'exécution est encore plus précieuse. Grâce aux outils de surveillance des performances, vous pouvez vérifier divers indicateurs de performances du système et détecter les goulots d'étranglement des performances du système. Cet article présente uniquement certaines commandes et utilisations liées à Swap sous Solaris.

La plus couramment utilisée est la commande Vmstat (il existe de telles commandes sur la plupart des plateformes Unix). Cette commande permet d'afficher la plupart des indicateurs de performances. Par exemple :

vmstat 3

procs memory swap io system cpu 
r b w swpd free buff cache si so bi bo in cs us sy id 
0 0 0 0 93880 3304 19372 0 0 10 2 131 10 0 0 99 
0 0 0 0 93880 3304 19372 0 0 0 0 109 8 0 0 100 
0 0 0 0 93880 3304 19372 0 0 0 0 112 6 0 0 100 
…………

Description de la commande :

Les paramètres suivant vmstat spécifient l'intervalle de temps de capture de l'indicateur de performance. 3 signifie capturer toutes les trois secondes. Il n'est pas nécessaire de lire la première ligne de données, elle n'a aucune valeur. Elle reflète uniquement la performance moyenne depuis le démarrage. À partir de la deuxième ligne, les indicateurs de performances du système sont reflétés toutes les trois secondes. Parmi ces indicateurs de performance, ceux liés au Swap incluent les suivants :

w sous procs

Il indique que la mémoire et l'échange doivent être libérés actuellement (dans les trois secondes) Le nombre de processus sortants.

swpd en mémoire

Il indique la taille de l'espace Swap utilisé.

si sous Swap, donc

si représente la quantité totale actuelle (dans les trois secondes) de mémoire échangée (Swap in) par seconde, en kilo-octets ; représente donc la quantité totale actuelle (dans les trois secondes) de mémoire échangée (Swap out) par seconde, en kilo-octets.

Plus le nombre des indicateurs ci-dessus est élevé, plus le système est occupé. L'activité du système représentée par ces indicateurs est liée à la configuration spécifique du système. L'administrateur système doit noter les valeurs de ces indicateurs lorsque le système fonctionne normalement. Lorsqu'un problème survient avec le système, comparez-le et trouvez rapidement le problème, et formulez des valeurs d'indicateurs standard pour le fonctionnement normal du système. à des fins de performances.

De plus, vous pouvez utiliser Swapon-s pour vérifier facilement l'utilisation actuelle des ressources Swap. Par exemple :

swapon -s

Nom de fichier Type Taille Utilisée Priorité

/dev/hda9 partition 361420 0 3

peut être pratique Vous pouvez voir clairement la taille des ressources utilisées et inutilisées dans l'espace Swap.

La charge de swap doit être maintenue en dessous de 30 % pour garantir de bonnes performances du système.

Pour augmenter l'espace Swap, suivez les étapes suivantes :

1) Devenez un super utilisateur

$su - root

2) Créer un fichier d'échange

dd if=/dev/zero of=swapfile bs=1024 count=65536

Créez un fichier d'échange avec un espace continu.

3) Activer le fichier d'échange

/usr/sbin/swapon swapfile

swapfile fait référence au fichier d'échange créé à l'étape précédente.

4) Maintenant, le fichier Swap nouvellement ajouté a pris effet, mais après le redémarrage du système, les étapes précédentes ne seront pas mémorisées. Par conséquent, le nom du fichier et le type de swap doivent être enregistrés dans le fichier /etc/fstab, tel que :

/path/swapfile none Swap sw,pri=3 0 0

5) Vérifiez si le fichier Swap est ajouté avec

/usr/sbin/swapon -s

pour supprimer l'espace Swap en excès.

1) Devenez un super utilisateur

2) Utilisez la commande Swapoff pour récupérer de l'espace Swap.

#/usr/sbin/swapoff swapfile

3) Modifiez le fichier /etc/fstab et supprimez l'entité de ce fichier Swap.

4) Recyclez ce fichier du système de fichiers.

#rm swapfile

5) Bien sûr, si cet espace de swap n'est pas un fichier, mais une partition, vous devez créer un nouveau système de fichiers puis le monter sur le système de fichiers d'origine .

Recommandations associées :

Analyse de cas Oracle Swap à 100 %

Comment empêcher Oracle d'utiliser la partition d'échange Linux

Comment MySQL évite-t-il d'utiliser la partition d'échange Linux et améliore-t-il les performances de lecture et d'écriture

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn