Как профилировать реальное приложение?

В большинстве систем каждая команда «отключение» — это просто символическая ссылка на общую программу/скрипт. который изменяет свое поведение в зависимости от того, (с каким "именем" )вызывается.

Итак, poweroffвыполняет своего рода завершение работы, при котором машина выключается (обычно также через API-интерфейсы ACPI ), и это эквивалентно shutdown -hP, а shutdownпоскольку команда является более общей и может выполнять множество действий после «остановки» ОС в зависимости от того, с какими флагами вызывается.

Например, shutdown -rперезагружает машину, в то время как shutdown -hпросто останавливает ОС (и машина все еще включена, но не используется ).

2
12.06.2021, 21:59
1 ответ

Я лично не стал бы копать так глубоко. Я бы рекомендовал не создавать свой собственный atril, а использовать atril (debian, потому что это то, что вы будете использовать впоследствии, а также, debian предоставляет вам символы отладки ).

По порядку сложности:

  • запуститеtop(лучше даже :htop, а в его настройках отключите "Скрыть пользовательские потоки процессов" )при запуске atril. Использует ли процесс много процессорного времени? Перейдите к perfили gdb.
  • gdbчасто бывает достаточно для таких вещей :
    1. установить символы отладки для atril, см. вики Debian
    2. запуск gdb, загрузка atril:gdb atril(подсказка :gdb может сказать вам, что вам не хватает нескольких символов отладки — вы также можете установить их, чтобы вам было легче расшифровывать следы, когда они в данный момент не находятся в atril)
    3. на оболочке (gdb),сказатьrun
    4. Через 15 секунд от скуки нажмите ctrl + c . Это прерывает выполнение в gdb
    5. поскольку atril, вероятно, является многопоточным -, info threadsпокажет вам, где застрял каждый поток
    6. Выберите самую интересную тему по номеру N, набравthread N
    7. получить обратную трассировку:bt. Вы увидите, откуда вы пришли.
  • Если он не использует сам ЦП, он почти наверняка ожидает завершения системного вызова. strace atrilсообщит о вызовах, которые он делает, в прямом эфире. какие последние несколько звонков вы получаете? может он пытается уснуть?
  • если вы привязаны к ЦП -, и вообще, команда perfиз базового пакета linux -отлично подходит :sudo sysctl -w kernel.perf_event_paranoid=-1, а затем perf record -ag atrilбудет регулярно выполнять выборку там, где выполнение зависло (но он смотрит на все процессы, поэтому закройте браузер, сверните дома и еще много чего ), а затем perf report -gиз того же каталога покажет вам статистику просмотра. Они становятся более полезными, если у вас установлены символы отладки.
6
28.07.2021, 11:25

Теги

Похожие вопросы