增加 NFS 服务器上的内存使用量

增加 NFS 服务器上的内存使用量

我正在生成数据(100GB 文件),这些数据最终通过 10Gb 网络上的 NFS v4.2 复制到服务器。这些文件存储在许多硬盘上,采用 XFS 格式(每个目标驱动器一个副本)。

当复制任务正在运行时:

  • 客户端内存占用巨大(可能超过 64GB,它会占用尽可能多的内存)。
  • 但服务器上几乎没有使用任何内存。

我想减少客户端的内存使用量,因为它们不断产生数据,这会减慢它们的速度。相反,服务器基本上不使用。

我猜是因为服务器上的硬盘速度很慢,所以客户端会缓冲尽可能多的数据,以减少复制阻塞。我无法更改硬件设置。

有什么方法可以强制服务器缓存更多数据? 我倾向于优先使用服务器内存而不是客户端内存。

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。

在此处输入图片描述

在此处输入图片描述

答案1

我想减少客户端的内存使用量,因为它们不断地产生数据,这会降低它们的速度。

您怎么知道的?大多数客户端内存都在页面缓存中,这是完全正常的,即使改善服务器上的缓冲也无法阻止客户端积极缓存此数据。

您是否尝试过刷新页面缓存(作为测试)并查看应用程序在不使用页面缓存的情况下的运行情况?

NFS 具有所谓的“接近打开”一致性,这意味着当您没有主动打开文件时,数据和元数据的内容实际上只能保证稳定(也就是说,另一个客户端可以在另一个系统上更改文件而您却一无所知)。

由于这种一致性限制,NFS 客户端系统应用程序依赖页面缓存来确保在必要时可以读回数据。

话虽这么说,如果不知道您在服务器上发生了什么,那么/etc/exports将更多数据卸载到服务器上的一种方法可能是确保使用syncmount 选项在客户端上挂载 NFS,并在服务器上使用 mount 选项导出路径async

这将确保在客户端将写入提交给服务器,而服务器在将数据提交到磁盘之前始终回复“完成”。

这会影响客户端的吞吐量,因为您会因为在客户端验证每个请求而导致延迟,但服务器会缓冲更多数据,因为它不会等待数据先进入磁盘。您可能还想调整dirty_write_centisecs服务器上的其他位,以允许它将更多数据缓冲到写回中。

但问题在于——这可能会导致客户端速度变慢,并在服务器崩溃时降低服务器的完整性。如果服务器崩溃,您可能会丢失数据。

此外,这不会影响 NFS 无法真正控制的客户端页面缓存的内存使用情况。

总而言之,我怀疑减少客户端的内存使用量(如果您在此处测量的是页面缓存)是否会提高客户端的性能。

答案2

不,强制使用较少的内存可能会使速度变慢,而不是变快。您已经在 188 GB 的快速 DRAM 上花费了电力,不妨使用它。

客户端主机有 188 GB 的 MemTotal,其中 162 GB 用于缓存。实际上内存需求相当低,请注意 123 GB 的 MemAvailable 可以非常快速地释放。40 GB 的 Shmem 中的大部分可能是 tmpfs。

由于 Cached + Shmem 的总和大于 MemTotal,我怀疑 tmpfs 被计算了两次,一次是作为共享内存,一次是在缓存中。这也解释了为什么 Cached 减去 Shmem 等于 MemAvailable,缺少持久存储的 tmpfs 无法释放。

服务器端,15 GB,更改 MemTotal,缓存中 13 GB。此主机上有足够的可用内存。据推测,它所做的大部分工作是提供文件服务,而不是很多其他内存需求。

没有证据表明诸如繁重的 vmscan 活动或者 MemAvailable 不足,我不建议采取行动。

相关内容