Возможно ли профилирование после исправления SPECTER? - PullRequest
1 голос
/ 04 мая 2020

Уже пару недель я пытаюсь профилировать часть числового программного обеспечения и не могу получить полезные результаты. Код, который я профилирую, приводит к огромной функции (__attribute __ ((flatten))), созданной из множества встроенных функций и нескольких вызовов std :: exp / std :: log / std :: pow. Эта функция находится внутри разделяемой библиотеки и загружается через dlopen (). Я использовал

  • профилировщик ЦП Google (зависает в первом fork () (прерывается SIGPROF и перезапускается и прерывается и ...) - та же проблема с опцией g ++ -pg)
  • linux tool perf (вызвал перезагрузку машины, я пожаловался, и они обновили ОС (CENTOS 6.5). Результаты показывают только две инструкции на ассемблере из вышеупомянутой огромной функции. У меня нет разрешений на читать точные источники событий (*: ppp))
  • какая-то старая версия vtune (сложно работать, результаты ненадежны, драйверы оборудования не загружены)
  • sprof (результаты ничего мне не говорят, так как есть только одна функция для профилирования - если избежать использования атрибута flatten, то поведение будет совершенно другим)

Я использую CENTOS 6.5 и g ++ (G CC) 5.3.0 I не имеет никакого влияния на версию ОС или версию компилятора. Я жаловался на древнюю ОС несколько недель go, и они обновили меня до того, что я упомянул выше.

В каком-то первом эфире я успешно использовал профилировщик Google - когда он работал (а не зависал или зависание из-за проблем с обработкой сигналов) это дало полезные результаты.

Кто-нибудь есть какие-либо комментарии? Могут ли все эти неясные результаты быть результатом исправлений для SPECTER? Нужно ли настаивать, чтобы на машине были включены определенные опции профилирования? Нужно ли настаивать на загруженных драйверах vtune? Нужно ли настаивать на обновленной копии vtune? Компилировать с -fno-omit-frame-pointers?

...