Tom*_*haw 5 solaris zfs zfs-l2arc
有没有一种在 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 中是持久的,这可能值得花时间。有没有这样的工具?
我建议使用真实的工作负载并使用arcstat
.
就像是:
arcstat.py -f "time,read,l2read,hit%,hits,miss%,miss,l2hit%,l2miss%,arcsz,c,l2size" 1
Run Code Online (Sandbox Code Playgroud)
我认为没有必要“启动”缓存。如果您拥有的工作负载不会自然地填充缓存,那么它就不是具有代表性的基准测试工作负载,对吗?
也许您有一个特殊的用例(您的数据集大小、ARC 大小和工作集大小是多少?),但总的来说,对 L2ARC 的关注被过分强调了。
归档时间: |
|
查看次数: |
1486 次 |
最近记录: |