6 votes

Enregistrez les accès à la mémoire qui provoquent des défauts de page majeurs.

Quelqu'un sait-il comment obtenir les accès à la mémoire (pointeurs) qui provoquent des défauts de page ? Je suis surtout intéressé par les principaux défauts de page.

Un peu d'information sur ce que j'essaie d'accomplir. J'ai une application avec une grande empreinte mémoire (une base de données) et je veux corréler la pagination avec les accès aux grandes structures de données (comme les tables, les index qui sont alloués en utilisant mmap()). Les mappings du processus sont faciles à récupérer dans /proc//maps. Maintenant, si j'ai les accès à la mémoire qui causent des défauts de page, je peux suivre combien de défauts de page sont causés lors de l'accès à chaque structure de données.

Je pense que perf ou systemtap pourraient faire l'affaire. Des idées ?

7voto

fche Points 933

Voyez ce qui est disponible au point de sonde :

% stap -L vm.pagefault
vm.pagefault name:string write_access:long address:long $mm:struct mm_struct* \
   $vma:struct vm_area_struct* $address:long unsigned int $flags:unsigned int

Journal, tentative de mapper les adresses aux noms de symboles

# stap -e 'probe vm.pagefault { if (execname()=="foo") { printf("%p (%s)\n", address, usymdata(address)) } }' -d /bin/foo --ldd

Voir aussi : http://sourceware.org/systemtap/examples/#memory/pfaults.stp

7voto

papirrin Points 572

Vous avez raison. Vous pouvez utiliser l'outil perf pour suivre le nombre de défauts de page que votre application a causés.

Je vous recommande de lire ce tutoriel pour apprendre à utiliser l'outil.

Pour l'installer, il suffit d'utiliser :

Vous recherchez l'événement faute de page . Vous pouvez installer (dans ubuntu ou une autre distribution apt) par :

sudo apt-get install linux-tools-common linux-base 
sudo apt-get install linux-tools-YOUR-KERNEL number

Vous pouvez obtenir votre numéro de noyau avec : uname -r

Par exemple, cette commande exécute l'outil perf sur la commande "ls" :

perf record -e page-faults:u -F 250 ls

et ensuite vous pouvez regarder les résultats (le binaire de "ls" n'a pas d'information de débogage, donc ne vous attendez pas à une jolie sortie) avec :

perf report

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X