Je me suis récemment intéressé aux différents systèmes de fichiers basés sur la mémoire du noyau Linux.
Note:
En ce qui me concerne, les questions ci-dessous devraient être considérées plus ou moins optionnelles par rapport à une meilleure compréhension de celle posée dans le titre. Je leur pose la question ci-dessous parce que je pense que leur répondre peut mieux m'aider à comprendre les différences, mais comme ma compréhension est certes limitée, il s'ensuit que d'autres peuvent mieux savoir. Je suis prêt à accepter toute réponse qui enrichit ma compréhension des différences entre les trois systèmes de fichiers mentionnés dans le titre.
En fin de compte, je pense que j'aimerais monter un système de fichiers utilisable, hugepages,
même si des recherches légères (et des bricolages toujours plus légers) m'ont amené à croire que l' rewritable hugepage mount
option n'est pas une option. Suis-je trompé? Quelles sont les mécaniques en jeu ici?
Concernant également hugepages:
uname -a
3.13.3-1-MANJARO \
#1 SMP PREEMPT \
x86_64 GNU/Linux
tail -n8 /proc/meminfo
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 8223772 kB
DirectMap2M: 16924672 kB
DirectMap1G: 2097152 kB
(Voici les versions en texte intégral de / proc / meminfo et / proc / cpuinfo )
Que se passe-t-il dans ce qui précède? Suis-je déjà alloué hugepages?
Y a-t-il une différence entre DirectMap
les pages mémoire ethugepages?
Mise à jour Après un petit coup de pouce de @Gilles, j'ai ajouté 4 lignes supplémentaires ci-dessus et il semble qu'il doit y avoir une différence, même si je n'en avais jamais entendu parler DirectMap
avant de tirer cela tail
hier ... peut DMI
- être ou quelque chose?
Un peu plus ...
En cas d'échec de cette hugepages
tentative et en supposant des sauvegardes sur disque dur de tous les fichiers image, quels sont les risques de monter des boucles à partir de tmpfs?
Mon système de fichiers est-il swapped
le pire des cas? Je comprends que le tmpfs
cache du système de fichiers est monté - mon fichier de boucle monté peut-il être mis hors pression de la mémoire? Existe-t-il des mesures d'atténuation que je peux prendre pour éviter cela?
Dernier - qu'est-ce qui est exactement de shm,
toute façon? En quoi diffère-t-il ou inclut-il hugepages
outmpfs?
la source
/proc/meminfo
qui contiennentHugePage
(ou votre version du noyau ne les a-t-elle pas)? Sur quelle architecture est-ce (x86_64 je suppose)?Réponses:
Il n'y a aucune différence entre tmpfs et shm. tmpfs est le nouveau nom de shm. shm signifie SHaredMemory.
Voir: tmpfs Linux .
La principale raison pour laquelle tmpfs est même utilisé aujourd'hui est ce commentaire dans mon / etc / fstab sur ma boîte gentoo. BTW Chromium ne se construit pas avec la ligne manquante:
qui est sorti de la documentation du noyau linux
Citant:
Du document transparent Hugepage Kernel Doc:
Nouveau commentaire après avoir fait quelques calculs:
HugePage Size: 2MB
HugePages Used: None / Off, comme en témoignent les 0, mais activé selon les 2 Mo ci-dessus.
DirectMap4k: 8.03Gb
DirectMap2M: 16.5Gb
DirectMap1G: 2Gb
En utilisant le paragraphe ci-dessus concernant l'optimisation dans THS, il semble que les 8 Go de votre mémoire soient utilisés par des applications qui fonctionnent avec des mallocs de 4k, 16,5 Go, ont été demandées par des applications utilisant des mallocs de 2M. Les applications utilisant des mallocs de 2M imitent le support HugePage en déchargeant les sections 2M vers le noyau. C'est la méthode préférée, car une fois le malloc libéré par le noyau, la mémoire est libérée sur le système, tandis que le montage de tmpfs à l'aide d'énorme page n'entraînerait pas un nettoyage complet jusqu'à ce que le système soit redémarré. Enfin, le plus simple, vous aviez 2 programmes ouverts / en cours d'exécution qui demandaient un malloc de 1 Go
Pour ceux d'entre vous qui ne connaissent pas un malloc, c'est une structure standard en C qui signifie Memory ALLOCation. Ces calculs servent de preuve que la corrélation de l'OP entre DirectMapping et THS peut être correcte. Notez également que le montage d'une HUGEPAGE UNIQUEMENT fs n'entraînerait qu'un gain en incréments de 2 Mo, tandis que laisser le système gérer la mémoire à l'aide de THS se produit principalement en blocs de 4k, ce qui signifie en termes de gestion de la mémoire que chaque appel malloc enregistre le système 2044k (2048-4 ) pour un autre processus à utiliser.
la source
Pour résoudre le problème "DirectMap": le noyau a un mappage linéaire ("direct") de la mémoire physique , distinct des mappages virtuels alloués à chaque processus utilisateur.
Le noyau utilise les plus grandes pages possibles pour ce mappage afin de réduire la pression TLB.
DirectMap1G est visible si votre CPU prend en charge les pages 1 Go (à partir de Barcelone; certains environnements virtuels les désactivent), et s'il est activé dans le noyau - la valeur par défaut est activée pour 2.6.29+.
la source
Il n'y a aucune différence entre
shm
ettmpfs
(en fait,tmpfs
c'est seulement le nouveau nom de l'ancienshmfs
).hugetlbfs
est untmpfs
système de fichiers basé sur qui alloue son espace à partir d'énormes pages du noyau et a besoin d'une certaine configuration supplémentaire (comment l'utiliser est expliqué dans la documentation / vm / hugetlbpage.txt ).la source
DirectMap
tout dans laprocfs man
page. Comment venir?