C 如何使用冷缓存启动程序

C 如何使用冷缓存启动程序,c,linux,gcc,x86-64,C,Linux,Gcc,X86 64,我运行了几次基准测试,记录下平均读数。但我注意到,在第一次运行之后,后续的运行速度更快。我想这与指令缓存有关,所以当我下次运行程序时,基准测试已经在缓存中有指令了。有没有办法用冷指令和数据缓存启动程序?这是一种正常行为。避免此问题的一种方法是在主运行前进行少量预热。这些预热运行将覆盖以前运行程序的高速缓存。计算平均值时,排除热身运行值,仅取实际运行值。采用这些方法的各种基准点工具如下:,lmbench等,其中预热值可用 而且,如果您正在运行的基准测试依赖于需要从磁盘读取的数据,那么磁盘缓存也会产

我运行了几次基准测试,记录下平均读数。但我注意到,在第一次运行之后,后续的运行速度更快。我想这与指令缓存有关,所以当我下次运行程序时,基准测试已经在缓存中有指令了。有没有办法用冷指令和数据缓存启动程序?

这是一种正常行为。避免此问题的一种方法是在主运行前进行少量预热。这些预热运行将覆盖以前运行程序的高速缓存。计算平均值时,排除热身运行值,仅取实际运行值。采用这些方法的各种基准点工具如下:,lmbench等,其中预热值可用


而且,如果您正在运行的基准测试依赖于需要从磁盘读取的数据,那么磁盘缓存也会产生一些影响,一种避免的方法是尽可能将这些数据缓存到ram中。kernbench中使用此技术是为了避免与磁盘缓存相关的问题。

我认为更可能是磁盘缓存?这可能是因为程序和数据是从磁盘读取的,而不是CPU缓存。您确定这是指令缓存吗?其他可能性:数据缓存、磁盘缓存……是的,关闭计算机并再次启动,这显然是过度使用way@mf:或者运行另一个程序,在这两者之间完全消耗数据、指令和磁盘缓存。这确实是大多数基准测试工具的工作方式,但在现实生活中,您不会得到热缓存。Onteresting如何禁用基准的缓存