Linux perf: возможно ли как-то игнорировать занятые потоки ожидания?

Я пытаюсь сделать анализ производительности моего процесса. У процесса есть много потоков, которые заняты зацикливанием / занятостью, ожидая событий. Похоже, что perf выбирает занятые циклы в качестве главных нарушителей (как и ожидалось), но есть ли какая-то магия, чтобы как-то заставить perf игнорировать эти неопорные спины?

2 ответа

Общий метод состоит в том, чтобы контролировать "правильность" процесса - имя nix для приоритета. Ты можешь использовать

top

для просмотра процессов и nice значение. Найдите свои оскорбительные темы, и тогда вы сможете использовать:

renice 19 -p <pid of offending process>

19 - любое значение от -20 (наивысший приоритет) до 19 (наихудший). Хороший учебник находится здесь. Обратите внимание, что pid - это действительно tid (идентификатор потока).

Все это предполагает, что вы не контролируете источник исполняемого файла, который порождает эти процессы. Если вам нужно перейти к схеме ожидания / прерывания, а не к занятому ожиданию, например, эффективный способ ожидания прерывания в Си. Это для Rasberry-PI, но я думаю, что логика pthread должна быть полезной. boost::pthread есть другие хорошие вещи.

Если вы смотрите вниз, чтобы полностью приостановить эти темы kill может быть полезным, согласно https://unix.stackexchange.com/questions/2107/how-to-suspend-and-resume-processes, но я не уверен, что это работает для потоков (и если это работает Будет ли это только остановить поток, а не процесс).

perf report может фильтровать по символу или DSO, но нет никакого способа использовать черный список.

Я думал, что может быть способ с помощью объединения -p -x, но регулярное выражение POSIX, похоже, не поддерживает негативную перспективу, поэтому черный список также кажется невозможным.

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

Также часто лучше пассивно ждать события, чем заняты ожиданием.

Другие вопросы по тегам