PowerScale OneFS:性能问题故障处理
Summary: 借助有关网络配置、处理负载和使用 InsightIQ 进行监视的综合指南,对 PowerScale OneFS 性能缓慢进行故障处理,以提高群集效率。
Symptoms
客户端计算机运行缓慢。某些作业(尤其是在群集上运行的作业)失败或需要比预期更长的时间才能完成。
Cause
性能问题通常由网络流量、网络配置问题、客户端或群集处理负载或以上问题的组合引起。本文介绍了对性能问题进行故障处理的几种有效方法。
Resolution
使用 InsightIQ 进行故障处理
目录:
- 使用 Isilon InsightIQ
- 不使用 InsightIQ 的故障处理
- 网络性能
- 客户端连接的分布
- 群集吞吐量
- 群集处理
- 排队操作
- CPU
使用 Isilon InsightIQ
使用 Isilon InsightIQ 是监视性能和对性能问题进行故障处理的最佳方式。
借助 Isilon InsightIQ 虚拟设备,您可以通过基于 Web 的 Isilon 应用程序中灵活、可自定义的图表视图监视和分析 Isilon 群集活动。这些图表提供了有关群集硬件、软件以及文件系统和协议操作的详细信息。InsightIQ 将数据转换为可视化信息,强调任何性能异常值,从而快速诊断瓶颈或优化工作流。
有关使用 InsightIQ 的详细信息,请参阅 PowerScale InsightIQ — 信息中心。
不使用 InsightIQ 的故障处理
如果不使用 InsightIQ,您可以运行各种命令来调查性能问题。要对性能问题进行故障处理,您可以首先检查网络和群集吞吐量,然后检查群集处理,最后检查单个节点 CPU 速率。
网络性能
使用网络测试工具,例如 Iperf 或 Iperf3 确定网络上群集和客户端计算机的吞吐量功能。
使用 Iperf使用 Iperf,在群集和客户端上运行以下命令。这些命令会定义一个足够大的窗口大小,以查明网络链路是否是延迟问题的潜在原因。
- 群集:
iperf -s -w 262144 - 客户端:
iperf -c <cluster IP> -w 262144
使用 Iperf3使用 Iperf,在群集和客户端上运行以下命令。这些命令会定义一个足够大的窗口大小,以查明网络链路是否是延迟问题的潜在原因。
- 群集:
iperf3 -s -w 262144 客户端:iperf3 -c <cluster IP> -w 262144
客户端连接的分布
检查连接到群集的 NFS 和 SMB 客户端数量,以确保它们不偏向一个节点。
- 在群集中的任意节点上打开 SSH 连接,并使用“root”帐户登录。
root帐户 - 运行
用于检查 NFS 客户端的命令。isi statistics query current list --nodes=all --keys=node.clientstats.connected.nfs,node.clientstats.active.nfs -d
isi statistics query - nodes=all --stats=node.clientstats.connected.nfs,node.clientstats.active.nfs 输出显示每个节点连接的客户端数量以及每个节点上处于活动状态的客户端数量。 - 运行
isi statistics query - nodes=all --stats=node.clientstats.connected.nfs,node.clientstats.active.nfsisi statistics query current list --keys=node.clientstats.connected.smb,node.clientstats.active.smb1,node.clientstats.active.smb2 -n all -d
输出显示每个节点连接的客户端数量以及每个节点上处于活动状态的客户端数量。
群集吞吐量
通过执行一些测试来评估群集吞吐量,这些测试会测量读取和写入文件所需的时间。执行至少一次写入测试和一次读取测试,如下所示。
- 在群集中的任意节点上打开 SSH 连接,并使用“root”帐户登录。
root帐户 - 更改为
/ifs日志文件:cd /ifs - 从群集上的命令行界面 (CLI) 或从 UNIX 或 Linux 客户端计算机中,使用
dd命令将新文件写入群集。
运行以下命令:dd if=/dev/zero of=1GBfile bs=1024k count=1024
此命令将创建一个示例 1 GB 文件,并报告将其写入磁盘所用的时间。 - 从此命令的输出中,推断在单流工作流中每秒可以写入磁盘的 MB 数。
- 如果您有 Mac 客户端并希望进行进一步分析:
- 启动活动监视器。
- 运行
cat /dev/zero > /pathToFile命令,其中pathToFile是目标文件的文件路径。
此命令可帮助测量 Isilon 群集上写入操作的吞吐量。(虽然可以从 Mac 客户端运行dd命令,但结果可能不一致。) - 在活动监视器的 Network 选项卡中监视命令的结果。
测量读取操作的吞吐量时,请确保不要对您在写入测试期间创建的文件执行读取测试。由于该文件已被缓存,因此读取测试的结果将不准确。请测试尚未缓存的文件的读取操作。在群集上查找大于 1GB 的文件,并在读取测试中引用该文件。
- 在群集中的任意节点上打开 SSH 连接,并使用“root”帐户登录。
root帐户 - 从群集上的 CLI 或从 UNIX 或 Linux 客户端计算机中,使用
dd命令读取群集上的文件。
运行dd if=/pathToLargeFile of=/dev/null bs=1024k命令,其中pathToFile是目标文件的文件路径。
此命令读取目标文件并报告读取该文件所用的时间量。 - 如果您有 Mac 客户端并希望进行进一步分析:
- 启动活动监视器。
- 运行
time cp /pathToLargeFile > /dev/null命令,其中pathToFile是目标文件的文件路径。
此命令有助于测量 Isilon 群集上读取操作的吞吐量。(虽然可以从 Mac 客户端运行dd命令,但结果可能不一致。) - 在活动监视器的 Network 选项卡中监视命令的结果。
群集处理
检查群集的输入/输出 (I/O) 操作 (IOPS) 之前:
- 确定群集上正在运行的作业。如果有重新条带化作业(如 AutoBalance、Collect 或 MultiScan)正在运行,请考虑这些作业运行的原因以及它们是否应继续运行。
- 这些作业可能会产生群集事件:事件 400100008:“文件操作花费的时间超过预期。”
- 考虑正在使用的数据类型。如果客户端计算机正在处理大型视频文件或虚拟机 (VM),则重新条带化作业需要的磁盘 IOPS 量高于正常值。
- 考虑暂时停止重新条带化作业。这样做可以显著提高性能,并且可能是解决性能问题的可行短期解决方案。
SmartPools 作业。
在作业运行期间,NFS 和 SMB 客户端性能可能会下降:
- 确定 SmartPools 作业的优先级
isi job status
-
- 降低策略的影响
isi job types modify SmartPools --policy LOW
-
- 调整优先级
isi job types modify SmartPools --priority 7
-
- 为非工作时间安排策略
isi job types modify SmartPools --policy OFF_HOURS
-
- 检视层配置,将层数量保持在 5 以下
磁盘 I/O
检查磁盘 I/O 有助于确定某些磁盘是否过度使用。
按群集
- 在群集中的任意节点上打开 SSH 连接,并使用“root”帐户登录。
- 运行
用于确定磁盘 I/O 的命令。isi statistics pstat 从此命令的输出中,将磁盘 IOPS 除以群集中的磁盘总数。例如,对于使用 Isilon IQ 12000x 节点(每个节点托管 12 个驱动器)的 8 节点群集,您将磁盘 IOPS 除以 96。
对于 X 系列节点和 NL 系列节点,对于 100% 随机工作流,您应该会看到磁盘 IOPS 为 70 或更低,对于 100% 顺序工作流,磁盘 IOPS 为 140 或更低。由于 NL 系列节点的 RAM 和 CPU 速度低于 X 系列节点,因此 X 系列节点可以处理更高的磁盘 IOPS。
按节点和按磁盘
- 在群集中的任意节点上打开 SSH 连接,并使用“root”帐户登录。
- 运行
命令按节点确定磁盘 IOPS,这有助于发现过度使用的磁盘。isi statistics query current --nodes=all --stats=node.disk.xfers.rate.sum --format=top - 运行
用于确定如何按磁盘查询统计信息的命令。isi_stats_tool -a get_key_info|grep node.disk.xfer
排队操作
确定磁盘是否过度使用的另一种方法是确定群集中每个磁盘的排队操作数量。对于基于 SMB 的单个流工作流,队列为 4 可能表示存在问题,而对于高并发 NFS 命名空间操作,队列可能会大得多。
- 在群集中的任意节点上打开 SSH 连接,并使用“root”帐户登录。
root帐户 - 运行
用于确定为群集中的每个磁盘排队的操作数的命令。isi statistics drive list --nodes=all --sort=queued -d - 确定操作在队列中的时间长度:
isi statistics drive list --nodes=all --sort=queued -d
CPU
CPU 问题通常可追溯到客户端在群集上执行的操作。通过使用 isi statistics 命令,您可以确定在群集上执行的操作,这些操作由网络协议或客户端计算机进行编目。
- 在群集中的任意节点上打开 SSH 连接,并使用“root”帐户登录。
root帐户 - 运行
通过运行以下命令,确定正在通过网络执行的操作并评估哪些操作花费的时间最长:isi statistics protocol list --long --totalby Op,proto -d --sort TimeAvg --format top
此命令输出提供所有网络协议的详细统计信息,并按群集响应客户端所需的时间进行组织。虽然此命令的结果可能无法确定哪个操作最慢,但它可以指向正确的方向。 - 运行
命令以获取有关 CPU 处理的更多信息,例如哪些节点的 CPU 使用率最高。isi statistics system --nodes all --format top - 运行
要获取每个节点上消耗最多 CPU 资源的四个进程,请运行以下命令:isi_for_array -sX 'top -u -n |grep PID -A4'
Additional Information
以下是可能您感兴趣的与此主题相关的推荐资源: