不稳定(糟糕)的磁盘性能 I/O(Debian/Proxmox)

不稳定(糟糕)的磁盘性能 I/O(Debian/Proxmox)

概括

我发现 Proxmox VE 7 (Bullseye) 中 ZFS SSD 镜像的 I/O 性能波动很大。我只是个新手,无法独自追踪它。

细节

这在实际任务中表现非常糟糕,因此这不仅仅是人为的基准。但为了帮助诊断,我正在运行:

sysbench fileio --file-test-mode=rndrw run

它从 Proxmox 终端运行“裸机”,没有任何虚拟机处于活动状态。结果差异很大。以下是两个示例:

File operations:
    reads/s:                      2316.07
    writes/s:                     1544.08
    fsyncs/s:                     4949.70

Throughput:
    read, MiB/s:                  36.19
    written, MiB/s:               24.13

General statistics:
    total time:                          10.0062s
    total number of events:              88040

Latency (ms):
         min:                                    0.00
         avg:                                    0.11
         max:                                   35.66
         95th percentile:                        0.65
         sum:                                 9947.54

Threads fairness:
    events (avg/stddev):           88040.0000/0.00
    execution time (avg/stddev):   9.9475/0.00

File operations:
    reads/s:                      22.60
    writes/s:                     15.07
    fsyncs/s:                     56.98

Throughput:
    read, MiB/s:                  0.35
    written, MiB/s:               0.24

General statistics:
    total time:                          10.6162s
    total number of events:              877

Latency (ms):
         min:                                    0.00
         avg:                                   11.43
         max:                                  340.62
         95th percentile:                       77.19
         sum:                                10020.19

Threads fairness:
    events (avg/stddev):           877.0000/0.00
    execution time (avg/stddev):   10.0202/0.00

如您所见,事件总数出现了 10,000 倍的波动,延迟也大幅增加。这些波动并不是“一次性的”。它会在这些极端情况之间不断波动。

我已尽最大努力缩小简单硬件问题的范围。两个 SSD 都是全新的,smartctl 中所有 100 都已设置。我已更换 SATA 电缆。我已在镜像降级的情况下运行它,以尝试隔离单个驱动器问题。我已将驱动器移至单独的 SATA 控制器。没有任何结果能给我不同的结果。

我的第二台服务器配置方式类似,但镜像中装有较旧(且不匹配)的 SSD。没有看到此问题。不过,服务器硬件不同。不良结果来自下面描述的系统。看似“正常”的结果来自一台装有 E3-1275v2 的旧改装 PC。

我希望得到一些提示来帮助诊断这个问题。问题似乎出在延迟上。这是什么原因造成的?我接下来应该采取什么措施?

提前致谢!

系统 (如果有帮助的话)

  • 主板:Supermicro X9DRi-F
  • CPU:双 Xeon E5-2650 v2
  • 内存:128 GB(8 x 16 GB)
  • SATA 控制器:板载 SATA 3(单独的 SATA 2 也经过测试)
  • SSD:2x 1GB TeamGroup SATA(是的,便宜,但应该没问题)
  • PCIe 卡:
    • Mellanox MCX312B
    • LSI SAS9207-8i(HBA 连接到 8 个未安装的磁盘...传递到 VM)
    • Nvidia GTX 750(传递至虚拟机)

答案1

昨天,我的新设置也发生了类似的事情:Intel 11500 上的 Proxmox VE 7,配备 32 GB RAM 和 2x SSD Crucial BX500(这些是消费级),配置为 ZFS 镜像。

我使用 进行了基准测试,dd将 1GB 的零写入 SSD,运行速度为 5 MB/s(我知道dd这对于基准测试来说不太好,但仍然......)。在基准测试期间,iostat利用率为 100%。就我而言,我通过修剪 SSD 解决了性能问题。您可以使用 强制执行zpool trim rpool,也可以使用 启用自动修剪zpool set autotrim=on rpool。修剪磁盘后,我再次运行基准测试,它在 7 秒内运行完成(153 MB/s)。

在寻找如何提高性能的过程中,我xattr按照saProxmox 维基我调整了zfs_arc_min/zfs_arc_max和其他内核参数。

我希望这对你也有效。

答案2

您应该在 SSD 上创建 zfs 池,并将 ashift=12 与 SSD 的 4096 个扇区对齐。

检查当前值

zpool get all pool_name | grep ashift

还检查分区是否与 1MB 对齐(2048 个 512 字节扇区)

答案3

zfs 是写时复制 fs。这对廉价的 SSD 来说非常非常糟糕。你可以直接用 Windows 机器通过安全擦除来测试这个 SSD,并进行完整的写入测试(我认为 hd tune 可以做到),你会看到当这些 ssd 用完 SLC \ RAM 时的性能...它会非常差...比如 50-70 mb/s,而不是 sata 的 500+。此外,一些廉价的 ssd 使用系统内存而不是自己的内存模块或 slc 缓存,这对 zfs 来说也不好。我希望这个帮助有类似的问题,可以通过将 ssd 更改为 980 pro 来解决(但尺寸更小,因为成本原因)

相关内容