首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZFS ARC缓存和Linux缓冲区缓存争用(Ubuntu 16.04)

ZFS ARC缓存和Linux缓冲区缓存争用(Ubuntu 16.04)
EN

Server Fault用户
提问于 2017-06-22 19:31:07
回答 2查看 8.4K关注 0票数 8

我的测试系统设置是一个简单的raidz 5磁盘(每个8 TBs ),有256 GB内存。性能良好,达到650 MB/秒的吞吐量。最后,Linux缓冲区缓存被填满,并开始导致ZFS缓存收缩,直到大小达到32 MB。一旦发生这种情况,吞吐量将下降到大约60 MB/秒。

我尝试过一些内核优化选项,比如将vm.vfs_cache_pressure设置为200,但没有改变问题的发生。

我目前的解决方法是将/sys/module/zfs/parameters/zfs_arc设置为128 GB,将zfs_arc_max设置为252 GB。由于Linux缓冲区缓存,ARC从未超过128 GB,但是整个数据传输的性能保持在650 MB/秒的吞吐量水平。

理想情况下,我希望能够同时禁用Linux缓冲区缓存,并让ZFS ARC缓存介于0到256 GB之间,将剩余的内存留给应用程序工作负载。如果能够给予ZFS ARC缓存比Linux缓冲区缓存更高的优先级,那么这也是一个可以接受的答案,因为它将有效地禁用Linux缓冲区缓存。

谢谢,扎克

编辑1:我试图解决的问题是Linux缓冲区缓存将ZFS ARC从内存中删除。我希望应用程序工作负载能够使用所有内存,而ZFS也相应地缩小了。作为解决办法,我必须将ZFS ARC min大小设置为一个大值,因为如果min大小设置为0,Linux缓冲区缓存将从内存中清除ARC。

EN

回答 2

Server Fault用户

发布于 2017-06-22 19:53:05

设置一个最小ARC值。这就是你所需要的。

ARC将视需要增长/缩小。任何吃缓冲区缓存的东西都不能放在ZFS文件系统上。这台服务器在干什么?

票数 5
EN

Server Fault用户

发布于 2017-06-22 22:10:44

尝试使用sync挂载选项挂载您的NFS目录。

此外,为了限制Linux页面缓存的使用,您可以定期运行echo 3 > /proc/sys/vm/drop_caches

编辑:与eewhite注释一样,最后一个命令似乎不仅删除了页面缓存,而且还删除了ARC。所以,要谨慎行事,只有在必要时才会这样做。

echo 1 >/proc/sys/vm/drop_caches将触碰Linux缓冲区缓存,但不要使用ARC。

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

https://serverfault.com/questions/857350

复制
相关文章

相似问题

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