[聚合文章] 深入研究一种适合 SAS Foundation 混合工作负载的新的软件定义融合基础架构

软件架构 2017-11-21 22 阅读

要了解这个新的软件定义融合基础架构,可以参阅标题为“ 一种适合 SAS Foundation 混合工作负载的新的软件定义融合基础架构 ”的技术简报。该技术简报描述了一种为 SAS 上用于内部测试的 SAS Mixed Analytics 工作负载提供出色性能的架构和方法。该融合基础架构的关键元素包括 IBM®Elastic Storage Server (ESS)、IBM Power® 服务器和来自 Mellanox 的基于以太网的存储结构。

本文将介绍测试的用途、目标和结果,包括测试背后的技术细节、测试环境的规格,以及测试方案细节和来自这些测试的性能数据。最后,还会提供调优融合基础架构的指南,以帮助获得最佳性能。

系统架构、配置、调优和文件系统创建

图 1 演示了在实验室环境中使用 IBM Elastic Storage Server 和 IBM Power E880 服务器测试 SAS 软件所用的架构和配置。图 2 展示了 ESS 网络配置。

图 1. 针对 IBM Power 服务器和 IBM Elastic Storage Server 上的 SAS 的解决方案架构

图 2. ESS 网络硬件配置

配置

本节将介绍该架构的每个组件的详细配置。

软件

  • SAS 9.4 TS1M3 64 位
  • IBM AIX 7.2 (7200-00-02-1614)
  • IBM PowerVM®Enterprise Edition
  • Virtual I/O Server (VIOS) 2.2.3.50
  • IBM Spectrum Scale™(以前称为 IBM GPFS)4.2.1.1
  • IBM ESS V4.5.1
    • Red Hat 7.1
  • MLNX-OS 3.3.6.1002

网络配置

  • IBM 交换机型号:8831-NF2 (Mellanox SX1710)
  • Mellanox ConnectX-3 40GbE 适配器 IBM Feature Code EC3A
  • 36 端口 40GbE / 56GbE 交换机
  • MLNX-OS V3.6.1002
  • 启用 Global Pause Flow Control
  • 仅支持 TCP/IP 流量

IBM Power System E880 服务器配置

  • 型号:9119-MHE
  • 固件版本:IBM FW830.00 (SC830_048)
  • 处理器架构:POWER8
  • 时钟速率:4356 MHz
  • SMT:关闭、2、4、8(SMT4 是默认设置并在基准测试期间使用)
  • 核心数:64(62 个核心用于被测试的 LPAR,2 个核心用于 VIOS)
  • 内存:512 GB(384 GB 用于被测试的 LPAR,8 GB 用于 VIOS)
  • 内部驱动器:12 个 600 GB(用于引导 VIOS 和 LPAR)
  • 4 个扩展柜,每个扩展柜的 x16 插槽中都有一个 40GbE 双端口适配器(IBM 特征码为 EC3A)

ESS 配置

  • 型号:5146-GL4
  • 两个 IBM Power System S822L,用作 I/O 服务器
  • 256 GB (16 x 16GB DRAM)
  • 一个 IBM Power System S821L 服务器,用作 xCat 管理服务器
  • 一个 IBM 7042-CR8 机架安装式硬件管理控制台 (HMC)
  • 存储接口:每个 I/O 服务器 3 个 LSI 9206-16e 四端口 6Gbps SAS 适配器 (A3F2)
  • I/O 网络:每个 I/O 服务器 3 个双端口 40GbE Mellanox ConnectX-3 适配器 (EC3A)
  • 每个 ESS I/O 服务器通过 ALB 连接 3 个 Mellanox 适配器端口
  • 独立磁盘冗余阵列 (RAID) 控制器:IBM PCIe IPR SAS Adapter。每个服务器一个 IPR 适配器,每个服务器一个 RAID 10 OS 引导盘
  • 交换机:
    • 一个 1GbE 交换机包含两个 VLAN,提供两个隔离子网作为服务和管理网络。
    • IBM 8831-NF2 – 40GbE 交换机,Mellanox 型号 SX1710
  • 4 个 DCS3700 JBOD 60 驱动器机柜(1818-80E,60 个驱动器插槽)
    • 每个驱动器机柜包含 58 个 2 TB 7.2K LN-SAS HDD 和 2 个 400 GB 固态驱动器 (SSD)
  • 16 条 SAS 电缆

创建 ESS Spectrum Scale 文件系统

使用以下 Spectrum Scale 文件系统参数来创建 SASWORK、SASDATA 和 SASUTIL 应用程序存储空间。最初创建了各种不同大小的文件系统块并测试了性能。

一般而言,Spectrum Scale 文件系统块大小可通过将应用程序的块大小乘以 32 进行计算。IBM ESS 使用了 GPFS Native RAID (GNR)。一种简单解释是,GNR 将文件系统块大小分解为 32 个小块并将它们暂存在磁盘子系统上。

但是,采用 256 KB 的 SAS BUFSIZE 时,在实验室环境中使用各种不同文件系统块大小执行的 SAS 工作负载测试表明,8 MB 或 16 MB 文件系统块大小的性能最佳。

创建并挂载文件系统的样本命令:

# gssgenvdisks --vdisk-suffix _sasdata_8m --create-vdisk --create-filesystem --filesystem-name sasdata_8m --data-vdisk-size 4000 --data-blocksize 8M
   
# mmmount all
Fri Jun  3 19:21:25 CDT 2016: mmmount: Mounting file systems ...

# df -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/sda3        246G  3.0G  244G   2% /
devtmpfs          60G     0   60G   0% /dev
tmpfs             60G     0   60G   0% /dev/shm
tmpfs             60G   95M   60G   1% /run
tmpfs             60G     0   60G   0% /sys/fs/cgroup
/dev/sda2        497M  156M  341M  32% /boot
/dev/sasdata_1m   16T  264M   16T   1% /gpfs/sasdata_1m
/dev/saswork_1m   16T  264M   16T   1% /gpfs/saswork_1m
/dev/sasutil_1m  7.9T  264M  7.9T   1% /gpfs/sasutil_1m
/dev/sasutil_4m  7.9T  288M  7.9T   1% /gpfs/sasutil_4m
/dev/saswork_4m   16T  288M   16T   1% /gpfs/saswork_4m
/dev/sasdata_4m   16T  288M   16T   1% /gpfs/sasdata_4m
/dev/sasdata_8m   16T  320M   16T   1% /gpfs/sasdata_8m
/dev/sasutil_8m  7.9T  320M  7.9T   1% /gpfs/sasutil_8m
/dev/saswork_8m   16T   16T     0 100% /gpfs/saswork_8m

工作负载、测试方案和结果

本节将介绍用于执行测试的工作负载、测试方案和详细结果。

工作负载

性能验证期间使用的工作负载是一种 SAS Foundation 混合分析工作负载。该工作负载由一组并发运行的分析作业组成。这些作业对给定 IT 基础架构的计算、内存和 I/O 功能施加压力。

该工作负载由 20 个单独的 SAS 程序测试组成:10 个计算密集型测试,2 个内存密集型测试,8 个 I/O 密集型测试。一些测试使用现有的数据存储来运行,一些测试生成自己的数据,以便在运行测试期间执行。这些测试是短期运行(几分钟)和长期运行(几小时)作业的混合体。这些测试以并发方式和/或顺序方式反复运行,以获得 20-test 的平均并发工作负载或 30-test 的平均并发工作负载。20-test 工作负载总共运行了 71 个作业,30-test 工作负载总共运行了 101 个作业。在峰值负载期间,30-test 工作负载可以采用 55 个处理器,并发生成 I/O 密集型作业。

工作负载的性能指标是 工作负载响应时间 (以分钟为单位),这是工作负载中所有作业的累积真实响应时间。响应时间越短越好。我们还分析了其他性能指标,比如处理器时间(用户 + 系统时间)、服务器利用率和 I/O 吞吐量。收集这些指标是为了了解启用压缩时对性能的影响。

工作负载响应时间(真实时间)和处理器时间(用户 + 系统时间)是从 SAS 作业的日志文件采集的。这些统计数据通过 SAS FULLSTIMER 选项进行记录。从 IBM POWER7®处理器架构开始,IBM Power Systems™ 使用处理器利用率资源注册表 (PURR) 来准确报告系统使用情况。POWER8 处理器的 PURR 系数需要应用到文中描述的处理器时间指标。要获得 PURR 系数的更多细节,请参阅“ 通过 IBM XIV Storage System 和 IBM FlashSystem 将 SAS Business Analytics 部署在基于 IBM POWER8 处理器的系统上 ”和它的附录 B。

测试方案

基准测试中运行了以下方案:

  • 单节点测试:20-test 混合分析工作负载
  • 可扩展性测试:20-test 和 30-test 混合分析工作负载
  • 对以 56GbE 速度运行的 Mellanox 结构的测试:30-test 混合分析工作负载

执行该测试时,服务器和存储系统上都没有运行竞争性工作负载。测试团队收集了工作负载、主机端和存储端性能指标,并将基准测试与最终测试中的这些指标进行比较。

测试结果

本节将介绍执行这些测试方案的结果。

单节点测试:20-test 混合分析工作负载

用于测试 20-test 混合分析工作负载的逻辑分区 (LPAR) 配置包括:

  • 16 个运行 SMT4 的核心(专用模式)
  • 96 GB 内存
  • 1 个 40GbE 端口
  • 适合 Spectrum Scale 文件系统(SASWORK、SASDATA 和 SASUTIL)的 16 MB 块大小

图 3. 单节点上的 20-test 混合分析工作负载的网络 I/O 吞吐量

图 4. 单节点上的 20-test 混合分析工作负载的处理器利用率

图 3 和图 4 展示了 20-test 单节点测试的网络 I/O 吞吐量和处理器利用率。以下是关键结果:

  • 真实时间为 1073 分钟,用户 + 系统时间为 793 分钟(应用了 PURR 系数 0.6)。
  • 平均和峰值 I/O 吞吐量分别为 2.75 GBps 和 4 GBps。
  • 如果考虑采用 16 个核心,I/O 吞吐量约为每核心 175 MBps。
  • 在分配给 LPAR 的 16 个核心中,处理器利用率为 60%。

可扩展性测试:20-test 混合分析工作负载

可扩展性测试的执行方式是,线性扩展工作负载和节点 - 将 20-test 工作负载从 1 个节点(包含 20 个并发测试)扩展到 4 个节点(包含 80 个并发测试,每个节点 20 个并发测试)。在扩展工作负载时,后端存储和计算保持不变。1、2、3 和 4 节点测试分别运行总计 20、40、60 和 80 个混合分析工作负载测试。还对 30-test 混合分析工作负载执行了类似的可扩展性测试,同样从 1 个节点扩展到 4 个节点。

用于可扩展性测试的 LPAR 的配置包括:

  • 16 个核心(专用模式)用于两个 LPAR,15 个核心(专用模式)用于另外两个 LPAR
  • SMT4
  • 每个 LPAR 分配 96 GB 内存
  • 每个 LPAR 1 个 40GbE 端口
  • 适合 Spectrum Scale 文件系统(SASWORK、SASDATA 和 SASUTIL)的 16 MB 块大小

图 5. 20-test 可扩展性测试的性能指标摘要

图 5 总结了对 20-test 工作负载进行可扩展性测试的结果。图 6 到图 10 中的图表提供了在测试期间实现的 I/O 吞吐量。

图 6. 扩展到 4 个节点时的平均和累积真实时间

图 7. 单节点上的 20-test 工作负载的 I/O 吞吐量

图 8. 扩展到 2 个节点时的 20-test 工作负载的 I/O 吞吐量(总共 40 个测试)

图 9. 扩展到 3 个节点时的 20-test 工作负载的 I/O 吞吐量(总共 60 个测试)

图 10. 扩展到 4 个节点时的 20-test 工作负载的 I/O 吞吐量(总共 80 个测试)

对以 56GbE 速度运行的 Mellanox 结构的测试

本节将介绍 Mellanox 结构、它在环境中的配置,以及测试结果。

带 ESS 的 Mellanox 56GbE 结构

通过使用特征码为 EC3A/EC3B 的适配器和 8831-NF2 交换机(通过电缆 EB40-EB42 和 EB4A-EB4G 连接), IBM Power IO 产品组合可以为一个基于 ESS 的存储解决方案构建一个以 40GbE 速度运行的完整端到端 Mellanox 结构。这样做可以提供一个可靠、低延迟(端口间的延迟约为 330ns)、基于以太网的 TCP/IP 存储结构。

这个存储部署的重要部分是,Mellanox 交换机可以在 Mellanox 中仅采用 56GbE 模式运行该结构。通过将交换机上每个端口的线路速度入口更改为 56000,可以从现有网络硬件中获得 40% 的额外带宽,而无需任何进一步投资。使用的布线必须能以 56GbE 速度运行。使用的适配器能自动与交换机就速度进行协商。

在实验室环境中,调整了网络交换机、主机和客户端的端口来以 56GbE 速度运行,并反复执行测试来查看性能改善。

当 Mellanox 结构以 56GbE 速度运行时,执行了以下测试来测量相较于 40GbE 速度的性能提升。

  • 使用 gpfsperf 工具的 I/O 测试
  • 单节点上的 30-test 工作负载以及 4 个节点上的可扩展性测试

在 4 个节点上使用 gpfsperf 工具的 I/O 测试结果

作为 Spectrum Scale 部署的一部分,可使用一些现有的性能工具(比如 gpfsperfnsdperf )来帮助验证系统性能。请参阅本文的“”部分引用的 Spectrum Scale 文档,了解关于这些工具的更多信息。 gpfsperf 工具可用于度量 Spectrum Scale (GPFS) 文件系统上的读、写和读/写 I/O 性能。在网络端口以 40GbE 和 56GbE 速度运行时,使用了该工具来度量 I/O 吞吐量。该工具同时在所有 4 个节点上运行,以便对网络和 ESS 存储施加压力。图 11 展示了端口以 40GbE 和 56GbE 速度运行时的 I/O 吞吐量的比较。

图 11. 结构以 40GbE 和 56GbE 速度运行时,使用测试工具实现的 I/O 吞吐量的比较

使用 gpfsperf 工具的测试结果表明,无需任何额外的基础架构或升级现有网络基础架构,整体读/写 I/O 吞吐量 (70:30) 获得了 8% 到 10% 的提升。在测试期间,ESS GL4 存储的 I/O 吞吐量达到了极限。

gpfsperf 顺序写命令样本:

/usr/lpp/mmfs/samples/perf/gpfsperf create seq /gpfs/sasdata_1m/data/n1aa -r 1m -th $1 -n 3072M &

gpfsperf 顺序读命令样本:

/usr/lpp/mmfs/samples/perf/gpfsperf read seq /gpfs/sasdata_1m/data/n1aa -r 1m -th $1 &

gpfsperf 顺序读/写命令样本:

/usr/lpp/mmfs/samples/perf/gpfsperf mixrw seq /gpfs/sasdata_1m/data/n1aa -r 1m -th $1 -n 3072M -readratio 70 &

对 56GbE 结构进行 SAS 工作负载测试的测试结果

20-test 混合分析工作负载没有网络 I/O 限制;因此与 40GbE 结果相比,(单节点或多个节点上的)20-test 工作负载没有实现任何性能改善。但是,与以 40GbE 速度运行的端口相比,当网络端口调节为以 56GbE 速度运行时,30-test 工作负载表现出了性能改善。

  • 当端口以 56GbE 速度运行时,单节点上的 30-test 工作负载的真实时间减少了 5%。
  • 当端口以 56GbE 速度运行时,在所有 4 个节点上同时运行的 30-test 工作负载(总共 120 个测试)的真实时间减少了 8%。
  • 与以 40GbE 速度运行的 14 GBps 吞吐量相比,以 56GbE 速度运时,4 节点测试实现了 16 GBps 的峰值 I/O 吞吐量。与以 40GbE 速度运行的 11 GBps 吞吐量相比,以 56GbE 速度运时,该测试实现了 12.15 GBps 的平均 I/O 吞吐量。

图 12 和图 13 展示了 30-test 工作负载以 40GbE 和 56GbE 速度运行时的 I/O 吞吐量。

图 12. 以 40GbE 速度运行时,扩展到 4 个节点的 30-test 工作负载(总共 120 个测试)的 I/O 吞吐量

图 13. 以 56GbE 速度运行时,扩展到 4 个节点的 30-test 工作负载(总共 120 个测试)的 I/O 吞吐量

调优

本节将提供如何调优环境的每个方面的指导和建议。

交换机调优

有 5 个经过修改的交换机调优参数:

  • 流控制
Interface ethernet 1/n flowcontrol receive on force
Interface ethernet 1/n flowcontrol send on force
  • 接口速度
Interface ethernet 1/n speed 56000, where n= port 1-36
  • 接口 MTU 大小
Interface ethernet 1/n mtu 9000, where n= port 1-36
  • 在需要时进行 LAG 配置调优
Interface port-channel y flowcontrol receive on force, where y = 1 – max number of LAG groups
Interface port-channel y flowcontrol send on force, where y = 1 – max number of LAG groups
  • LAG 负载平衡
port-channel load-balance ethernet source-destination-ip source-destination-mac source-destination-port

为了实现冗余性,客户端节点 (LPAR) 拥有双端口适配器。由于适配器所插入的 PCI Gen3.0 x8 总线的限制,适配器的最大总带宽限制为 56GbE。在需要增加带宽和冗余性时,建议以 56GbE 速度运行交换机端口来增加带宽。将适配器配置为模式 1 (Active / Standby) 来提供冗余性。

备注:实验室环境中有一台 36 端口的 40GbE / 56GbE 交换机。它拥有 4 条来自客户端节点 (LPARS) 的链接和 7 条来自 ESS 存储的链接,总共使用了 11 个端口。客户可能不希望整个交换机受到只能使用 11 个端口的限制。Mellanox 通过 IBM 业务合作伙伴提供了一个选项 - 一个拥有 12 个端口的较少端口交换机 MSX-1012B-2BFS,这个交换机使用与 IBM 8831-NF2 相同的 MLNX-OS 和 ASIC,并拥有与其相同的特性。

AIX 客户端网络调优参数

以下操作系统网络的可调优参数是根据 AIX 默认值进行更改的。要查看 lsattr 命令输出、no -a 命令输出以及 Spectrum Scale 可调优参数的完整列表,请参阅“”部分。

根据默认适配器设置,对 AIX SAS 客户端适配器接口 en3 进行的更改

# en3
     mtu           9000          Maximum IP Packet Size for This Device        True
     rfc1323       1             Enable/Disable TCP RFC 1323 Window Scaling    True
     tcp_nodelay   1             Enable/Disable TCP_NODELAY Option             True
     tcp_recvspace 1048576       Set Socket Buffer Space for Receiving         True
     tcp_sendspace 1048576       Set Socket Buffer Space for Sending           True
     thread        on            Enable/Disable thread attribute               True

根据默认设置对 AIX SAS 客户端适配器设备 ent3 进行的更改

# ent3
jumbo_frames    yes       Request jumbo frames                            True
jumbo_size      9014      Requested jumbo frame size                      True
large_receive   yes       Request Rx TCP segment aggregation              True
large_send      yes       Request Tx TCP segment offload                  True
tx_comp_cnt     2048      Tx completions before hardware notification     True

通过 no -L -F 更改的 AIX 网络环境/适配器参数与默认值的比较

一般网络参数

-------------------------------------------------------------------------------------------------
NAME                      CUR    DEF    BOOT   MIN    MAX    UNIT           TYPE     DEPENDENCIES
-------------------------------------------------------------------------------------------------
fasttimo                  100    200    100    50     200    millisecond       D
-------------------------------------------------------------------------------------------------
sb_max                    32M    1M     32M    4K     8E-1   byte              D
-------------------------------------------------------------------------------------------------
##Restricted tunables
poolbuckets               7      1      1      1      20     numeric           D
-------------------------------------------------------------------------------------------------

TCP 网络可调优参数

--------------------------------------------------------------------------------
NAME            CUR    DEF    BOOT   MIN    MAX    UNIT      TYPE  DEPENDENCIES
--------------------------------------------------------------------------------
hstcp           1      0      1      0      1      boolean   D
--------------------------------------------------------------------------------
rfc1323         1      0      1      0      1      boolean   C
--------------------------------------------------------------------------------
sack            1      0      1      0      1      boolean   C
--------------------------------------------------------------------------------
tcp_mssdflt     8960   1460   8960   1      64K-1  byte      C
--------------------------------------------------------------------------------
tcp_recvspace   856K   16K    856K   4K     8E-1   byte      C     sb_max
--------------------------------------------------------------------------------
tcp_sendspace   856K   16K    856K   4K     8E-1   byte      C     sb_max
--------------------------------------------------------------------------------

UDP 网络可调优参数

NAME            CUR    DEF    BOOT   MIN    MAX    UNIT   TYPE  DEPENDENCIES
--------------------------------------------------------------------------------
udp_recvspace   768K   42080  768K   4K     8E-1   byte   C     sb_max
--------------------------------------------------------------------------------
udp_sendspace   256K   9K     256K   4K     8E-1   byte   C     sb_max
--------------------------------------------------------------------------------
      
n/a means parameter not supported by the current platform or kernel
      
Parameter types: 
S = Static: cannot be changed
D = Dynamic: can be freely changed
B = Bosboot: can only be changed using bosboot and reboot
R = Reboot: can only be changed during reboot
C = Connect: changes are only effective for future socket connections
M = Mount: changes are only effective for future mountings
I = Incremental: can only be incremented
      
Value conventions: 
K = Kilo: 2^10       G = Giga: 2^30       P = Peta: 2^50
M = Mega: 2^20       T = Tera: 2^40       E = Exa: 2^60

备注:在已连接的交换机端口的速度更改为 56000 后,重新启动 LPAR 即可实现自动配置的端口速度更改。

ESS Linux I/O 服务器适配器连接更改

经过广泛测试后,ESS 网络适配器 bond0 参数从 LACP 更改为 ALB

# vi /etc/sysconfig/network-scripts/ifcfg-bond-bond0
BONDING_OPTS=”miimon=100 mode=balance-alb xmit_hash_policy=layer3+4”
MTU=9000

ESS Linux I/O 服务器网络调优参数

以下操作系统网络可调优参数已对 Linux ESS I/O Network Shared Disk (NSD) 服务器的默认值作出更改。

ppc64_cpu --smt=2
ethtool -G enP4p1s0 rx 8192 tx 8192
ethtool -G enP9p1s0 rx 8192 tx 8192
ethtool -G enp1s0 rx 8192 tx 8192
mlnx_tune -r -c
ethtool -K enP9p1s0d1 tx-nocache-copy off
ethtool -K enP4p1s0d1 tx-nocache-copy off
ethtool -K enp1s0d1 tx-nocache-copy off

备注:在 ESS 安装过程中,已预先设置/调优了 ESS 节点网络可调优参数。

ESS Spectrum Scale 调优参数

以下 Spectrum Scale 集群调优参数已根据默认值进行了更改并用于混合 AIX/Linux GPFS 集群。从 Spectrum Scale 4.2.0.3 开始,第一列中的句点“.”表示该参数已通过 workerThreads 参数进行了更改。该特性有时称为自动调优特性,在此特性中,更改参数 workerThreads 也会导致其他可调优参数自动对默认值进行更改。

已更改的 Spectrum Scale 可调优参数(按照对性能的影响从高到低列出)包括 Pagepool、workerThreads、prefetchPct、maxFilesToCache、maxblocksize 和 maxMBpS 。这些可调优参数为 SAS Mixed Analytics 工作负载提供了最重大的性能提升。一般而言,针对 SAS 工作负载的最重要 Spectrum Scale 可调优参数是 Pagepool 。与初始环境测试中的其他 Spectrum Scale 可调优参数相比,增加客户端节点上的 Pagepool 提供了最大的性能改善。根据其他环境中的后续相关 ESS GL4 测试,我们预计,如果客户端节点上的 Pagepool 从 32 GB 增长到 64 GB,与本文中报告的数字相比,性能将提高 5% 到 10%。

因此,以下突出显示的参数被视为最重要的可调优参数,应该首先考虑更改它们。请注意,对于 ESS,在 ESS 安装过程中已更改了许多默认配置值。ESS 经过了高度优化,对于我们的测试,所需的调优更改极少。例如,ESS 节点的 Pagepool 的最大默认大小为 72 GB。请参阅,了解 Spectrum Scale 配置可调优参数的完整列表。

运行 AIX 的客户端节点:

  • maxblocksize 16777216
  • maxFilesToCache 50000
  • maxMBpS 24000
  • Pagepool 34359738368
  • prefetchPct 40
  • workerThreads 1024

ESS/Linux 节点:

  • maxblocksize 16777216
  • maxFilesToCache 50000
  • maxMBpS 24000
  • prefetchPct 40
  • seqDiscardThreshhold 1073741824
  • workerThreads 1024

备注:在 ESS 安装过程中,已通过 Spectrum Scale 性能脚本设置了许多非默认参数。

结束语

IBM 和 Mellanox 通过针对 SAS 工作负载的 JBOD 近线磁盘存储解决方案,实现了一个有效且相对经济的以太网,该解决方案的性能与更昂贵的中间层光纤通道连接闪存相当。使用 AIX(位于基于 IBM POWER8 处理器的服务器上)作为 SAS 客户端,凸显出了其作为这个成功 POC 强大工作引擎的优势。只有 Mellanox 才能提供的以太网高速存储网络是实现 ESS 完整 I/O 吞吐量的关键,它还提供了运行 40GbE 结构的能力,而且除了以 56GbE 速度运行的交换机的解决方案配置和以 56GbE 速度运行的 40GbE 适配器的自动配置(在 IBM 产品组合中使用 56GbE 电缆实现)之外,没有任何额外费用。

从这个 SAS Mixed Analytics 工作负载概念证明收集的性能指标表明,该解决方案在 SAS 应用程序中发挥了 IBM Elastic Storage Server、Mellanox 网络和 Power E880 的全部潜力。跨学科团队通过结合使用团队服务器、网络、存储和应用程序专家经验,对系统的所有部分进行交互式调优和优化,获得了卓越的性能。除了业界领先的硬件和软件之外,这是这个 POC 获得成功的关键。

附加阅读资料

IBM 和 SAS 白皮书

IBM Power Systems

IBM 存储解决方案

网络

附录:调优参数

为 AIX SAS 客户端使用了以下操作系统网络可调优参数。可以使用 lsattr AIX 命令来显示特定设备的属性特征和可能的属性值。例如:

lsattr -El ent3

备注:由于启用了 rfc1323,所以特定于接口的可调优参数优先于设置为 no 的参数。

[root@brazos06]> # lsattr -El ent3
alt_addr        0x000000000000     Alternate Ethernet address                       True
bar0            0x88100000         Bus memory address 0                             False
bar1            0x80000000         Bus memory address 1                             False
bar2            0x88000000         Bus memory address 2                             False
chksum_offload  yes                Request checksum offload                         True
delay_open      no                 Delay open until link state is known             True
devid           0xb31503101410b504 Device ID                                        False
eeh_cfgsp_delay 999                EEH config space delay (miliseconds)             False
eeh_reset_delay 5                  EEH reset delay (seconds)                        False
flow_ctrl       yes                Request flow control                             True
flow_ctrl_rx    yes                Receive pause frames                             True
flow_ctrl_tx    yes                Transmit pause frames                            True
intr_cnt        10                 Interrupt event coalesce counter                 True
intr_priority   3                  Interrupt priority                               False
intr_time       5                  Interrupt event coalesce timer (microseconds)    True
ipv6_offload    yes                Request IPV6 stateless offloads                  True
jumbo_frames    yes                Request jumbo frames                             True
jumbo_size      9014               Requested jumbo frame size                       True
large_receive   yes                Request Rx TCP segment aggregation               True
large_send      yes                Request Tx TCP segment offload                   True
link_delay_mode logging            Link status delay mode                           True
link_delay_time 5                  Link status delay timer (seconds)                True
lro_threshold   2                  Rx TCP segment aggregation minimum pkt threshold True
media_speed     40000_Full_Duplex  Requested Media speed                            False
queue_pairs     8                  Requested number of queue pairs                  True
queues_rdma     1                  Requested number of RDMA event queues            True
rdma            desired            Request RDMA                                     True
rom_mem         0x0                ROM memory address                               False
rsp_comp_cnt    128                RSP Completions Before Hardware Notification     True
rsp_limit       1000               Response queue entries processed per interrupt   True
rsp_max_events  512                Max RSP events that can be received              True
rx_buffer_low   90                 Rx queue buffer replenish threshold              True
rx_chain        16                 Rx packets chained for stack processing          True
rx_comp_limit   128                Response queue entries processed per interrupt   True
rx_max_pkts     2048               Rx queue maximum packet count                    True
rx_notify_cnt   128                Rx packets per Rx complete notification          True
rx_send_cnt     8                  Rx Immediate Data mode                           True
systrc_enable   no                 Enable config debug tracing                      True
timer_eeh       1                  EEH event poll timer (seconds)                   True
timer_error     1                  Error poll timer (seconds)                       True
timer_link      1                  Link poll timer (seconds)                        True
timer_stats     0                  Statistics poll timer (seconds)                  True
tx_comp_cnt     2048               Tx completions before hardware notification      True
tx_comp_limit   1                  Tx completions processed per event               False
tx_free_delay   no                 Delay free of Tx packet mbufs                    True
tx_limit        1024               Tx packets sent per transmit thread              True
tx_max_pkts     1024               Tx queue maximum packet count                    True
tx_notify_cnt   64                 Tx packets per Tx complete notification          True
tx_swq_max_pkts 8192               Software Tx queue maximum packet count           True
use_alt_addr    no                 Request alternate Ethernet address               True
vpd_missing     no                 VPD is not present                               True

可以使用 no AIX 命令管理网络的调优参数。例如:

no -a output

arpqsize = 1024
arpt_killc = 20
arptab_bsiz = 7
arptab_nb = 149
bcastping = 0
bsd_loglevel = 3
clean_partial_conns = 0
delayack = 0
delayackports = {}
dgd_flush_cached_route = 0
dgd_packets_lost = 3
dgd_ping_time = 5
dgd_retry_time = 5
directed_broadcast = 0
fasttimo = 100
hstcp = 1
icmp6_errmsg_rate = 10
icmpaddressmask = 0
ie5_old_multicast_mapping = 0
ifsize = 256
igmpv2_deliver = 0
init_high_wat = 0
ip6_defttl = 64
ip6_prune = 1
ip6forwarding = 0
ip6srcrouteforward = 1
ip_ifdelete_notify = 0
ip_nfrag = 200
ipforwarding = 0
ipfragttl = 2
ipignoreredirects = 0
ipqmaxlen = 100
ipsendredirects = 1
ipsrcrouteforward = 1
ipsrcrouterecv = 0
ipsrcroutesend = 1
limited_ss = 0
llsleep_timeout = 3
lo_perf = 1
lowthresh = 90
main_if6 = 0
main_site6 = 0
maxnip6q = 20
maxttl = 255
medthresh = 95
mpr_policy = 1
multi_homed = 1
nbc_limit = 12582912
nbc_max_cache = 131072
nbc_min_cache = 1
nbc_ofile_hashsz = 12841
nbc_pseg = 0
nbc_pseg_limit = 25165824
ndd_event_name = {all}
ndd_event_tracing = 0
ndogthreads = 0
ndp_mmaxtries = 3
ndp_umaxtries = 3
ndpqsize = 50
ndpt_down = 3
ndpt_keep = 120
ndpt_probe = 5
ndpt_reachable = 30
ndpt_retrans = 1
net_buf_size = {all}
net_buf_type = {all}
net_malloc_frag_mask = {0}
netm_page_promote = 1
nonlocsrcroute = 0
nstrpush = 8
passive_dgd = 0
pmtu_default_age = 10
pmtu_expire = 10
pmtu_rediscover_interval = 30
psebufcalls = 20
psecache = 1
psetimers = 20
rfc1122addrchk = 0
rfc1323 = 1
rfc2414 = 1
route_expire = 1
routerevalidate = 0
rtentry_lock_complex = 1
rto_high = 64
rto_length = 13
rto_limit = 7
rto_low = 1
sack = 1
sb_max = 33554432
send_file_duration = 300
site6_index = 0
sockthresh = 85
sodebug = 0
sodebug_env = 0
somaxconn = 1024
strctlsz = 1024
strmsgsz = 0
strthresh = 85
strturncnt = 15
subnetsarelocal = 1
tcp_bad_port_limit = 0
tcp_cwnd_modified = 0
tcp_ecn = 0
tcp_ephemeral_high = 65535
tcp_ephemeral_low = 32768
tcp_fastlo = 0
tcp_fastlo_crosswpar = 0
tcp_finwait2 = 1200
tcp_icmpsecure = 0
tcp_init_window = 0
tcp_inpcb_hashtab_siz = 24499
tcp_keepcnt = 8
tcp_keepidle = 14400
tcp_keepinit = 150
tcp_keepintvl = 150
tcp_limited_transmit = 1
tcp_low_rto = 0
tcp_maxburst = 0
tcp_mssdflt = 8960
tcp_nagle_limit = 65535
tcp_nagleoverride = 0
tcp_ndebug = 100
tcp_newreno = 1
tcp_nodelayack = 1
tcp_pmtu_discover = 1
tcp_recvspace = 876544
tcp_sendspace = 876544
tcp_tcpsecure = 0
tcp_timewait = 1
tcp_ttl = 60
tcprexmtthresh = 3
tcptr_enable = 0
thewall = 50331648
timer_wheel_tick = 0
tn_filter = 1
udp_bad_port_limit = 0
udp_ephemeral_high = 65535
udp_ephemeral_low = 32768
udp_inpcb_hashtab_siz = 24499
udp_pmtu_discover = 1
udp_recv_perf = 0
udp_recvspace = 786432
udp_sendspace = 262144
udp_ttl = 30
udpcksum = 1
use_sndbufpool = 1

Spectrum Scale 调优参数

作为参考,我们列出了以下针对混合 AIX/Linux GPFS 集群的 Spectrum Scale 集群可调优参数。下面的参数前面的“!”标志表示一些可调优参数已根据默认值进行了更改。最新版的 Spectrum Scale 拥有自动调优特性,更改 workerThreads 还会导致其他可调优参数自动根据默认值进行更改。(以粗体)突出显示的参数被视为最重要的可调优参数,应该首先考虑更改它们。请注意,对于 ESS,在 ESS 安装过程中已更改了许多默认配置值。ESS 已经过高度优化,所需的调优更改极少。

AIX 节点

! ccrEnabled 0
 ! cipherList AUTHONLY
 ! deadlockDataCollectionDailyLimit 10
 ! deadlockDetectionThreshold 0
 ! dmapiFileHandleSize 32
 ! expelDataCollectionDailyLimit 10
 ! logBufferCount 20
 ! logWrapThreads 128
 ! maxblocksize 16777216
 ! maxBufferDescs 32768
 ! maxFilesToCache 50000
 ! maxMBpS 24000
 ! maxReceiverThreads 128
 ! maxStatCache 10000
 ! minReleaseLevel 1502
 ! pagepool 34359738368
 ! prefetchPct 40
 ! scatterBuffers 0
 ! seqDiscardThreshhold 1073741824
 ! socketMaxListenConnections 512
 ! worker1Threads 1024
 ! workerThreads 1024

ESS/Linux 模式

备注:ESS 安装过程已设置了这些非默认参数中的许多参数。

! ccrEnabled 0
 ! cipherList AUTHONLY
 ! deadlockDataCollectionDailyLimit 10
 ! deadlockDetectionThreshold 0
 ! dmapiFileHandleSize 32
 ! envVar MLX4_USE_MUTEX 1 MLX5_SHUT_UP_BF 1 MLX5_USE_MUTEX 1
 ! expelDataCollectionDailyLimit 10
 ! flushedDataTarget 1024
 ! flushedInodeTarget 1024
 ! ioHistorySize 65536
 ! logBufferCount 20
 ! logWrapAmountPct 10
 ! logWrapThreads 128
 ! maxAllocRegionsPerNode 32
 ! maxBackgroundDeletionThreads 16
 ! maxblocksize 16777216
 ! maxBufferCleaners 1024
 ! maxBufferDescs 2097152
 ! maxFileCleaners 1024
 ! maxFilesToCache 50000
 ! maxGeneralThreads 1280
 ! maxInodeDeallocPrefetch 128
 ! maxMBpS 24000
 ! maxReceiverThreads 128
 ! maxStatCache 10000
 ! minReleaseLevel 1502
 ! myNodeConfigNumber 1
 ! nsdClientCksumTypeLocal NsdCksum_Ck64
 ! nsdClientCksumTypeRemote NsdCksum_Ck64
 ! nsdInlineWriteMax 32768
 ! nsdMaxWorkerThreads 3072
 ! nsdMinWorkerThreads 3072
 ! nsdMultiQueue 512
 ! nsdRAIDBlockDeviceMaxSectorsKB 8192
 ! nsdRAIDBlockDeviceNrRequests 32
 ! nsdRAIDBlockDeviceQueueDepth 16
 ! nsdRAIDBlockDeviceScheduler deadline
 ! nsdRAIDBufferPoolSizePct (% of PagePool) 80
 ! nsdRAIDEventLogToConsole all
 ! nsdRAIDFastWriteFSDataLimit 262144
 ! nsdRAIDFastWriteFSMetadataLimit 1048576
 ! nsdRAIDFlusherBuffersLimitPct 80
 ! nsdRAIDBlockDeviceQueueDepth 16
 ! nsdRAIDBlockDeviceScheduler deadline
 ! nsdRAIDBufferPoolSizePct (% of PagePool) 80
 ! nsdRAIDEventLogToConsole all
 ! nsdRAIDFastWriteFSDataLimit 262144
 ! nsdRAIDFastWriteFSMetadataLimit 1048576
 ! nsdRAIDFlusherBuffersLimitPct 80
 ! nsdRAIDFlusherBuffersLowWatermarkPct 20
 ! nsdRAIDFlusherFWLogHighWatermarkMB 1000
 ! nsdRAIDFlusherFWLogLimitMB 5000
 ! nsdRAIDFlusherThreadsHighWatermark 512
 ! nsdRAIDFlusherThreadsLowWatermark 1
 ! nsdRAIDFlusherTracksLimitPct 80
 ! nsdRAIDFlusherTracksLowWatermarkPct 20
 ! nsdRAIDMaxTransientStale2FT 1
 ! nsdRAIDMaxTransientStale3FT 1
 ! nsdRAIDReconstructAggressiveness 1
 ! nsdRAIDSmallBufferSize 262144
 ! nsdRAIDSmallThreadRatio 2
 ! nsdRAIDThreadsPerQueue 16
 ! nsdRAIDTracks 131072
 ! nspdQueues 64
 ! numaMemoryInterleave yes
 ! pagepool 76168560640
 ! prefetchPct 40
 ! prefetchThreads 341
 ! scatterBuffers 0
 ! scatterBufferSize 262144
 ! seqDiscardThreshhold 1073741824
 ! socketMaxListenConnections 512
 ! syncWorkerThreads 256
 ! worker1Threads 1024
 ! worker3Threads 32
 ! workerThreads 1024

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。