posix_fadvise(WILLNEED)会让IO变慢吗?

Spe*_*der 6 linux filesystems operating-system posix linux-kernel

在运行Linux内核版本2.6.18-194.26.1.el5的CentOS 5.5机器上,我注意到posix_fadvise(WILLNEED)使得读取60K文件的速度比普通IO慢得多200%.

似乎实际的fadvise调用是同步的,它还会延迟调度应用程序中使用从文件读取的数据的其他线程.

由于fadvise调用,内核是否可能忙于从磁盘中获取数据,并最终延迟其他计划任务?这似乎与我们期望进行fadvise调用的预期异步预取行为相反.

我的问题是:是否有任何可调内核参数可用于强制执行posix_fadvise(WILLNEED)的异步行为?就像增加内核IO线程一样,页面缓存?

eph*_*ent 7

这是刚刚在LKML上提出的问题.这就是它的设计方式.如果您需要非阻塞fadvise,请在另一个线程中执行.