Общесистемное непрерывное профилирование библиотеки linux - PullRequest
2 голосов
/ 19 апреля 2009

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

Что я не хочу делать, так это перекомпилировать каждую работающую программу с поддержкой профилирования. Я бы хотел, чтобы информация о профилировании выводилась либо периодически, либо по запросу в какой-либо файл. Было бы очень хорошо, если бы статистика была разбита по именам приложений или pids.

Есть ли способ достичь этого прямо сейчас?

Пример использования: профилирование библиотеки glib с использованием данных из работающей системы.

1 Ответ

5 голосов
/ 19 апреля 2009

Посмотрите на oprofile . Я думаю, что это именно то, что вы хотите.

Oprofile использует аппаратную выборку счетчика для профилирования кода, и вы можете настроить, какой счетчик вы хотите использовать ( например, , если вам не нужен временной профиль, вы можете выполнить выборку по инструкции с плавающей точкой счетчик и увидеть части вашего кода, которые выполняют большую часть работы FP). Для временных профилей скорость составляет ~ 2000 выборок в секунду, поэтому накладные расходы очень низкие.

Сгенерированные сводные данные сообщают вам о приложении, загрузочном модуле и символах (если у вас была информация о символах), где вы провели большую часть своего времени. Вы также можете выбрать профилирование ядра и пользовательского пространства по отдельности, и при желании можно получить информацию о пути вызова. Последняя версия oprofile даже поддерживает профилирование JIT-кода, поэтому оно довольно полное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...