如何使用getrusage读取C中的页面错误?

时间:2009-12-15 13:19:19

标签: c getrusage

当我运行一个包含两个不同部分的程序时,我正试图弄错页面。

我所做的是使用两种矩阵乘法方法进行的一些操作,并试图找出导致更多页面错误的方法。

/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,似乎也不起作用。 是否有任何命令可以开始计算每种乘法的故障? 我错了代码吗?

感谢您的回答

1 个答案:

答案 0 :(得分:0)

页面错误的数量完全可能为零。它更多地与你加载数据的方式有关,你正在使用哪些共享库(以及它们是否已经在内存中),写时复制使用和类似于你的算法

您确定不是在寻找处理器缓存未命中数吗?对于大矩阵的矩阵乘法,朴素算法的缓存使用率可能比最佳算法差得多。尝试将valgrindcachegrind工具一起使用。