J'essaie de me familiariser avec perf
et l'exécuter contre divers programmes que j'ai écrits. Lorsque je le lance contre un programme 100% mono-thread, perf montre qu'il faut deux cœurs sur la machine (événement task-clock). est ici la sortie par exemple:Pourquoi perf montre que le sommeil prend tous les noyaux?
perf stat -a --per-core python3 test.py
Performance counter stats for 'system wide':
S0-C0 1 19004.951263 task-clock (msec) # 1.000 CPUs utilized (100.00%)
S0-C0 1 5,582 context-switches (100.00%)
S0-C0 1 19 cpu-migrations (100.00%)
S0-C0 1 3,746 page-faults
S0-C0 1 <not supported> cycles
S0-C0 1 <not supported> stalled-cycles-frontend
S0-C0 1 <not supported> stalled-cycles-backend
S0-C0 1 <not supported> instructions
S0-C0 1 <not supported> branches
S0-C0 1 <not supported> branch-misses
S0-C1 1 19004.950059 task-clock (msec) # 1.000 CPUs utilized (100.00%)
S0-C1 1 6,752 context-switches (100.00%)
S0-C1 1 25 cpu-migrations (100.00%)
S0-C1 1 935 page-faults
S0-C1 1 <not supported> cycles
S0-C1 1 <not supported> stalled-cycles-frontend
S0-C1 1 <not supported> stalled-cycles-backend
S0-C1 1 <not supported> instructions
S0-C1 1 <not supported> branches
S0-C1 1 <not supported> branch-misses
19.004688019 seconds time elapsed
Il montre même si simple commande sleep
prend deux cœurs sur mon ordinateur et je ne peux pas l'expliquer. Je comprends que le planificateur de système d'exploitation peut réaffecter le cœur actif pour n'importe quel processus, mais dans ce cas, l'utilisation du processeur refléterait cela.
Quelqu'un peut-il expliquer cela?
Merci!
L'option '-a' de perf-stat (http://man7.org/linux/man-pages/man1/perf-stat.1.html) concerne le profilage à l'échelle du système lorsque la commande est en cours d'exécution. Utilisez-le comme 'perf stat -a sleep 10' pour profiler le système pendant 10 secondes. Pour obtenir les statistiques de votre commande, n'utilisez pas l'option '-a' de perf stat:' perf stat python3 test.py'. – osgx