如何在Linux上通过NFS加速和cachingmmap文件访问?

服务器和客户端都是64位的Ubuntu 10.04 LTS。

有问题的应用程序是使用mmap()进行快速随机文件访问的自定义应用程序。 它的理想状态是当整个文件被caching在RAM中。

networking连接是非常快的10Gb以太网。 这是一个虚拟服务器刀片设置。

这不是networking连接速度下降的原因,因为当使用虚拟磁盘(iSCSI到SAN)时,所有东西都performance出色。 但是当我们在NFS主目录挂载上运行这个应用程序时,性能会落到狗身上。

看来Linux内核没有caching任何东西 。 所以它正在读取mmap()访问所需的每一个磁盘块。

NFS挂载是通过autofs完成的,只有默认设置。 /proc/mounts显示了使用以下选项完成NFS安装:

RW,relatime,VERS = 3,RSIZE = 131072,WSIZE = 131072,namlen = 255,硬,原= TCP,Timeo酒店= 600,重传= 2,仲= SYS,mountaddr = 192.168.11.52,mountvers = 3,mountproto = TCP,ADDR = 192.168.11.52

如何让Ubuntu 10.04caching文件,而不是一直重新加载?

你有没有调整你的NFS导出或挂载? 你目前的挂载选项是什么? 您在NFS服务器上使用哪个文件系统?

我知道你使用的是Ubuntu,但是这个来自Red Hat的NFS调优指南可能是一个好的开始,特别是如果你有一个很好的性能指标来testing不同的设置。 文档中的一些提示涵盖了通过NFS访问文件并扩展属性caching时限制元数据的变化。

在这种情况下, NFScaching (FS-Cache,CacheFS)是否是一个选项?