我正在生成最终通过 NFS v4.2 在 10Gb 网络上复制到服务器的数据(100GB 文件)。这些文件存储在许多 HDD 上,采用 XFS 格式(每个目标驱动器一个副本)。
当复制任务正在运行时:
- 客户端内存使用量很大(可能超过 64GB,它需要尽可能多的内存)。
- 但是服务器上几乎没有使用内存。
我想减少客户端的内存使用量,因为它们会不断产生数据并且会减慢它们的速度。相反,服务器主要是未使用的。
我想由于服务器上的 HDD 速度很慢,客户端会缓冲尽可能多的数据以减少副本阻塞。我无法更改硬件设置。
有没有办法强制服务器缓存更多数据? 我宁愿优先使用服务器内存而不是客户端内存。
NFS 配置:
10.0.3.1:/ /mnt/field nfs nfsvers=4.2,noatime,nodiratime,_netdev,noauto,x-systemd.automount,x-systemd.mount-timeout=10 0 0
/etc/exports
:
/mnt 10.0.0.0/16(rw,async,fsid=0,no_subtree_check,crossmnt)
服务器上的网卡配置:
MTU 9000
rinbuffer tx 512, rx 1024
客户端网卡配置:
MTU 9000
rinbuffer tx 1024, rx 512
编辑: 根据要求,/proc/meminfo:
客户端服务器 - - - -------------------------
此客户端上的内存使用情况的监视器:
网络使用:
注意:客户端使用大 tmpfs (100GB) 来计算。我认为这个 tmpfs 永远不会从可用内存计数中减去。
编辑2:
网络和内存使用之间的相关性在另一个客户端上更为明显(我应该从那个开始)。此客户端不使用任何 tmpfs。