PAPI 似乎只衡量其自身进程的性能,例如
#include <papi.h>
int main()
{
PAPI_library_init(PAPI_VER_CURRENT);
int eventset = PAPI_NULL;
PAPI_create_eventset(&eventset);
PAPI_add_named_event(eventset, "PAPI_TOT_CYC");
PAPI_reset(eventset);
long long count;
PAPI_start(eventset);
some_work();
PAPI_stop(eventset, &count);
std::cout << "PAPI: measured " << count << " cycles" << std::endl;
return 0;
}
这里 PAPI 测量由some_work()
.
但是,如果我想测量整个 CPU 的周期数,而some_work()
上面被替换为sleep(1)
?
如果我运行一个 CPU hog 进程,它count
只会在很小的程度上改变它,而增加工作会some_work()
产生很大的影响。如何让 PAPI 测量整个 CPU 性能?