BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #40747同步于 2011/5/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

如何刷出内核中的缓冲区?

zxsword
2011/5/17镜像同步2 回复
公司里带我的人说,android的内核就是linux内核=。=是这样的么?还是区别挺大的? andriod如何刷清内核缓冲区? linux下可以这样: echo "3" >/proc/vm/drop_caches echo "0" >/proc/vm/drop_caches 路径可能少打了一层=。=记不清 在linux确实可以,但是andriod系统用了没效果。。。想知道andriod系统下该如何刷清内核缓冲区? ------------------ 稍微描述一下情景。公司让我写个程序测试公司产品的文件系统IO性能。从512B到64k,全部得测。一个文件,在做第一次读测试时,内核从文件系统读取文件,然后会缓冲该文件,所以之后的读测试,会从内存中获取文件,也就是测试的结果就不正确了。 linux下的解决方案是刷新缓冲区,方法如上所示。确实可以,嗯。 而andriod下,该怎么办呢?求大牛路过帮忙解答,谢谢啦~~ 当然也可以在第一次测试中读文件的一部分,在第二次测试中读文件的另外一部分,这样就不会有内核缓冲区的影响。。。可是,小BOSS有一些要求,囧。。。 例如,小BOSS要求,测试文件系统用了raw IO之后。还要用stdio再测,用什么fread,fwrite,这和直接readwrite4096字节块有区别么,哎
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
zxsword机器人#1 · 2011/5/17
补充一下: 标准库IO和raw IO的区别我知道的,所以我才向boss说,用什么fread和fwrite没有意义,能不能不写这个测试模块,新人惨兮兮=。= 使用read和write系统调用进行测试,希望 之前的read和write系统调用 对 之后的read&write系统调用 没有影响,那么也就是说希望之后的调用必须去读硬盘,必须在两次调用之间,刷清内核的缓冲区。 linux下该如何冲刷,在上文中已经说了。已经证实有效了。 但是andriod下,该如何冲刷内核缓冲区呢?
zxsword机器人#2 · 2011/5/19
已解决=。=