Как обсуждалось в профилирование моей программы с linux perf и разными режимами графа вызовов дают разные результаты, иногда, когда стек вызовов слишком велик, функции верхнего уровня, такие как main(), усекаются при выполнении записи perf.
Я считаю, что этот предел записи стека вызовов можно изменить с помощью свойства max-stack, кроме того, моя команда:
perf record -g -e cpu-clock/max-stack=100/ ./myProgram
Вопрос: Я запускал свою программу (sjeng) несколько раз (с max-stack=100) и наблюдаю странное поведение: половину времени main() правильно отображается в отчете о производительности, но < strong>половина времени main() составляет всего 70%~. Я проверил скрипт perf для этого, и main не отображался в некоторых стеках вызовов, и ясно, что эти стеки вызовов имеют менее 100 уровней.
В половине случаев запись Perf работает ненормально:
кто-нибудь знает, почему это произошло? Моя перфорированная версия 4.15.18.