我有一台Solaris 10服务器,在千兆局域网上有一台Mac OS X客户端。 Solaris服务器导出一个RAID-Z支持的NFS共享,所有客户端连接到它。 但是,传输文件比我认为的要慢。 我启用了巨型帧,并将最大吞吐量从18MB / s提高到了30MB / s,但仍然比我认为的要慢。 我认为目前的瓶颈是我的交换机,它似乎不能像我的机器能够每秒钟那样交换数据包。 另外,两台机器使用大约30-40%的CPU进行传输。
除了更换我打算做的交换机之外,我能做些什么来降低CPU使用率并提高吞吐量?
几件事情:
要确定开关是否是问题,请将开关置于等式之外并进行testing。 将机器背靠背重新testing。 GigE卡将为您自动交叉连接,不需要特殊的电缆。
之后,NFS调整是一种黑色艺术。 从我所看到的情况来看,NFS服务器和NFS客户端往往是非常特定的。 幸运的是,Google似乎有很多这方面的论文。 读一堆。
通常ZFS意图日志(ZIL)是ZFS文件服务器的NFS瓶颈。 ZFS严格遵循NFS协议,并确保同步写入的数据在向作者报告成功之前确实碰到磁盘。 ZFS使用ZIL临时存储此数据,然后将其写入更大的块到池中。 如果写入ZIL的速度很慢(高延迟),那么NFS性能可能也会变慢。 这个问题的一个很好的testing案例是提取一个大的tarball(许多文件)到NFS导出。
至less有两种解决scheme可以提高NFS的性能:
几个提示:
OS X NFS在我们的经验(OS X客户端,Linux服务器)方面并不出色。 我们通过使用桑巴来获得更好的性能。 因人而异!