服务器和客户端都是64位Ubuntu 10.04 LTS.
有问题的应用程序是一个自定义应用程序,它使用mmap()进行快速随机文件访问.它的理想状态是整个文件缓存在RAM中.
网络连接真的很快10Gb以太网.它是虚拟服务器刀片设置.
网络连接不会减慢速度,因为在使用虚拟磁盘(iSCSI到SAN)时,一切都表现得非常好.但是当我们在NFS主目录挂载上运行应用程序时,性能会转移到狗身上.
似乎Linux内核没有缓存任何东西.因此,它一遍又一遍地读取mmap()访问所需的每个磁盘块.
NFS挂载是通过autofs完成的,autofs只有默认设置. / proc / mounts显示NFS安装完成时使用以下选项:
rw,relatime,vers=3,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.11.52,mountvers=3,mountproto=tcp,addr=192.168.11.52
如何让Ubuntu 10.04缓存文件而不是一直重新加载?
解决方法
您是否已调整NFS导出或安装?您目前的装载选项有哪些?您在NFS服务器上使用哪个文件系统?
我知道你正在使用Ubuntu,但这个NFS tuning guide from Red Hat可能是一个好的开始,特别是如果你有一个很好的性能指标来测试不同的设置.本文档中的一些提示涵盖了在通过NFS访问文件和扩展属性缓存时限制元数据更改.
在这种情况下,NFS caching(FS-Cache,CacheFS)是一个选项吗?