带有 L2ARC (SSD) 的 ZFS 对于随机搜索比没有 L2ARC 慢

Flo*_*use 6 performance zfs ssd cache opensolaris

我目前正在旧文件服务器中测试 ZFS(Opensolaris 2009.06),以评估其对我们需求的使用。我们目前的设置如下:

  • 双核 (2,4 GHz) 带 4 GB RAM
  • 3 个 SATA 控制器,带 11 个 HDD (250 GB) 和 1 个 SSD (OCZ Vertex 2 100 GB)

我们要评估一个 L2ARC 的使用,所以当前的 ZPOOL 是:

$ zpool status
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME         STATE     READ WRITE CKSUM
        afstank      ONLINE       0     0     0
          raidz1     ONLINE       0     0     0
            c11t0d0  ONLINE       0     0     0
            c11t1d0  ONLINE       0     0     0
            c11t2d0  ONLINE       0     0     0
            c11t3d0  ONLINE       0     0     0
          raidz1     ONLINE       0     0     0
            c13t0d0  ONLINE       0     0     0
            c13t1d0  ONLINE       0     0     0
            c13t2d0  ONLINE       0     0     0
            c13t3d0  ONLINE       0     0     0
        cache
          c14t3d0    ONLINE       0     0     0
Run Code Online (Sandbox Code Playgroud)

其中 c14t3d0 是 SSD(当然)。我们使用 bonnie++ 1.03d 运行 IO 测试,大小设置为 200 GB(-s 200g),以便测试样本永远不会完全在 ARC/L2ARC 中。没有 SSD 的结果是(多次运行的平均值,没有显示差异)

write_chr       write_blk       rewrite         read_chr        read_blk        random seeks
101.998 kB/s    214.258 kB/s    96.673 kB/s     77.702 kB/s     254.695 kB/s    900 /s
Run Code Online (Sandbox Code Playgroud)

有了 SSD,它就变得有趣了。我的假设是结果在最坏的情况下至少应该是相同的。虽然写入/读取/重写速率没有不同,但随机搜索速率在各个 bonnie++ 运行之间存在显着差异(到目前为止在 188 /s 和 1333 /s 之间),平均值为 548 +- 200 /s,因此低于该值 w/o固态硬盘。

所以,我的问题主要是:

  1. 为什么随机搜索率差异如此之大?如果搜索真的是随机的,它们应该不会有太大差异(我的假设)。因此,即使 SSD 损害了性能,它在每次 bonnie++ 运行中也应该是相同的。
  2. 为什么在大多数 bonnie++ 运行中随机搜索性能更差?我假设 bonnie++ 数据的某些部分在 L2ARC 中,并且对这些数据的随机搜索性能更好,而对其他数据的随机搜索性能与以前类似。

not*_*ter 9

不知道为什么你会看到你所看到的行为,但我可以告诉你为什么它们不一定表明现实世界的 ZFS 性能很糟糕。Bonnie 旨在衡量实际磁盘的性能,并有意尝试不利用磁盘/内存缓存。您正在尝试使用它来衡量磁盘缓存。

L2ARC 设备可能需要几个小时才能变热。根据您用于 ARC 的主内存大小以及您的工作负载的磁盘性能,用于 L2ARC 的 100GB SSD 将需要 1-2 小时才能变热,甚至可能更长(来源)。其次,L2Arc 旨在缓存随机读取而不是流式读取工作负载。“如果您将 L2ARC 用于流式或顺序工作负载,那么 L2ARC 将主要忽略它而不缓存它”(来源)。如果您的大部分 bonnie 工作量都进入 L2ARC,我会感到非常惊讶。不要使用 bonnie++,而是尝试生成类似于您实际使用系统的负载。

尽管不太可能,但运行最新的 Bonnie++ 开发版本(1.96 与 1.03d)可能会产生更接近您预期的结果。您可能还想查看这篇关于bonnie++ 与 Sun 7000 系列的sun 博客文章,尽管它们在 NFS 上运行而不是在本地运行。