如何在i / o操作后删除系统内部缓冲区的缓存?

时间:2012-11-08 14:03:18

标签: android android-ndk sd-card

我正在建立Android设备和SD卡之间的基准项目,以跟踪不同类型的SD卡之间的性能变化。

在我的基准测试中,我使用了许多io方法,以及对SD卡的逻辑和物理访问。 有时我控制内部缓冲区的大小(使用setnvbuf()

在每个文件读/写之间我想清除系统的缓存或内部缓冲区。 管理这个的最佳方法是什么?

我的项目是部分原生的,使用ndk,所以如果需要我可以使用c / cpp方法。

感谢。

1 个答案:

答案 0 :(得分:0)

基准测试文件系统很难。有各种级别的缓存。当您进行i / o操作时,Linux(内核)将缓存您的数据并且很难管理该缓存,例如,请参阅此cyanogenmod wiki page。实际上你不应该依赖这样的机制,而是使用更长时间运行的测试来查看sdcards的性能 - 这通常会阻止它们(我很认真)。

检查执行文件系统基准测试的长期项目也是一个非常好的主意,例如iozone