准确测量内核空间开销的方法

时间:2011-12-21 19:22:07

标签: linux performance statistics linux-kernel

我最近为Linux实现了一种挂钩系统调用的安全机制。现在我必须衡量它造成的开销。该项目需要比较具有和不具有该机制的典型Linux应用程序的执行时间。通过典型的Linux应用程序我假设前。 gzipping 1G文件,执行'find /',grepping文件。主要目标是显示不同类型任务的开销:CPU绑定,I / O限制等。

问题是:如何组织测试以使其可靠?第一个重要的事实是我的机制仅在内核空间中起作用,因此它与比较systime是相关的。我可以使用'time'命令,但它是测量systime最准确的方法吗?另一个想法是在长循环中运行这些应用程序以最小化错误。然后循环应该在内部或外部时间命令?如果他们在外面,我会得到很多结果 - 我应该选择最小值,最大值,中位数,平均值吗?

感谢您的任何建议。

1 个答案:

答案 0 :(得分:3)

我认为您希望更多地测量典型的应用程序负载(正如Ninjajl的评论所暗示的,内核的编译可能是一个很好的负载)。您可能不希望测量每个系统调用本身内部的开销,甚至不想测量整个内核内部的开销。

这样做的原因是大多数应用程序在用户空间中花费的时间和资源比在kernel-land(即系统调用)中花费的多得多,因此系统调用内部的开销是“二阶”效应,并且可能无关紧要。许多。当然,也有可能的例外。

也许phoronix test suite可能是相关的。

您可能会对oprofile

感兴趣

另请参阅this answerthis question