Профилировщик или как узнать что грузит процесс?
Модератор: Bizdelnick
Профилировщик или как узнать что грузит процесс?
Суть такова, есть один проект, эмулятор сервера. Суть в том что со временем его работы он начинает грузить процессор под 100% и нагрузка не спадает а только растёт...
Хочу узнать какая процедура, или функция в коде грузит так ЦП, слышал о профилировщике, но не знаю что это и как это работает. Поискав инфу понял что нужна помощь, ибо нужно объяснить на пальцах хотя бы что это и к чему.
Что понял, что приложение должно быть в дебаге запущено. но как узнать что так сильно грузит проц???
P.S. может есть какие то другие варианты выгрузки нагрузки процессора в линуксе ? без перезагрузки самого сервера конечно же.
ОС Дебиан 9, 64 бит
Хочу узнать какая процедура, или функция в коде грузит так ЦП, слышал о профилировщике, но не знаю что это и как это работает. Поискав инфу понял что нужна помощь, ибо нужно объяснить на пальцах хотя бы что это и к чему.
Что понял, что приложение должно быть в дебаге запущено. но как узнать что так сильно грузит проц???
P.S. может есть какие то другие варианты выгрузки нагрузки процессора в линуксе ? без перезагрузки самого сервера конечно же.
ОС Дебиан 9, 64 бит
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Профилировщик или как узнать что грузит процесс?
На чём проект написан-то? Если на сях или ещё чём-то компилируемом, то gprof в руки и вперёд (должна быть дебажная инфа, иначе толку не будет).
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Профилировщик или как узнать что грузит процесс?
Да. на с++
а как пользоваться gprof ?
а как пользоваться gprof ?
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Профилировщик или как узнать что грузит процесс?
Впрочем, я сам уже подзабыл, как им пользуются. Просто дебажной инфы мало, надо собирать код с опцией -pg. Тогда при запуске будет формироваться файл gmon.out, который уже и надлежит исследовать с помощью gprof: gprof <бинарь> gmon.out
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Профилировщик или как узнать что грузит процесс?
то есть собирать мне проект с параметров -pg который писать в строке cmake??
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Профилировщик или как узнать что грузит процесс?
Для cmake надо писать что-то вроде -DCMAKE_C_FLAGS='-g -pg' -DCMAKE_CXX_FLAGS='-g -pg' (другие опции по вкусу).
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Профилировщик или как узнать что грузит процесс?
я понял. спасибо. собираю...
Ещё вопрос. собрался бинарник, запускать так : gprof mybin gmon.out
Ещё вопрос. собрался бинарник, запускать так : gprof mybin gmon.out
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Профилировщик или как узнать что грузит процесс?
Нет, запускать как обычно. Эта команда для анализа собранных данных.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Профилировщик или как узнать что грузит процесс?
Запустил в дебаге. а где собственно создается файл gmon.out ???
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Профилировщик или как узнать что грузит процесс?
В текущем каталоге.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Профилировщик или как узнать что грузит процесс?
его нет. вот так собирал
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
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
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Профилировщик или как узнать что грузит процесс?
Так переменная CMAKE_CXX_FLAGS будет пустой (шелл раскроет ${CMAKE_C_FLAGS} как свою переменную, которая не определена; кстати, не так давно я Вам об этом уже говорил). Замените двойные кавычки одинарными.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Профилировщик или как узнать что грузит процесс?
сделал вот так. 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
Собираю...
Собираю...
Re: Профилировщик или как узнать что грузит процесс?
собрал... файл всё равно не появляется...
Re: Профилировщик или как узнать что грузит процесс?
понял. он появляется после выключения основной программы...
Re: Профилировщик или как узнать что грузит процесс?
и ещё... что дальше делать с этим gmon.out файлом? как посмотреть какая процедура грузит больше всего ?
- Bizdelnick
- Модератор
- Сообщения: 20793
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Профилировщик или как узнать что грузит процесс?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |