Профилировщик или как узнать что грузит процесс?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модераторы: broom, Bizdelnick

Bookkc
Сообщения: 241
ОС: Ubuntu, Gentoo, Debian

Профилировщик или как узнать что грузит процесс?

Сообщение Bookkc » 11.07.2018 11:34

Суть такова, есть один проект, эмулятор сервера. Суть в том что со временем его работы он начинает грузить процессор под 100% и нагрузка не спадает а только растёт...

Хочу узнать какая процедура, или функция в коде грузит так ЦП, слышал о профилировщике, но не знаю что это и как это работает. Поискав инфу понял что нужна помощь, ибо нужно объяснить на пальцах хотя бы что это и к чему.

Что понял, что приложение должно быть в дебаге запущено. но как узнать что так сильно грузит проц???

P.S. может есть какие то другие варианты выгрузки нагрузки процессора в линуксе ? без перезагрузки самого сервера конечно же.

ОС Дебиан 9, 64 бит
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 13989
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bizdelnick » 11.07.2018 13:08

На чём проект написан-то? Если на сях или ещё чём-то компилируемом, то gprof в руки и вперёд (должна быть дебажная инфа, иначе толку не будет).
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Bookkc
Сообщения: 241
ОС: Ubuntu, Gentoo, Debian

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bookkc » 11.07.2018 13:28

Да. на с++

а как пользоваться gprof ?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 13989
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bizdelnick » 11.07.2018 13:35

Впрочем, я сам уже подзабыл, как им пользуются. Просто дебажной инфы мало, надо собирать код с опцией -pg. Тогда при запуске будет формироваться файл gmon.out, который уже и надлежит исследовать с помощью gprof: gprof <бинарь> gmon.out
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Bookkc
Сообщения: 241
ОС: Ubuntu, Gentoo, Debian

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bookkc » 11.07.2018 13:37

то есть собирать мне проект с параметров -pg который писать в строке cmake??
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 13989
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bizdelnick » 11.07.2018 13:42

Для cmake надо писать что-то вроде -DCMAKE_C_FLAGS='-g -pg' -DCMAKE_CXX_FLAGS='-g -pg' (другие опции по вкусу).
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Bookkc
Сообщения: 241
ОС: Ubuntu, Gentoo, Debian

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bookkc » 11.07.2018 13:52

я понял. спасибо. собираю...


Ещё вопрос. собрался бинарник, запускать так : gprof mybin gmon.out
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 13989
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bizdelnick » 11.07.2018 13:59

Нет, запускать как обычно. Эта команда для анализа собранных данных.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Bookkc
Сообщения: 241
ОС: Ubuntu, Gentoo, Debian

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bookkc » 11.07.2018 15:12

Запустил в дебаге. а где собственно создается файл gmon.out ???
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 13989
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bizdelnick » 11.07.2018 15:21

В текущем каталоге.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Bookkc
Сообщения: 241
ОС: Ubuntu, Gentoo, Debian

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bookkc » 11.07.2018 15:26

его нет. вот так собирал

cmake ../ -DCMAKE_C_FLAGS="-O3 -pipe -g -pg" -DCMAKE_CXX_FLAGS="${CMAKE_C_FLAGS}" -DDEBUG=1 -DDO_RA=1 -DLARGE_CELL=1 -DPREFIX=/home/wow/debug
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 13989
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bizdelnick » 11.07.2018 15:39

Bookkc писал(а):
11.07.2018 15:26
-DCMAKE_CXX_FLAGS="${CMAKE_C_FLAGS}"
Так переменная CMAKE_CXX_FLAGS будет пустой (шелл раскроет ${CMAKE_C_FLAGS} как свою переменную, которая не определена; кстати, не так давно я Вам об этом уже говорил). Замените двойные кавычки одинарными.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Bookkc
Сообщения: 241
ОС: Ubuntu, Gentoo, Debian

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bookkc » 11.07.2018 15:49

сделал вот так. cmake ../ -DCMAKE_C_FLAGS='-O3 -pipe -pg' -DCMAKE_CXX_FLAGS='-O -pipe -pg' -DDEBUG=1 -DDO_RA=1 -DLARGE_CELL=1 -DPREFIX=/home/wow/debug

Собираю...
Спасибо сказали:

Bookkc
Сообщения: 241
ОС: Ubuntu, Gentoo, Debian

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bookkc » 11.07.2018 20:50

собрал... файл всё равно не появляется...
Спасибо сказали:

Bookkc
Сообщения: 241
ОС: Ubuntu, Gentoo, Debian

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bookkc » 11.07.2018 20:56

понял. он появляется после выключения основной программы...
Спасибо сказали:

Bookkc
Сообщения: 241
ОС: Ubuntu, Gentoo, Debian

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bookkc » 11.07.2018 20:59

и ещё... что дальше делать с этим gmon.out файлом? как посмотреть какая процедура грузит больше всего ?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 13989
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Bizdelnick » 11.07.2018 21:35

Bizdelnick писал:
11.07.2018 13:35
исследовать с помощью gprof: gprof <бинарь> gmon.out
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Egorkeke
Сообщения: 3

Re: Профилировщик или как узнать что грузит процесс?

Сообщение Egorkeke » 12.07.2018 13:44

Bookkc писал(а):
11.07.2018 20:59
и ещё... что дальше делать с этим gmon.out файлом? как посмотреть какая процедура грузит больше всего ?
http://rus-linux.net/MyLDP/algol/install-and-use-gprof.html - Как установить и использовать профилировщик Gprof в Linux
Спасибо сказали:

Вернуться в «Вопрос новичка»