Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: demaker от Март 18, 2021, 17:06



Название: QtCreator & Perf
Отправлено: demaker от Март 18, 2021, 17:06
Никак не могу запустить Perf для QtCreayor :-\

Операционная система Linux(XUbuntu  18.04) Ядро 5.4.0-67, Qt Creator 4.11.0

Савил Perf так:
Код:
sudo apt install linux-tools-common 
sudo linux-tools-generic linux-tools-`uname -r`
Итог:
Версия Perf
Код:
perv -v
perf version 5.4.94

Но...
Запускаю анализатор производительности - ругается на версию ядра якобы, "типа старая"
Хотя в окне вывода приложений пишет типа надо запускать из под суперпользователя

Ладно
Попробовал вот это
https://superuser.com/questions/980632/run-perf-without-root-rights?newreg=2f81b6d2ba2a4143af62fa81c188aa9a
Ну или набрал две команды как описанно в статье
Код:
sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'
sudo sysctl -w kernel.perf_event_paranoid=1

Помогло, но...
Код:
WARNING: Kernel address maps (/proc/{kallsyms,modules}) are restricted,
check /proc/sys/kernel/kptr_restrict and /proc/sys/kernel/perf_event_paranoid.

Samples in kernel functions may not be resolved if a suitable vmlinux
file is not found in the buildid cache or in the vmlinux path.

Samples in kernel modules won't be resolved at all.

If some relocation was applied (e.g. kexec) symbols may be misresolved
even with a suitable vmlinux or kallsyms file.

Couldn't record kernel reference relocation symbol
Symbol resolution may be skewed if relocation was used (e.g. kexec).
Check /proc/kallsyms permission or run as root.
QHostAddress("127.0.0.1")
[ perf record: Woken up 27 times to write data ]
[ perf record: Captured and wrote 0,000 MB - ]

Кто сталкивался с этим, подскажите что делать ???
Спасибо!!!


Название: Re: QtCreator & Perf
Отправлено: qate от Март 19, 2021, 11:39
запустить perf от рута - не вариант ?


Название: Re: QtCreator & Perf
Отправлено: demaker от Март 19, 2021, 20:03
запустить perf от рута - не вариант ?


QtCreator  из под рута , в нем запускал анализатор производительности...
Эффект такой же. Жалобы на то что версия ядра линуха не соответствует версии perf

Код:
Perf 5.4.94
Linux 5.4.0-67


Название: Re: QtCreator & Perf
Отправлено: tux от Март 19, 2021, 20:07
Вы бы лучше сюда ошибку скопировали. "Жалобы на то что версия ядра линуха не соответствует версии perf" - это не совсем понятно.
P.S. Хотя, есть подозрение, что вы взяли версию perf одну, а само ядро другое. Если вы говорите за https://perf.wiki.kernel.org/index.php/Main_Page, то вашем случае либо ставить ядро под perf, либо брать perf под ядро.
P.P.S. Допустим ядро 5.4.0-67 != 5.4.94


Название: Re: QtCreator & Perf
Отправлено: demaker от Март 20, 2021, 00:35
Вы бы лучше сюда ошибку скопировали. "Жалобы на то что версия ядра линуха не соответствует версии perf" - это не совсем понятно.
P.S. Хотя, есть подозрение, что вы взяли версию perf одну, а само ядро другое. Если вы говорите за https://perf.wiki.kernel.org/index.php/Main_Page, то в ашем случае либо ставить ядро под perf, либо брать perf под ядро.
P.P.S. Допустим ядро 5.4.0-67 != 5.4.94

Вывод в приложения
Код:
perf_event_open(..., PERF_FLAG_FD_CLOEXEC) failed with unexpected error 13 (Отказано в доступе)
perf_event_open(..., 0) failed unexpectedly with error 13 (Отказано в доступе)
Error:
You may not have permission to collect stats.

Consider tweaking /proc/sys/kernel/perf_event_paranoid,
which controls use of the performance events system by
unprivileged users (without CAP_SYS_ADMIN).

The current value is 3:

  -1: Allow use of (almost) all events by all users
      Ignore mlock limit after perf_event_mlock_kb without CAP_IPC_LOCK
>= 0: Disallow ftrace function tracepoint by users without CAP_SYS_ADMIN
      Disallow raw tracepoint access by users without CAP_SYS_ADMIN
>= 1: Disallow CPU event access by users without CAP_SYS_ADMIN
>= 2: Disallow kernel profiling by users without CAP_SYS_ADMIN

To make this setting permanent, edit /etc/sysctl.conf too, e.g.:

kernel.perf_event_paranoid = -1



Название: Re: QtCreator & Perf
Отправлено: tux от Март 20, 2021, 23:16
У вас, скорее прав не хватает.
Попробуйте
Код:
sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'


Название: Re: QtCreator & Perf
Отправлено: demaker от Март 21, 2021, 10:04
У вас, скорее прав не хватает.
Попробуйте
Код:
sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'

 Я это уже пробовал это , в самом первом сообщении это:
Цитировать
Ну или набрал две команды как описанно в статье
Код:
sudo sh -c 'echo 1 >/proc/sys/kernel/perf_event_paranoid'
sudo sysctl -w kernel.perf_event_paranoid=1

Помогло, но...
Код:
WARNING: Kernel address maps (/proc/{kallsyms,modules}) are restricted,
check /proc/sys/kernel/kptr_restrict and /proc/sys/kernel/perf_event_paranoid.

Samples in kernel functions may not be resolved if a suitable vmlinux
file is not found in the buildid cache or in the vmlinux path.

Samples in kernel modules won't be resolved at all.

If some relocation was applied (e.g. kexec) symbols may be misresolved
even with a suitable vmlinux or kallsyms file.

Couldn't record kernel reference relocation symbol
Symbol resolution may be skewed if relocation was used (e.g. kexec).
Check /proc/kallsyms permission or run as root.
QHostAddress("127.0.0.1")
[ perf record: Woken up 27 times to write data ]
[ perf record: Captured and wrote 0,000 MB - ]



Название: Re: QtCreator & Perf
Отправлено: qate от Март 22, 2021, 08:38
QtCreator  из под рута , в нем запускал анализатор производительности...

1. хм, а есть смысл запускать именно из креатора ?
2. работает ли sudo perf top ?


Название: Re: QtCreator & Perf
Отправлено: demaker от Март 22, 2021, 12:54
QtCreator  из под рута , в нем запускал анализатор производительности...

1. хм, а есть смысл запускать именно из креатора ?
2. работает ли sudo perf top ?

По второму пункту: да, работает
По первому пункту
Мне кажется что да, хотелось проанализировать свой код. Это вроде и удобнее...
Я понимаю что есть другие варианты, но этот самый простой и удобный , опять же как мне показалось.

Если есть другая хорошая альтернатива, чтобы можно было оценить свой код и места большой
загруженности процессора в коде - то подскажите, буду признателен, я всегда готов выслушать


Название: Re: QtCreator & Perf
Отправлено: qate от Март 22, 2021, 13:15
показать вызовы в коде можно через callgrind:
1. valgrind --tool=callgrind --callgrind-out-file=MYPROG.callgrind --collect-atstart=no  ./MYPROG
2. kcachegrind MYPROG.callgrind
но это всё на порядки замедлит программу

мастерством использования perf я не владею, кроме как увидеть что "гдето чтото - тормозит"



Название: Re: QtCreator & Perf
Отправлено: demaker от Март 22, 2021, 14:28
мастерством использования perf я не владею, кроме как увидеть что "гдето чтото - тормозит"
И как тогда с помощью Perf узнать" где и что тормозит"?


Название: Re: QtCreator & Perf
Отправлено: qate от Март 22, 2021, 15:39
интуитивно, методом проб и ошибок


Название: Re: QtCreator & Perf
Отправлено: demaker от Март 22, 2021, 19:04
интуитивно, методом проб и ошибок


"Ты кем, работаешь?"
"Инженером - чем меньше работаю, тем меньше вреда!"