首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >zfs:不导出的刷新缓存

zfs:不导出的刷新缓存
EN

Server Fault用户
提问于 2022-04-14 11:40:28
回答 1查看 1.3K关注 0票数 3

为了进行测试,我需要zfs的缓存是冷的。

我可以通过删除缓存磁盘、导出和导入池来从池中清除缓存。这给了我想要的效果。但我真的不想出口这个池。

是否有不太激烈的方法来达到同样的效果?

我要找的是相当于:

代码语言:javascript
运行
复制
echo 3 > /proc/sys/vm/drop_caches

这就是我对ext4想要的。

背景

我可以用不同的方式运行我的算法。我不在乎最好的表现。我关心的是最坏的表现。最坏的情况是冷数据(数据很久以前就接触到了,已经不在ARC/L2ARC中了)。

要选择运行算法的最佳方式,我需要能够在相同的测试集上运行。这个测试装置肯定是冷的。这完全违背了ZFS的缓存策略:如果我一次又一次地在同一个测试集上运行,它会将数据放入ARC --这在正常情况下是非常有意义的,但这里没有。

我可以在我的开发人员机器上进行导出/导入,但是我不能在生产中这样做。然而,在生产中,刷新缓存是可以接受的。

我更喜欢ARC仍然工作,所以冷数据被读取后被缓存(同样类似于ext4),但是我可以在测试期间与ARC完全禁用。

EN

回答 1

Server Fault用户

发布于 2022-12-29 17:02:45

echo 3 > /proc/sys/vm/drop_caches过去常常清除ZFS缓存,但最近的一些提交将其更改为只部分清除它。

要恢复旧行为,必须将zfs_arc_shrinker_limit模块参数设置为0 (参见这里)。

因此,在不导出池的情况下放弃ARC:

代码语言:javascript
运行
复制
echo 0 > /sys/module/zfs/parameters/zfs_arc_shrinker_limit
echo 3 > /proc/sys/vm/drop_caches

上面的内容将删除几乎所有的ZFS ARC,只留下少数与基本池元数据相关的MB。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1098594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档