AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1078363
Accepted
Ealrann
Ealrann
Asked: 2021-09-23 11:46:55 +0800 CST2021-09-23 11:46:55 +0800 CST 2021-09-23 11:46:55 +0800 CST

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

  • 772

我正在生成最终通过 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。

在此处输入图像描述

在此处输入图像描述

linux nfs networking xfs
  • 2 2 个回答
  • 712 Views

2 个回答

  • Voted
  1. Best Answer
    Matthew Ife
    2021-09-24T06:36:50+08:002021-09-24T06:36:50+08:00

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

    你怎么会知道这事?大多数客户端内存都在页面缓存中,这是完全正常的,即使改进服务器上的缓冲也不会阻止该数据客户端的积极缓存。

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

    NFS 具有所谓的“接近打开”一致性,这意味着数据和元数据的内容只有在您没有主动打开文件时才能真正保证稳定(也就是说,另一个客户端可以在另一个客户端上更改文件)系统,你不会更聪明)。

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

    /etc/exports话虽如此,但在不知道将更多数据卸载到服务器的一种方法中发生了什么的情况下,可能是确保您使用syncmount 选项在客户端上安装 NFS,并在服务器上使用 mount 选项导出路径async。

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

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

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

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

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

    • 3
  2. John Mahowald
    2021-09-24T11:50:54+08:002021-09-24T11:50:54+08:00

    不,强制使用更少的内存可能会使事情变慢,而不是更快。您已经在 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 运行不足,我不建议采取行动。

    • 1

相关问题

  • 更改 PHP 的默认配置设置?

  • 有什么软件可以模拟局域网?

  • 保护新的 Ubuntu 服务器 [关闭]

  • 带宽利用工具?[关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve