Perf - системный мониторинг

Вопросы программного кода и архитектуры Linux

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Perf - системный мониторинг

Непрочитанное сообщение Olej » 10 авг 2023, 16:54

Olej писал(а):
10 авг 2023, 16:14
Но этого мало
Но и это не на все режимы :!:
Статистика системных вызовов за интервал времени:

Код: Выделить всё

olej@R420:~$ sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 5
[sudo] пароль для olej: 
sudo: требуется пароль
olej@R420:~$ perf stat -e 'syscalls:sys_enter_*' -a sleep 5
event syntax error: 'syscalls:sys_enter_*'
                     \___ can't access trace events

Error:	No permissions to read /sys/kernel/tracing/events/syscalls/sys_enter_*
Hint:	Try 'sudo mount -o remount,mode=755 /sys/kernel/tracing/'

Run 'perf list' for a list of valid events

 Usage: perf stat [<options>] [<command>]

    -e, --event <event>   event selector. use 'perf list' to list available events

Код: Выделить всё

olej@R420:~$ sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 1 | grep -v 0

 Performance counter stats for 'system wide':

                 3      syscalls:sys_enter_socket                                   
                 0      syscalls:sys_enter_socketpair                                   
                 3      syscalls:sys_enter_bind                                     
                 0      syscalls:sys_enter_listen                                   
                 0      syscalls:sys_enter_accept4                                   
                 0      syscalls:sys_enter_accept                                   
                 0      syscalls:sys_enter_connect                                   
                 3      syscalls:sys_enter_getsockname                                   
                 0      syscalls:sys_enter_getpeername                                   
                 6      syscalls:sys_enter_sendto                                   
                46      syscalls:sys_enter_recvfrom                                   
                 2      syscalls:sys_enter_setsockopt                                   
                 6      syscalls:sys_enter_getsockopt                                   
                 0      syscalls:sys_enter_shutdown                                   
               957      syscalls:sys_enter_sendmsg                                   
                 0      syscalls:sys_enter_sendmmsg                                   
             3.483      syscalls:sys_enter_recvmsg                                   
                 0      syscalls:sys_enter_recvmmsg                                   
                 1      syscalls:sys_enter_getrandom                                   
                 0      syscalls:sys_enter_io_uring_enter                                   
                 0      syscalls:sys_enter_io_uring_setup                                   
                 0      syscalls:sys_enter_io_uring_register                                   
                 0      syscalls:sys_enter_ioprio_set                                   
                 0      syscalls:sys_enter_ioprio_get                    
...                 
       5,032478739 seconds time elapsed
Естественно, что там большинство - 0 вызовов

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Perf - системный мониторинг

Непрочитанное сообщение Olej » 10 авг 2023, 17:04

Olej писал(а):
10 авг 2023, 16:54
Естественно, что там большинство - 0 вызовов
Как оказалось, perf направляет вывод (весь и всегда?) в SYSERR ... Но отфильтровать это можно так:

Код: Выделить всё

olej@R420:~$ sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 1 2>&1 | grep -v "0"
[sudo] пароль для olej:       

 Performance counter stats for 'system wide':

                 6      syscalls:sys_enter_socket                                   
                 6      syscalls:sys_enter_bind                                     
                 6      syscalls:sys_enter_getsockname                                   
                 6      syscalls:sys_enter_sendto                                   
                39      syscalls:sys_enter_recvfrom                                   
                 4      syscalls:sys_enter_setsockopt                                   
                 8      syscalls:sys_enter_getsockopt                                   
             3.771      syscalls:sys_enter_recvmsg                                   
                 1      syscalls:sys_enter_getrandom                                   
                 1      syscalls:sys_enter_timerfd_settime                                   
                 1      syscalls:sys_enter_epoll_ctl                                   
                53      syscalls:sys_enter_epoll_pwait                                   
                 3      syscalls:sys_enter_inotify_add_watch                                   
                15      syscalls:sys_enter_dup                                      
                 2      syscalls:sys_enter_pselect6                                   
               129      syscalls:sys_enter_ppoll                                    
            14.236      syscalls:sys_enter_ioctl                                    
                 6      syscalls:sys_enter_execve                                   
                 3      syscalls:sys_enter_newfstatat                                   
                 1      syscalls:sys_enter_lseek                                    
                 4      syscalls:sys_enter_pread64                                   
               353      syscalls:sys_enter_writev                                   
                17      syscalls:sys_enter_ftruncate                                   
                 1      syscalls:sys_enter_access                                   
                 3      syscalls:sys_enter_openat                                   
                62      syscalls:sys_enter_close                                    
                16      syscalls:sys_enter_memfd_create                                   
               166      syscalls:sys_enter_madvise                                   
                 3      syscalls:sys_enter_mprotect                                   
                 3      syscalls:sys_enter_brk                                      
                 1      syscalls:sys_enter_rseq                                     
                 1      syscalls:sys_enter_set_robust_list                                   
                 1      syscalls:sys_enter_clock_nanosleep                                   
                44      syscalls:sys_enter_nanosleep                                   
                41      syscalls:sys_enter_sched_setaffinity                                   
                 1      syscalls:sys_enter_sched_getaffinity                                   
                 9      syscalls:sys_enter_getpid                                   
                73      syscalls:sys_enter_gettid                                   
                 1      syscalls:sys_enter_prlimit64                                   
                22      syscalls:sys_enter_getrusage                                   
                 1      syscalls:sys_enter_rt_sigprocmask                                   
                 2      syscalls:sys_enter_tgkill                                   
                 1      syscalls:sys_enter_sigaltstack                                   
                 1      syscalls:sys_enter_exit                                     
                 1      syscalls:sys_enter_exit_group                                   
                 1      syscalls:sys_enter_wait4                                    
                 1      syscalls:sys_enter_set_tid_address                                   
                53      syscalls:sys_enter_mmap                                     
                 5      syscalls:sys_enter_rt_sigreturn                                   
                 2      syscalls:sys_enter_arch_prctl                                   
Кстати, общее число системных вызовов, определённых в вашей версии ядра:

Код: Выделить всё

olej@R420:~$ sudo perf stat -e 'syscalls:sys_enter_*' -a sleep 1 2>&1 | grep "syscalls:sys_enter_" | wc -l
343

Ответить

Вернуться в «Linux изнутри»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей