在运行 Linux 内核版本 2.6.18-194.26.1.el5 的 CentOS 5.5 机器上,我注意到 posix_fadvise(WILLNEED) 使读取 60K 文件的速度比普通 IO 慢了近 200%。
看起来实际的 fadvise 调用是同步的,它还延迟了应用程序中使用从文件读取的数据的其他线程的调度。
是否有可能内核因为 fadvise 调用而忙于从磁盘中获取数据,并最终延迟了其他计划任务?这似乎与我们期望进行 fadvise 调用的预期异步预取行为相反。
我的问题是:是否有任何可调内核参数可用于强制执行 posix_fadvise(WILLNEED) 的异步行为?比如增加内核IO线程,页面缓存?
最佳答案
这是最近的 asked on LKML .这就是它的设计方式。如果您需要非阻塞的 fadvise
,请在另一个线程中执行。
关于linux - posix_fadvise(WILLNEED) 使 IO 变慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4936520/