Счетчик производительности не работает с perf_open_event()Linux

Ответить
Anonymous
 Счетчик производительности не работает с perf_open_event()

Сообщение Anonymous »

Я пытаюсь получить доступ к счетчикам производительности в большом и сложном приложении. Но когда я читаю результат, он всегда возвращает 0. Я также включил общее время работы и общее время включения, которые оба возвращают 0. Код, который я использую для этого, указан ниже:

Код: Выделить всё

  perf_event_attr PerfEvent;
std::memset(&PerfEvent, 0, sizeof(PerfEvent));
PerfEvent.type = PERF_TYPE_HARDWARE;
PerfEvent.disabled = 0;
PerfEvent.pinned = 1;
PerfEvent.inherit = 1;
PerfEvent.config = PERF_COUNT_HW_CPU_CYCLES;
PerfEvent.read_format = PERF_FORMAT_TOTAL_TIME_ENABLED | PERF_FORMAT_TOTAL_TIME_RUNNING;

int fd = syscall(__NR_perf_event_open, &PerfEvent, getpid(), -1, -1, 0);

// Code to profile

uint64_t RetVal[3];
const int32_t rc = read(fd, &RetVal, sizeof(RetVal));
close(fd);
Я также убедился, что приложение имеет следующие возможности: CAP_PERFMON и CAP_SYS_ADMIN. Я даже написал небольшую функцию, чтобы проверять это в самом приложении.

Код: Выделить всё

const bool IsCapabilitySet(int Capability){
if(!cap_valid(Capability)){
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78743350/performance-counter-not-running-with-perf-open-event[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»