Table des matières
Fragmentation" >Fragmentation
Maison Tutoriel système Linux Pourquoi la taille de page par défaut du système Linux est de 4 Ko

Pourquoi la taille de page par défaut du système Linux est de 4 Ko

Feb 05, 2024 pm 04:27 PM
linux linux教程 linux系统 linux命令 shell脚本 Linux embarqué bon permis Débuter avec Linux apprentissage Linux

Comme nous le savons tous, Linux gère la mémoire en unités de pages. Qu'il s'agisse de charger des données du disque dans la mémoire ou d'écrire des données de la mémoire sur le disque, le système d'exploitation fonctionnera en unités de pages, ce qui signifie également que si nous n'écrivons qu'un octet de données sur le disque, le système d'exploitation doit également vider toutes les données de la page entière sur le disque.

Il convient de noter que sous Linux, nous pouvons utiliser soit des pages mémoire de taille normale pour les opérations, soit des pages mémoire énormes (Huge Page). Bien que la taille par défaut des pages mémoire sur la plupart des processeurs soit de 4 Ko, certains processeurs utiliseront 8 Ko, 16 Ko). , ou 64 Ko comme taille de page par défaut. En plus des tailles de page mémoire normales, différents processeurs prennent en charge différentes tailles de page énormes. Par exemple, sur un processeur x86, nous pouvons utiliser des pages mémoire d’une taille de 2 Mo.

Les pages mémoire de 4 Ko sont devenues une relique historique, cette taille de page a été largement adoptée à partir des années 1980 et reste encore aujourd'hui. Bien que le matériel d'aujourd'hui soit plus riche que par le passé, nous sommes toujours coincés avec la taille de page mémoire de 4 Ko transmise par le passé. Normalement, nous pouvons voir clairement les spécifications du module de mémoire lors de l'installation de la mémoire, comme le montre l'image ci-dessous :

为什么 Linux 系统默认页大小是 4KB

Figure 1 – Mémoire à accès aléatoire

Aujourd'hui, une taille de page mémoire de 4 Ko n'est peut-être pas le meilleur choix, 8 Ko ou 16 Ko peuvent être un meilleur choix, mais il s'agit d'un compromis fait dans le passé dans certains scénarios. Dans cet article, nous ne devrions pas être trop obsédés par le nombre 4 Ko. Nous devrions accorder plus d'attention aux différents facteurs qui déterminent ce résultat, afin que lorsque nous rencontrons des scénarios similaires, nous puissions considérer le meilleur choix sous ces aspects. L'article présentera les deux facteurs suivants qui affectent la taille de la page mémoire :

Une taille de page trop petite entraînera des entrées de table de pages plus grandes, ce qui augmentera la vitesse de recherche et une surcharge supplémentaire du TLB (Tampon de recherche de traduction) lors de l'adressage ;

Une taille de page excessive gaspillera de l'espace mémoire, provoquera une fragmentation de la mémoire et réduira l'utilisation de la mémoire ;

Au siècle dernier, les deux facteurs ci-dessus ont été pleinement pris en compte lors de la conception de la taille de la page mémoire, et finalement une page mémoire de 4 Ko a été sélectionnée comme taille de page la plus courante du système d'exploitation. Ensuite, nous présenterons en détail leur impact sur les performances. du système d’exploitation.

Entrée du tableau des pages Nous avons introduit la mémoire virtuelle sous Linux dans l'article Pourquoi Linux a besoin de mémoire virtuelle. Ce que chaque processus peut voir est un espace de mémoire virtuelle indépendant n'est qu'un concept logique. Le processus doit toujours accéder à la mémoire virtuelle correspondante. mémoire, la conversion de la mémoire virtuelle en mémoire physique nécessite l'utilisation de tables de pages détenues par chaque processus.

Afin de stocker les données mappées de la mémoire virtuelle de 128 TiB dans le système d'exploitation 64 bits, Linux a introduit une table de pages à quatre couches pour faciliter la traduction des adresses virtuelles dans la version 2.6.10, et une structure de table de pages à cinq couches a été introduite. dans la version 4.11. À l'avenir, davantage de couches de structures de tables de pages pourraient également être introduites pour prendre en charge les adresses virtuelles 64 bits.

Figure 2 – Structure de table de pages à quatre couches为什么 Linux 系统默认页大小是 4KB

Dans la structure de table de pages à quatre niveaux, comme indiqué ci-dessus, le système d'exploitation utilisera les 12 bits les plus bas comme décalage de page, et les 36 bits restants seront divisés en quatre groupes pour représenter l'index du niveau actuel dans le niveau précédent. .Toutes les adresses virtuelles peuvent utiliser la table de pages multicouche mentionnée ci-dessus pour trouver l'adresse physique correspondante.

Étant donné que la taille de l'espace d'adressage virtuel du système d'exploitation est fixe, l'ensemble de l'espace d'adressage virtuel est divisé uniformément en N pages mémoire de même taille, de sorte que la taille de la page mémoire déterminera en fin de compte la structure hiérarchique de la table des pages. Plus précisément, plus la taille de la page virtuelle est petite, plus il y a d'entrées de table de pages et de pages virtuelles dans un seul processus.

PagesCount=VirtualMemory ÷ PageSize

Étant donné que la taille actuelle de la page virtuelle est de 4096 octets, les 12 bits à la fin de l'adresse virtuelle peuvent représenter l'adresse dans la page virtuelle. Si la taille de la page virtuelle est réduite à 512 octets, alors la page originale à quatre niveaux. structure de table ou page à cinq niveaux La structure de la table deviendra cinq ou six couches, ce qui augmentera non seulement la surcharge supplémentaire d'accès à la mémoire, mais augmentera également la taille de la mémoire occupée par les entrées de la table de pages dans chaque processus.

Fragmentation

Étant donné que le dispositif de mappage de mémoire fonctionne au niveau de la page mémoire, le système d'exploitation considère que la plus petite unité d'allocation de mémoire est la page virtuelle. Même si le programme utilisateur ne demande que 1 octet de mémoire, le système d'exploitation demandera une page virtuelle, comme le montre la figure ci-dessous. Si la taille de la page mémoire est de 24 Ko, la demande de 1 octet de mémoire sera appliquée. gaspiller ~99,9939% de l'espace.

为什么 Linux 系统默认页大小是 4KB

Figure 3 – Fragmentation de la grande mémoire

À mesure que la taille des pages mémoire augmente, la fragmentation de la mémoire deviendra de plus en plus grave. Les petites pages mémoire réduiront la fragmentation de la mémoire dans l'espace mémoire et amélioreront l'utilisation de la mémoire. Au siècle dernier, les ressources mémoire n'étaient pas aussi abondantes qu'aujourd'hui. Dans la plupart des cas, la mémoire n'est pas une ressource qui limite l'exécution des programmes. La plupart des services en ligne nécessitent plus de processeurs, pas plus de mémoire. Cependant, la mémoire était en réalité une ressource rare au siècle dernier, donc améliorer l'utilisation de ressources rares est quelque chose que nous devons considérer :

为什么 Linux 系统默认页大小是 4KB

Figure 4 – Prix de la mémoire

Les clés USB dans les années 1980 et 1990 ne faisaient que 512 Ko ou 2 Mo, et le prix était ridiculement élevé. Cependant, la mémoire de plusieurs Go est très courante aujourd'hui, donc même si l'utilisation de la mémoire est toujours très importante, le prix de la mémoire a considérablement baissé aujourd'hui. , la mémoire fragmentée n’est plus un problème clé à résoudre.

En plus de l'utilisation de la mémoire, des pages de mémoire plus grandes augmenteront également la surcharge supplémentaire de copie de mémoire. En raison du mécanisme de copie sur écriture sous Linux, lorsque plusieurs processus partagent la même mémoire, lorsque l'un des processus change, la mémoire virtuelle partagée sera partagée. déclencher la copie des pages mémoire À ce stade, plus la page mémoire du système d'exploitation est petite, plus la surcharge supplémentaire causée par la copie sur écriture est faible.

Résumé

Comme nous l'avons mentionné ci-dessus, une page de mémoire de 4 Ko est le paramètre par défaut décidé au siècle dernier, du point de vue actuel, c'est probablement un mauvais choix. Des architectures telles que arm64 et ia64 peuvent déjà prendre en charge 8 Ko, des pages de mémoire de 16 Ko et d'autres tailles. le prix de la mémoire devient de plus en plus bas et la mémoire système devient de plus en plus grande, une mémoire plus grande peut être un meilleur choix pour le système d'exploitation. Passons en revue les deux décisions concernant les éléments de taille de page :

.
  • Une taille de page trop petite entraînera des entrées de table de pages plus grandes, ce qui augmentera la vitesse de recherche du TLB (Translation lookaside buffer) et une surcharge supplémentaire lors de l'adressage, mais réduira également la fragmentation de la mémoire dans le programme et améliorera l'utilisation de la mémoire ; Une taille de page excessive gaspillera de l'espace mémoire, entraînera une fragmentation de la mémoire et réduira l'utilisation de la mémoire, mais elle peut réduire les entrées de la table des pages dans le processus et le temps d'adressage TLB ;
  • À la fin, examinons quelques questions connexes relativement ouvertes. Les lecteurs intéressés peuvent réfléchir attentivement aux questions suivantes :
  • Quelles sont les différences et les connexions entre les secteurs, les blocs et les pages sous Linux ?

Comment la taille des blocs est-elle déterminée sous Linux ? Quelles sont les tailles courantes ?

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système? Mar 31, 2025 pm 11:54 PM

Comment définir automatiquement les autorisations d'UnixSocket après le redémarrage du système. Chaque fois que le système redémarre, nous devons exécuter la commande suivante pour modifier les autorisations d'UnixSocket: sudo ...

Pourquoi une erreur se produit-elle lors de l'installation d'une extension à l'aide de PECL dans un environnement Docker? Comment le résoudre? Pourquoi une erreur se produit-elle lors de l'installation d'une extension à l'aide de PECL dans un environnement Docker? Comment le résoudre? Apr 01, 2025 pm 03:06 PM

Causes et solutions pour les erreurs Lors de l'utilisation de PECL pour installer des extensions dans un environnement Docker Lorsque nous utilisons un environnement Docker, nous rencontrons souvent des maux de tête ...

Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Apr 01, 2025 pm 02:48 PM

De nombreux développeurs de sites Web sont confrontés au problème de l'intégration de Node.js ou des services Python sous l'architecture de lampe: la lampe existante (Linux Apache MySQL PHP) a besoin d'un site Web ...

Que dois-je faire si Beyond Compare échoue à la sensibilité à la synchronisation des Windows et des fichiers Linux? Que dois-je faire si Beyond Compare échoue à la sensibilité à la synchronisation des Windows et des fichiers Linux? Apr 01, 2025 am 08:06 AM

Le problème de la comparaison et de la synchronisation des fichiers au-delà de la compare: défaillance de la sensibilité à la casse lors de l'utilisation de Beyond ...

Comment configurer la tâche de synchronisation APScheduler en tant que service sur macOS? Comment configurer la tâche de synchronisation APScheduler en tant que service sur macOS? Apr 01, 2025 pm 06:09 PM

Configurez la tâche de synchronisation APScheduler en tant que service sur la plate-forme MacOS, si vous souhaitez configurer la tâche de synchronisation APScheduler en tant que service, similaire à Ngin ...

L'interprète Python peut-il être supprimé dans le système Linux? L'interprète Python peut-il être supprimé dans le système Linux? Apr 02, 2025 am 07:00 AM

En ce qui concerne le problème de la suppression de l'interpréteur Python qui est livré avec des systèmes Linux, de nombreuses distributions Linux préinstalleront l'interpréteur Python lors de l'installation, et il n'utilise pas le gestionnaire de packages ...

See all articles