我想知道为什么 NFS v4 会比 NFS v3 快得多,以及 v3 上是否有任何可以调整的参数。
我挂载文件系统
sudo mount -o 'rw,bg,hard,nointr,rsize=1048576,wsize=1048576,vers=4' toto:/test /test
Run Code Online (Sandbox Code Playgroud)
然后运行
dd if=/test/file of=/dev/null bs=1024k
Run Code Online (Sandbox Code Playgroud)
我可以读取200-400MB/s 但是当我将版本更改为vers=3
,重新安装并重新运行 dd 时,我只能得到90MB/s。我正在读取的文件是 NFS 服务器上的内存文件。连接的两端都是 Solaris 并且有 10GbE 网卡。我通过在所有测试之间重新安装来避免任何客户端缓存。我曾经dtrace
在服务器上看到以衡量通过 NFS 提供数据的速度。对于 v3 和 v4,我更改了:
nfs4_bsize
nfs3_bsize
Run Code Online (Sandbox Code Playgroud)
从默认的 32K 到 1M(在 v4 上我用 32K 达到了 150MB/s)我试过调整
提高 v3 的性能,但不行。
在 v3 上,如果我运行四个并行dd
,吞吐量从 90MB/s 下降到 70-80MBs,这让我相信问题出在某些共享资源上,如果是这样,那么我想知道它是什么以及我是否可以增加它资源。
获取窗口大小的 dtrace 代码:
#!/usr/sbin/dtrace -s
#pragma D option quiet
#pragma D option …
Run Code Online (Sandbox Code Playgroud)