当我运行具有两个不同部分的程序时,我试图获取页面错误。
我所做的是使用两种矩阵乘法方法进行一些运算,并尝试找出哪一种方法会导致更多页面错误。
/Operations for method 1
getrusage (RUSAGE_SELF, &usage);
fault1=usage.ru_minflt;
/operations for Method 2
getrusage (RUSAGE_SELF, &usage);
fault2=usage.ru_minflt-fault1;
但是似乎fault2=0,我认为不正确。如果我使用两个不同的变量usage和usage2,似乎两者都不起作用。 有没有命令开始计算每种乘法的错误? 我的代码有错吗?
谢谢各位的解答
最佳答案
页面错误的数量完全有可能为零。它与加载数据的方式、正在使用的共享库(以及它们是否已经在内存中)、写时复制的使用情况以及与算法类似的情况有关.
您确定不是在寻找处理器缓存未命中的数量吗?对于大矩阵的矩阵乘法,简单算法的缓存使用率可能比最佳算法差得多。尝试将 valgrind
与 cachegrind
工具结合使用。
关于c - 如何使用 getrusage 读取 C 中的页面错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1907402/