Comment puis-je connaître la taille de la table de pages d'un processus Linux, ainsi que toute autre comptabilité de processus de taille variable?Comment trouver ou calculer la taille d'une table de page d'un processus Linux et la comptabilité d'un autre noyau?
Répondre
Si vous êtes vraiment intéressé par les tables de pages, faites une
$ cat /proc/meminfo | grep PageTables
PageTables: 24496 kB
Ceci est utile, mais j'ai besoin de savoir si cette taille est "trop grande". S'il y a une limite à cette taille, cela provoquerait l'échec de fork() et la proximité de cette limite avec le noyau. Idéalement, j'aurais aussi besoin de savoir quelle portion de la taille de PageTables est utilisée par un processus spécifique, de sorte que lorsque fork() essaie de copier les tables pour ce processus, la limite serait dépassée. –
Hmmm, de retour à Ye Olden Tymes, nous appelions nlist (3) pour obtenir l'adresse du système pour les données que nous étions intéressés dans, puis ouvrez/dev/kmem, recherchez l'adresse, puis lisez les données. Je ne sais pas si cela fonctionne sous Linux, mais il pourrait être utile de taper "man 3 nlist" et de voir ce qui revient.
Vous devez décrire votre problème et ne pas demander de détails. Si vous fourrez trop (en particulier avec un processus qui a un grand espace d'adressage) il y a toutes sortes de choses qui vont mal (y compris hors de la mémoire), frapper une taille maximale pagetable est à mon humble avis pas un problème réaliste. Thad a dit, je serais également intéressé de lire un partage de pagetable de processus dans Linux. En règle générale, on peut cependant supposer que chaque processus occulte un partage dans le pagetable qui est égal à sa taille virtuelle, par exemple 6 octets pour chaque page. Ainsi, par exemple, si vous avez une base de données Oracle avec 8 Go de SGA et 500 processus le partageant, chacun des processus utilisera 14 Mo pagetable, ce qui entraîne 7 Go pagetables + 8 Go SGA. (numéros d'échantillons de http://kevinclosson.wordpress.com/2009/07/25/little-things-doth-crabby-make-%E2%80%93-part-ix-sometimes-you-have-to-really-really-want-your-hugepages/)
Oh BTW, quelques chiffres avec d'énormes pages maintenant: http://kevinclosson.wordpress.com/2009/07/28/quantifying-hugepages-memory-savings-with-oracle-database-11g/ – eckes
Depuis Linux 2.6.10, la quantité de mémoire utilisée par les tables de pages d'un seul processus a été exposée via le champ VmPTE de /proc/<pid>/status
.
Il semble bien fonctionner , sauf quand j'alloue des pages énormes avec mmap: la taille rapportée est une petite constante, quelle que soit la taille de l'allocation (noyau 4.4.0-77). –
La valeur rapportée par le champ VmPMD semble correcte, elle croît linéairement avec la taille de l'allocation, même avec des pages énormes. Mais je ne pense pas que cela rende compte de toute la table des pages (l'homme dit "Taille des tables de pages de second niveau"). Lors de l'expérimentation avec des pages classiques, cette valeur est environ 500 fois inférieure à VmPTE. –
- 1. Comment trouver la taille de la mémoire virtuelle et la taille du cache d'un système Linux?
- 2. pile de noyau pour le processus linux
- 3. Calculer la taille de la page Web en python
- 4. Comment trouver quel processus fonctionne Linux à un moment donné?
- 5. Comment puis-je enregistrer le processus ou l'activité du noyau utilisant le disque dans GNU/Linux?
- 6. Comment calculer correctement la hauteur d'une table
- 7. Comment calculer la largeur d'une chaîne de caractères d'une police et d'une taille de police spécifiques?
- 8. Comment collecter la taille du disque dur et l'espace disponible ou utilisé dans linux cli?
- 9. Trouver la taille de .net hashtable
- 10. CSS ajuster la taille de la table
- 11. Tutoriel pour la création de paquets dans le noyau Linux
- 12. Comment obtenir un nom de script dans un fichier de comptabilité de processus BSD?
- 13. Comment utiliser la commande linux flock pour empêcher un autre processus racine de supprimer un fichier?
- 14. problèmes lors de l'initialisation du noyau linux
- 15. étrange Construire Message de noyau Linux
- 16. Comment configurer le noyau Linux dans Buildroot?
- 17. Comment trouver le type, la longueur, nullable ou non d'une table et un nom de champ
- 18. Calculer la taille totale de tous les fichiers à télécharger
- 19. Impossible de trouver NamespaceHandler noyau
- 20. erreur compilant le noyau Linux
- 21. Comment trouver l'emplacement et la taille de la barre des tâches Windows?
- 22. Déclenchement de processus/création de processus Linux
- 23. Structure PTE dans le noyau linux
- 24. Comment calculer la taille de la zone dans une fenêtre google maps
- 25. Comment trouver le processus qui consomme le plus d'E/S sous linux?
- 26. Obtenir le processus de création de noyau Linux pour reconstruire les fichiers modifiés
- 27. C# Comment trouver la taille d'un type de référence
- 28. Comment calculer la taille d'un UIFont lorsque le texte de l'étiquette est contraint à la largeur?
- 29. Définition de l'affinité de processus en mode noyau
- 30. limite taille de la page téléchargée
Je ne suis pas sûr de comprendre votre question: La taille de la page, AFAIK, n'est pas dépendante du processus sur la même plate-forme (eh bien, je peux me tromper, je ne suis pas un gourou linux ..). Btw je me demande: voulez-vous vraiment dire page * table * taille? Ou voulez-vous dire plutôt la taille de la page *, comme il est plus souvent nécessaire par les programmeurs à mon humble avis? –
Je veux dire la quantité de mémoire (kernel) que les tables de pages d'un processus particulier consomment. –