Мое многопоточное приложение (c ++) использует pthreads. Приложение автоматически генерирует потоки и повторно использует их по требованию и позволяет отменять поток, если он слишком долго простаивает.
Я поместил «специальный поток» для сбора статистических данных, чтобы посмотреть на производительность приложения при различных сценариях.
Я не могу дождаться завершения процесса, чтобы узнать, сколько ЦП было использовано.
Попробовал использовать это из специальной ветки, но результаты не соответствовали выводу ps & top:
struct rusage ru;
double utime, stime, ttime ;
if (getrusage(RUSAGE_SELF, &ru) == -1)
return;
utime = ru.ru_utime.tv_sec + ( ru.ru_utime.tv_usec / 1000000 ); // Total CPU time used in user space
stime = ru.ru_stime.tv_sec + ( ru.ru_stime.tv_usec / 1000000 ); // Total CPU time used in kernel space
ttime = utime + stime; // Total CPU Utilization
Можете ли вы хорошие хаки, скажите мне, если есть лучший способ сделать это, или выше является правильным методом, и я на самом деле упускаю что-то еще?
Заранее спасибо.