Как я могу измерить процессорное время определенного набора потоков?

Я запускаю программу C ++ в Linux.

Есть несколько пулов потоков (для вычислений, для io, для … таких вещей).

Системный вызов clock () дает мне возможность измерить время процессора, затраченное всеми ядрами процессора на процесс.

Однако я хочу измерить время процессора, затраченное только потоками в пуле вычислительных потоков.

Как мне этого добиться?

Спасибо

7

Решение

Получить CPU clock ID каждого потока вы можете использовать: pthread_getcpuclockid
и используя это CPU clock ID Вы можете получить текущее время процессора потока, используя: clock_gettime.

Ниже приведен пример кода, демонстрирующий то же самое:

struct timespec currTime;
clockid_t threadClockId;

//! Get thread clock Id
pthread_getcpuclockid(pthread_self(), &threadClockId);
//! Using thread clock Id get the clock time
clock_gettime(threadClockId, &currTime);
8

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

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

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