профилирование — код профиля C ++, основанный на «потоках состояний»; библиотека с dtrace

я использую dtrace профилировать программу C ++ (Это SRS в случае, если это имеет значение) на основе State Threads, подобная goroutine библиотека для написания параллельного кода C ++.

Команда, которую я использую:

dtrace -n 'profile-199 /pid == '$PID'/ { @[ustack(100)] = count(); } tick-15s { exit(0); }' -o $OUTPUT_FILE &>/dev/null

Результаты выборки и график пламени показывают, что большая часть процессорного времени расходуется на потоки состояний _st_kq_dispatch функция и соответствующий стек вызовов

_st_kq_dispatch
_st_idle_thread_start
_st_thread_main
st_thread_create
st_usleep
...

который почти бесполезен, не раскрывая ничего о выполнении пользовательских функций. Однако, если профилируется с помощью встроенной в MacOS /usr/bin/sample, результат, как и ожидалось. Так что не так с моим dtrace использование здесь? Что особенного в «State Threads» делает его невозможным для профилирования dtrace как и другие нормальные программы? (Кстати, защита целостности системы включена на моем macOS, это проблема?)

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]