服务器和客户端都是64位的Ubuntu 10.04 LTS。
有问题的应用程序是一个用于mmap()
快速随机文件访问的自定义应用程序。其理想状态是整个文件都缓存在 RAM 中。
网络连接是速度非常快的 10Gb 以太网。这是一个虚拟服务器刀片设置。
网络连接不会减慢速度,因为使用虚拟磁盘(iSCSI 到 SAN)时一切都表现良好。但是当我们在 NFS 主目录安装上运行应用程序时,性能就会下降。
Linux 内核似乎没有缓存任何事物mmap()
。因此,它会一遍又一遍地读取访问所需的每一个磁盘块。
NFS 挂载是通过 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 缓存该文件而不是一直重新加载它?
答案1
您是否调整过 NFS 导出或挂载?您当前的挂载选项是什么?您在 NFS 服务器上使用哪种文件系统?
我知道你正在使用 Ubuntu,但是这个Red Hat 的 NFS 调优指南可能是一个好的开始,特别是如果你有一个好的性能指标来测试不同的设置。文档中的一些提示涵盖了在通过 NFS 访问文件时限制元数据更改以及扩展属性缓存。
是NFS 缓存(FS-Cache、CacheFS)在这种情况下是一个选项吗?