ZFS - zpool ARC 缓存加上 L2ARC 基准测试

ZFS - zpool ARC 缓存加上 L2ARC 基准测试

我一直在对最终将用于虚拟机的 ZFS 系统进行大量 I/O 测试。我想尝试添加 SSD 作为缓存,看看读取速度能快多少。我的机器中还有 24GB 的 RAM,用作 ARC。vol0 为 6.4TB,缓存磁盘为 60GB SSD。zvol 如下:

pool: vol0
 state: ONLINE
 scrub: none requested
config:

        NAME                     STATE     READ WRITE CKSUM
        vol0                     ONLINE       0     0     0
          c1t8d0                 ONLINE       0     0     0
        cache
          c3t5001517958D80533d0  ONLINE       0     0     0
          c3t5001517959092566d0  ONLINE       0     0     0

问题是安装 SSD 后我没有看到任何差异。我尝试了 bonnie++ 基准测试和一些简单的 dd 命令来写入文件然后读取文件。我在添加 SSD 之前和之后都运行了基准测试。

我确保文件大小至少是我 RAM 的两倍,因此不可能全部在本地缓存。

我是不是漏掉了什么?我什么时候才能看到拥有所有缓存的好处?在这种情况下我难道没有看到吗?基准测试程序是否不适合测试缓存的效果,因为它的写入和读取方式(以及内容)?

答案1

您的测试似乎非常连续,例如使用 dd 写入大文件然后读取它。ZFS L2ARC 缓存旨在提高随机读取工作负载的性能,而不是用于类似流式传输的模式。此外,为了获得最佳性能,您可能需要等待更长时间直到缓存预热。另一点是确保您的工作集适合 SSD。在测试期间观察 io 统计数据将有助于确定使用了哪些设备以及它们的性能如何。

答案2

您是否考虑过 ARC 空间与您的测试进行比较?在测试用作 L2ARC(池读取缓存)和/或 ZIL(池同步写入缓存)的 SSD 的 I/O 优势时,您需要考虑 ARC 的大小与测试的工作集的对比。如果可以使用 ARC,则无需从 L2ARC 中提取。同样,如果启用了写入缓存,则无论 ZIL 如何,写入都会合并,除非启用了刷新和显式同步行为(即启动器的写入缓存也被禁用等)。

如果您想了解 SSD 对于较小工作集的价值,请考虑 16 磁盘 RAID10 将为写入提供约 1200+ IOPS(SAS/SATA?),为读取提供约两倍的 IOPS。将磁盘集减少到两个(用于测试)并将 ARC 减少到最小(约 1/8 主内存),然后您就可以对比主轴和 SSD。否则,您需要让更多线程在您的池(多个 LUN)上工作才能看到好处。哦,是的,还要让更多接口工作,这样您就不会受到单个 1Gbps 接口的 BW 约束……

答案3

任何试图对 L2ARC 进行基准测试的人都希望了解 L2ARC 的“热度”,并评估他们的请求对 L2ARC 的影响。有一个很好的工具和文章可以做到这一点:arcstat.pl 已更新 L2ARC 统计数据

答案4

以前我经常iozone做一些基准测试。我不是基准测试专家,但我对本地基准测试的命令是这样的:

iozone -a -o -r 128K -n 128K -g 48G

以下是该命令的描述:

-a: Auto-Mode
-o: This forces all writes to the file to go completely to disk before returning to the benchmark
-r: Set Record Size. Default 128K on ZFS filesystem
-n: Minimum filesize = Record Size
-g: Maximum filesize = 2 * RAM

也许你可以尝试一下并发布你使用此工具的经验。我取得了不错的成绩,但基准测试就像统计数据一样。不要相信你自己没有伪造的基准测试。;-)

编辑

还有一件事:我会做一个有缓存设备和没有缓存设备的基准测试。我想你可以看到对结果的影响。很高兴能看到一些结果。只是好奇。

相关内容