您的位置:首页 > IT > 正文

OpenZFS 实现"uncached prefetch",显著提升性能

来源:OSCHINA     时间:2023-01-10 08:32:26


(相关资料图)

OpenZFS 近日合并了一个名为"uncached prefetch"的 PR,据称显著优化了性能。

提交 PR 的开发者介绍道,这项变化为 ARC(自适应替换缓存)引入了"uncacheable buffer"——它被传递给 arc_read() 和 arc_write(),并存储在 ARC header 中。当 remove_reference() 删除 ARC header 上的最后一个引用时,它可以立即对其进行销毁,或者如果它被标记为预取,则将其置于新的 arc_uncached 状态。该状态每秒被扫描一次,寻找不需要读取的 stale buffer(在这种情况下,它们会立即被驱逐)。

通过启用预取 (prefetch) 和避免内存复制的组合,这项变化提升了从宽 NVMe 池中进行连续单线程读取的速度(从 2049 到 3932 MiB/s)。在写的过程中,分析工具显示在 3653 MiB/s 的相同吞吐量下,未暂停 (unhalted) 的 CPU 周期减少了 22%。

另一位开发者分享了他以该项变化为特征的基准测试结果,由此可见性能优化明显:

更多细节查看 PR 描述。

相关文章