有没有一种在 Solaris 11.3 上填充 ZFS L2ARC 缓存的好方法?
L2ARC 旨在忽略从文件中顺序读取的块。这对于正在进行的操作是有意义的,但很难为初始预热或基准测试准备缓存。
此外,高度碎片化的文件可能会从 L2ARC 中缓存的顺序读取中受益匪浅(因为在磁盘上它们是随机读取),但使用当前的启发式方法,即使 L2ARC 只有 10% 已满,这些文件也永远不会被缓存。
在以前的 Solaris 10 和 11 发行版中,我成功地dd对每个文件连续使用了两次。第一个dd将文件读入 ARC,第二个dd似乎让缓冲区发痒,因此它们符合 L2ARC 缓存的条件。相同的技术在 Solaris 11.3 中似乎不起作用。
我已确认相关文件的记录大小为 8k, 我已经尝试过设置,更新:zfs_prefetch_disable但这对 L2ARC 行为没有影响zfs_prefetch_disable结果很重要,请参阅下面的答案。
如果没有好的方法可以做到这一点,我会考虑使用一种工具来生成超过 100% 的文件随机读取。鉴于缓存现在在 11.3 中是持久的,这可能值得花时间。有没有这样的工具?