我想提高我的 Amazon FSx for Lustre 文件系统的性能。
解决方法
增加文件系统大小
FSx for Lustre 文件系统支持的吞吐量与其存储容量成正比。
吞吐能力 = 存储容量 (TiB)*每单位存储吞吐量 (MBps)
例如,一个具有 4.8 TiB 存储容量和每存储单元每 TiB 吞吐量 50 MBps 的永久文件系统可提供:
- 240 MBps 的合计基准磁盘吞吐量
- 1.152 GiBps 的突发磁盘吞吐量
如果对象存储目标 (OST) 几乎已满,则在您读取或写入文件系统时,文件系统可能会挂起或卡住。在这种情况下,请增加文件系统的大小。
对不平衡的 OST 进行故障排除
FSx for Lustre 是一个分布式文件系统,由在文件系统中存储数据的 OST 组成。要查看 OST 的数量和每个 OST 的大小,请从客户端运行以下命令:
$lfs df -h
如果它是一个不平衡的文件系统,则输出应看起来类似于以下内容:
UUID bytes Used Available Use% Mounted on
testfs-MDT0000_UUID 4.4G 214.5M 3.9G 4% /mnt/testfs[MDT:0]
testfs-MDT0001_UUID 4.4G 144.5M 4.0G 4% /mnt/testfs[MDT:1]
testfs-OST0000_UUID 2.0T 751.3G 1.1G 37% /mnt/testfs[OST:0]
testfs-OST0001_UUID 2.0T 755.3G 1.1G 37% /mnt/testfs[OST:1]
testfs-OST0002_UUID 2.0T 1.9T 55.1M 99% /mnt/testfs[OST:2] <-
testfs-OST0003_UUID 2.0T 751.3G 1.1G 37% /mnt/testfs[OST:3]
testfs-OST0004_UUID 2.0T 747.3G 1.1G 37% /mnt/testfs[OST:4]
testfs-OST0005_UUID 2.0T 743.3G 1.1G 36% /mnt/testfs[OST:5]
filesystem summary: 11.8T 5.5T 5.7T 46% /mnt/lustre
单个 OST 的可用存储空间可能相对小于或大于其他 OST。发生这种情况是因为以下情况之一:
- 添加了新的 OST,但优化尚未完成。
- 默认条带数为一,将文件存储在单个 OST 上了。
如果多个 OST 已满,请增加文件系统的存储容量。如果只有少量 OST 已满,请重新平衡 OST。
此外,请调整条带配置以释放空间并提高性能。您可以设置一个渐进式文件布局 (PFL) 配置,允许文件的布局随大小变化。例如,要指定布局配置,请使用带有 -E 选项的 lfs setstripe 命令为不同大小的文件指定布局组件:
lfs setstripe -E 100M -c 1 -E 10G -c 8 -E 100G -c 16 -E -1 -c 32 /mountname/directory
注意:
- PFL 可能无助于处理较小的文件。
- 您可以使用 lfs setstripe 命令仅为新文件和新文件夹设置条带配置。您必须使用 lfs migrate 命令来为现有文件或文件夹设置条带配置。
- 顺序读取可能无法从条带配置中受益。
为计算密集型工作负载使用更大的实例
对于密集型工作负载,请选择拥有更大内存或计算能力的实例。
以下是一些用于调整实例的最佳实践:
1. 调整大型客户端实例以获得最佳性能:
对于内存超过 64 GiB 的客户端实例类型,请应用以下调整措施:
lctl set_param ldlm.namespaces.*.lru_max_age=600000
对于 CPU 内核数超过 64 个的客户端实例类型,请应用以下调整措施:
echo "options ptlrpc ptlrpcd_per_cpt_max=32" >> /etc/modprobe.d/modprobe.conf
echo "options ksocklnd credits=2560" >> /etc/modprobe.d/modprobe.conf
# reload all kernel modules to apply the above two settings
sudo reboot
2. 安装客户端后,进行以下调整:
sudo lctl set_param osc.*OST*.max_rpcs_in_flight=32
sudo lctl set_param mdc.*.max_rpcs_in_flight=64
sudo lctl set_param mdc.*.max_mod_rpcs_in_flight=50
注意:
lctl set_param 命令在重启后不会继续存在。您不能在客户端永久设置这些参数。因此,最佳实践是设置一个 boot cron 作业,以便在重启后使用推荐的调整来设置配置。
相关信息
汇总基准吞吐量和突发吞吐量
性能提示