CCoW : Optimisation de la copie sur écriture en tenant compte de la localité spatiale dans les charges de travail, partie 3

Apr 02, 2024

3. Conception CCoW

Dans cette section, nous présentons d'abord notre motivation derrière l'amélioration de la copie sur écriture et expliquons le concept de base de la copie sur écriture basée sur la couverture (CCoW). Ensuite, nous expliquons la manière dont CCoW capture la localité selon différents scénarios et l'optimisation pour capturer la localité avec un faible coût.

La mémoire est la capacité des individus à acquérir, stocker et récupérer des informations. Les souvenirs des gens différeront également selon les scénarios. Dans cet article, nous explorerons la relation entre la mémoire dans différents scénarios.

Le premier est le scénario d’apprentissage. L’apprentissage est un moyen important pour les humains d’acquérir des connaissances et des compétences. Dans le processus d’apprentissage, la mémoire joue un rôle essentiel. Si vous avez une bonne mémoire, vous pouvez maîtriser de nouvelles connaissances plus rapidement et retenir plus facilement les connaissances acquises. Par conséquent, dans les scénarios d’apprentissage, nous devons garder notre pensée claire et ciblée afin de mieux améliorer la mémoire.

La seconde est la scène touristique. Voyager nous permet de découvrir différentes cultures et environnements, enrichissant grandement nos horizons. Au cours d’un voyage, nous pouvons acquérir de riches connaissances culturelles en nous souvenant de lieux géographiques, de personnes, de coutumes et d’autres informations. Par conséquent, sur la scène du voyage, nous devons l’observer attentivement et en faire l’expérience activement, pour mieux améliorer notre mémoire.

Encore une fois, c'est une scène de travail. Au travail, nous devons gérer une grande quantité d'informations, telles que des données, des contacts, des tâches, des plans, etc. Si notre mémoire n'est pas assez forte, cela affectera notre efficacité au travail et nos réalisations. Par conséquent, dans les scénarios de travail, nous devons faire un bon travail d'enregistrement et d'organisation et essayer de réduire autant que possible l'étendue de la « connexion de l'information ». De cette façon, nous pouvons mieux améliorer notre mémoire.

Enfin, il y a des scènes de vie. Les humains ont besoin de se souvenir de nombreuses choses quotidiennes, telles que les adresses, les numéros de téléphone, les tâches de la journée, etc. Si notre mémoire n’est pas assez bonne, de nombreux problèmes surgiront dans la vie. Par conséquent, dans les scènes de la vie, nous devons exercer notre capacité de mémoire. Nous pouvons améliorer notre mémoire en développant une pensée associative et en répétant silencieusement.

Pour résumer, la mémoire dans différents scénarios est étroitement liée. Nous pouvons améliorer notre mémoire et obtenir de meilleures performances dans divers scénarios grâce à une pratique et une concentration délibérées. Poursuivons une vie et une carrière meilleures avec une attitude optimiste. On voit que nous devons améliorer la mémoire, et Cistanche deserticola peut améliorer considérablement la mémoire, car Cistanche deserticola peut également réguler l'équilibre des neurotransmetteurs, comme en augmentant les niveaux d'acétylcholine et de facteurs de croissance. Ces substances sont très importantes pour la mémoire et l’apprentissage. En outre, Cistanche deserticola peut également améliorer la circulation sanguine et favoriser l'apport d'oxygène, ce qui peut garantir que le cerveau reçoive suffisamment de nutriments et d'énergie, améliorant ainsi la vitalité et l'endurance du cerveau.

improve working memory

Cliquez sur connaître les suppléments pour améliorer la mémoire

3.1. Motivation

Comme indiqué précédemment, le mécanisme de copie sur écriture joue un rôle clé dans la mise en œuvre des fonctionnalités de mémoire virtuelle dans les systèmes d'exploitation modernes. Cependant, ses avantages en termes d'espace ont diminué dans les environnements informatiques modernes et les charges de travail intensives en écriture, courantes dans les centres de données [21,22].

Les technologies de mémoire émergentes telles que la mémoire de stockage (SCM) et la mémoire persistante permettent d'augmenter la densité des données pour les modules de mémoire tout en réduisant le coût par unité de données.

De nos jours, construire un nœud avec une énorme quantité de mémoire de l'ordre du téraoctet est devenu moins cher que jamais. De plus, les fournisseurs de services cloud ont signalé que les nœuds des centres de données souffrent d'une faible utilisation de la mémoire, laissant 40 à 50 % de la mémoire inutilisée [23-26]. Dans cette situation, il devient possible d'échanger de l'espace mémoire contre des performances dans des systèmes critiques en termes de performances [27]. Les avantages en termes de performances ont également diminué.

L'avantage en termes de performances de la copie sur écriture peut être caractérisé par la fréquence et les performances de gestion des défauts de page. Lors de la génération d'un processus enfant, l'autorisation d'écriture sur toutes les pages est supprimée. Du point de vue de l’exactitude, cela est inévitable ; cependant, cela conduit à des erreurs de page fréquentes après le fork, lors du traitement de chaque demande d'écriture. Cette tempête de défauts de page d'écriture n'arrive pas seulement aux processus enfants mais également au processus parent.

Pour aggraver les choses, le temps de traitement des erreurs de page ne s'est pas amélioré récemment mais a tendance à être prolongé pour des raisons de sécurité. Dans le passé, l'intégralité de l'espace d'adressage du noyau était constamment mappée à une partie de l'espace d'adressage du processus utilisateur.

Cependant, cette disposition de l'espace d'adressage permet à des processus utilisateur malveillants de lire indirectement les données critiques dans l'espace d'adressage du noyau en exploitant l'exécution spéculative dans les processeurs [28,29].

Pour atténuer une telle vulnérabilité de sécurité critique, les systèmes d’exploitation modernes utilisent l’isolation des tables de pages du noyau (KPTI). En général, seule une partie limitée de l'espace d'adressage du noyau est mappée à l'espace d'adressage du processus, et le reste de l'espace d'adressage du noyau est mappé et démappé dynamiquement pendant la gestion des interruptions et des appels système. Cela doit être accompagné d'un rinçage TLB, qui peut dégrader considérablement les performances du système.

Dans ce travail, nous visons à réduire la surcharge de copie sur écriture en tirant parti de la localisation spatiale des références mémoire. Actuellement, la copie sur écriture s'effectue par page, et chaque fois qu'un défaut de page se produit, le système d'exploitation doit être impliqué. Notre idée clé est de réduire la fréquence d’implication du système d’exploitation en exploitant la localité spatiale des accès mémoire. Si une page est consultée en écriture, les pages voisines sont également susceptibles d'être consultées en écriture sous peu.

Ainsi, si nous effectuons la copie sur écriture non seulement pour la page défectueuse mais aussi pour les pages proches ensemble (c'est-à-dire, précopier les pages proches), nous pouvons amortir la surcharge de copie sur écriture pendant la gestion des défauts de page. Nous devons cependant faire attention à ne pas toujours copier aveuglément toutes les pages à proximité.

Si les pages copiées sont écrites plus tard, les frais généraux occasionnés par la précopie sont remboursés. Cependant, si les pages copiées ne sont pas écrites par la suite, la pré-copie n'entraîne qu'une surcharge supplémentaire en termes de temps et d'espace.

ways to improve your memory

Il est donc crucial d'identifier les pages cibles appropriées à copier. Des approches similaires ont été utilisées pour minimiser la surcharge de gestion des erreurs de page. Linux utilise la fonctionnalité dite de « défaut autour ». Lors de la gestion d'une erreur de page, Linux lance la gestion des erreurs de page pour les pages qui se trouvent autour de la page défectueuse [2]. Toutefois, cette fonctionnalité n'est appliquée qu'aux erreurs de page de lecture pour les régions de mémoire sauvegardées sur des fichiers.

Étant donné que l'idée proposée se concentre sur l'écriture de fautes de page pour des pages anonymes, nous pouvons affirmer que notre approche est différente de la fonctionnalité de contournement des fautes. De nombreuses conceptions de pointe [12–17] ont été proposées pour optimiser l'utilisation des erreurs de page. des pages énormes dans le système d'exploitation.

Ces systèmes, en commun, présentent un système permettant d'identifier les meilleures pages candidates à convertir en pages énormes et de les promouvoir efficacement (c'est-à-dire convertir des pages de base en une page énorme) ou de les rétrograder (c'est-à-dire convertir une page énorme en pages de base). des pages énormes.

Cependant, quels que soient les schémas proposés, la copie sur écriture est effectuée uniquement dans la granularité de la page de base, après avoir divisé la page énorme en pages de base si nécessaire. Ainsi, leurs caractéristiques de performances de copie sur écriture sont les mêmes que celles du système Linux par défaut avec le mécanisme THP (Transparent Huge Page). En revanche, le schéma proposé est unique dans la mesure où il effectue la copie sur écriture avec une granularité différente en fonction du degré de localité des accès mémoire.

3.2. Identifier la localité spatiale

Pour réaliser le schéma proposé, nous devons considérer deux questions difficiles. Premièrement, les pages cibles doivent être identifiées avec précision et en temps opportun, afin que les avantages de la précopie soient maximisés tout en minimisant les frais généraux liés à la précopie.

Une fois qu'une page est copiée par un rédacteur, la page ne déclenchera plus d'erreurs de page. Cela signifie effectivement que le système a perdu l'opportunité d'optimiser l'accès en écriture. Ainsi, le système devrait être capable de prévoir l'utilisation future des pages afin de déterminer quelles pages doivent être copiées et lesquelles ne le sont pas. Deuxièmement, l'identification des pages cibles devrait nécessiter une faible surcharge, car les systèmes d'exploitation ne peuvent pas se permettre un traitement fastidieux dans le sous-système de gestion de la mémoire, critique en termes de performances.

Comme indiqué dans la section 2, de nombreuses fonctionnalités de mémoire virtuelle dans les systèmes d'exploitation modernes sont basées sur le mécanisme de copie sur écriture. Ainsi, la surcharge peut facilement dépasser les avantages de la copie sur écriture optimisée si la mise en œuvre globale n'est pas suffisamment efficace.

Pour prédire l'avenir d'une page, nous collectons d'abord l'historique des forks pour les processus utilisateur. Plus précisément, le système d'exploitation surveille le nombre de forks invoqués par chaque processus. Un nombre faible pour un processus implique qu'il y a peu de possibilités d'exploiter le processus et que le système d'exploitation n'a pas besoin de suivre entièrement les erreurs de page d'écriture pour ce processus.

En revanche, lorsqu'un processus appelle l'appel système fork au-delà d'un seuil, le système peut s'attendre à une opportunité d'optimisation. Cela se produit avec Redis, qui appelle périodiquement des forks pour prendre des instantanés en mémoire, ou avec le script shell qui lance plusieurs commandes de ligne de commande. En réponse, le système commence à suivre les erreurs de page pour le processus.

improve brain

Ensuite, nous proposons une méthode pour prédire l'opportunité d'optimisation à partir de l'historique, en supposant que le comportement global des applications ne change pas de manière significative. À cette fin, nous divisons l’espace d’adressage du processus en régions de taille fixe. Chaque région conserve un bitmap, où chaque bit correspond à une page de la région. Un processus est généré avec tous les bitmaps effacés, comme pour les zones de mémoire virtuelle (VMA) nouvellement peuplées. Lorsqu'une partie entière du VMA n'est pas mappée, les bitmaps dans la plage d'adresses correspondante sont également libérés.

Le bitmap n'est alloué qu'aux parties de VMA qui sont remplies, et les informations d'une page de 4 Ko sont résumées en un seul bit. Ainsi, la surcharge d'espace pour le bitmap représente environ 0,003 % de l'espace d'adressage peuplé. Initialement, les écritures sont traitées telles quelles via la copie sur écriture.

Un accès en écriture est piégé dans le gestionnaire de défauts de page, grâce à quoi l'entrée bitmap correspondante est définie. Au fil du temps, le bitmap capture efficacement les accès à la région, et nous pouvons quantifier le degré de couverture. La couverture d'une région est calculée comme le pourcentage de pages copiées sur toutes les pages de la région, comme suit :

improve cognitive function

Supposons qu'un système utilise des pages de 4 Ko et que l'espace d'adressage soit divisé en régions de 2 Mo.

Ensuite, chaque région dispose de 512 4 pages Ko. Si 300 pages sont copiées en écriture, la couverture de la région est de 300/512 × 100=58,6 %. Plus la couverture d'une région est élevée, plus elle peut bénéficier de l'opportunité d'optimisation de la précopie. Ces informations de couverture sont reportées sur le fork et utilisées comme mesure pour déterminer l'avantage de copier les pages à proximité.

Plus précisément, si une région mémoire a une couverture élevée, les pages de la région sont susceptibles d'être éventuellement copiées sur écriture. Ainsi, il serait avantageux de précopier d'autres pages dans la région lors du traitement d'une erreur de page d'écriture pour une page. En revanche, les opportunités d'optimisation dans la précopie des pages sont faibles si la couverture est faible. Ainsi, seule la page défectueuse est copiée sur écriture par le gestionnaire pagefault.

Désormais, nous appellerons ce schéma copie sur écriture basée sur la couverture ou CCoW pour le reste de l'article. La figure 1 illustre le concept de CCoW. Il existe deux régions, les régions 0 et 1, chacune comprenant six pages. 

Les pages avec une teinte verte sont remplies avec copie sur écriture. Lorsque le processus invoque l'appel système fork, autorisez l'écriture pour que toutes les pages, y compris les pages vertes, soient supprimées pendant le fork. Supposons que le seuil pour déterminer la région de haute localité soit de 60 %. Dans la région 0, quatre pages (pages 1, 2, 3 et 4) avaient été copiées en écriture avant le fork, offrant une couverture de 4/6=66 %.

Ainsi, cette région est considérée comme ayant une localité spatiale élevée, et toutes les pages sont copiées pour gérer le défaut de page de la page 3, comme ombré en rouge. Alors que la région inférieure offre une couverture de 33 %, puisque deux pages sur six avaient été copiées sur écrit avant le fork.

Par conséquent, cette région a une couverture inférieure au seuil, ce qui implique une faible localité spatiale dans la région. Ainsi, lorsqu'on accède à la page 9 en écriture, seule la page défectueuse est copiée en écriture dans le gestionnaire de défauts de page, tout comme la procédure normale de copie sur écriture.

improve memory


For more information:1950477648nn@gmail.com

Vous pourriez aussi aimer