文件系统性能注意事项
如果你已运行 HPC 工作负载,则可能已遇到“操作”、“块大小”、“IOPS”、“吞吐量”和“延迟”等术语。 你在选择存储时可能已经考虑了这些因素。
本部分结束时,你应该初步了解了这五个性能因素及其对 HPC 工作负载的具体影响。
操作
术语“操作”是指主机/计算机与文件系统或磁盘之间的任何活动。
例如,你可能已经熟悉下列涉及到操作系统及其本地磁盘的操作:
- 创建(文件)
- 删除
- 打开
- 关闭
- 读取
- 写入
- 追加
- 获取属性
- 设置属性
- 重命名
NFS 表示文件客户端与服务器之间的网络级交互。 请注意,其中一些操作与本地操作类似。 但是,由于 NFS 是网络 API,因此这些网络操作可能涉及多个本地操作。
create
(文件或链接)mkdir
readdir
或readdirplus
getattr
setattr
lookup
(搜索目录中的文件句柄)link
/symlink
/readlink
read
rename
remove
rmdir
write
操作如何影响 HPC 存储?
了解操作如何影响存储系统是有帮助的。 例如,假定 HPC 工作负载在嵌套目录结构中创建大量小文件。 在这种情况下,与读取一些大型顺序文件的工作负载相比,你的工作负载需要更多数量的操作。
我们将在下个单元讨论这些访问模式。 create
涉及多个操作,因此工作负载创建的文件越多,对性能的影响就越大。
块大小
块大小是指文件系统在一次操作中可读取或写入的最小数据大小(字节)。
为实现我们的目的,块大小还指可在 NFS 客户端与服务器之间传输的 NFS 数据区块(读取/写入)的有效负载大小。
NFS 服务器和客户端会协商块大小,并接受彼此支持的尽可能大的大小。 默认设置为 4 KB 到 64KB。 当前最大可配置值为 1 MB。 单个数据包的有效负载不能大于设定值。
你可以在客户端上显式配置块大小。 请查看 HPC 群集计算机上的完整 mount
语句以确定值。 已设置默认大小。 未在 mount
语句中显式配置值。
用于配置 NFS 块大小的两个参数为 rsize
(读取大小)和 wsize
(写入大小)。
如果配置较小的块大小。 或者所选文件系统的最大块大小较小,而工作负载包含大文件。 由于大文件的额外分块,性能会受到影响。
IOPS
术语“IOPS”表示“每秒输入/输出操作数”。 存储环境中的 IOPS 数量由以下属性决定:
- 存储介质的类型。 例如硬盘驱动器 (HDD) 和固态硬盘 (SSD)。
- 通过网络连接引入的延迟。
- 文件系统使用的块大小。
- 文件系统可用的并发访问数量。
一个存储解决方案具有一个 IOPS 数量。 例如,如果使用支持 5000 IOPS 的 Azure 托管磁盘,则意味着每秒最多可执行 5000 次操作。 但是,IOPS 数用于度量对磁盘进行的所有读取或写入操作的最大总数,包括系统开销读取和写入操作。
IOPS 值可作为磁盘或 NAS 环境能够支持的最大操作数的参考。
度量值通常会在“随机”和“顺序”读取和写入操作间细分。
- 随机操作是指在磁盘或文件的不同随机点上读取或写入数据。 例如,在文件中的某处编辑特定范围的字节。
- 顺序操作是指对文件进行连续访问,从文件开头读取文件。
吞吐量
吞吐量是指文件系统可处理的总传输速率,以每秒字节数为单位。
若要对吞吐量进行基本计算,请将系统的 IOPS 与块大小相乘。
例如,如果你有一个磁盘支持 3,000 IOPS,并且你的块大小为 4K,那么总吞吐量可能为 12 MBps。
通过此计算,你可基本了解文件系统通常可能具有的性能。 不过,实际吞吐量可能会有所不同。 其他因素会影响吞吐量,例如创建或删除大量小文件时的网络开销。
延迟
延迟是指完成操作所需的时间量。 延迟越高,越可能出现工作负载运行变慢的情况。
一个体系结构中可以存在多个延迟源,每个都会带来整体延迟影响。
出现以下情况时,文件系统可能会延迟:
- 客户端与服务器之间的网络连接速度慢。
- 由于大量并发请求,在网络或文件服务器上发生拥塞。
- 由于客户端与服务器之间的距离(例如跨 WAN)而导致的必然延迟。
- 文件服务器上磁盘子系统访问速度慢。
延迟不总是一致,也不总是有明确记录。 需要运行测试来确定 HPC 群集计算机与存储终结点之间的延迟。
延迟也会累积。 网络性能可能是影响因素之一,但也可能存在其他因素,例如计算机操作系统配置错误,或者工作负载代码本身效率低下。 上述任一因素都会影响总体延迟。
评估文件系统的实际性能时,延迟是重要的考虑因素。 延迟越高,IOPS 越小。 IOPS 越小,吞吐量就越低。
测试和计算基线值
为 HPC 工作负载选择确切的性能配置时,工作负载本身会产生巨大影响。
Azure 文件系统产品/服务会显示预期的 IOPS 和吞吐量值。 如果选择自行构建 NAS 解决方案,请使用为每个虚拟机和托管磁盘 SKU 记录的指标。
你可以本地数据中心 HPC 配置为起点来达到性能预期。 请记住,云解决方案允许创建多个运行工作负载的环境。 因此,你在 Azure 中执行每个工作负载时的灵活性可能更高。 与之相对,本地环境是根据无法轻松(动态)扩展的特定容量生成的。
可以使用 ping
、fio
、iozone
和 iometer
等基本工具来确定 Azure 文件系统的基线数量。
应用程序分析
你可能有一个要占用大量 I/O 的工作负载,它需要大量 IOPS 和吞吐量才能有效运行。 或者,你的工作负载可能会启动、将库和源数据读入内存,并继续执行最小存储 I/O。 上一列表中的第一个工作负载可能会写出其他 HPC 计算机必须读取的中间数据。 其中每种动态都会影响处理存储解决方案的方式。 要确保计算机可尽快读取数据,重点是降低读取延迟。 但是,如果你的工作负载正将中间或暂存信息写入磁盘,则需要确保每个 HPC 计算机都能够快速访问本地磁盘或用于这些写入的快速共享 NAS 解决方案。 取决于可能需要读取这些中间写入的具体计算机。
你可能想分析应用程序对存储 I/O 的使用。 随着 HPC 群集的大小增加和工作负载数量增加,分析变得更加重要。
分析涉及到使用在你的 HPC 计算机和存储环境中运行的工具。 这些工具会就针对存储环境运行的操作的数量、类型和大小进行报告。
由于可能会生成大量数据,因此可能很难分析工作负载。 像 iostat
和 sar
这样的工具可以在一段时间后创建大量的输出。 你可能需要分析结果,甚至可能需要进一步分析结果,从而生成直方图。
如果使用 NAS 解决方案,则需要在分析运行期间从供应商的接口收集统计信息。 然后,将该信息与 HPC 计算机数据关联以验证 I/O 模式。
第三方分析工具可用于帮助进行 I/O 分析,某些由 HPC 应用程序供应商提供。