关于 ZFS 的很多资料都提到,基本上你能投入的内存越多越好。不过,我计划在配备 16GB RAM 的笔记本电脑上使用 ZFS——虽然这对于 ZFS 来说应该足够了,但我希望能够使用计算机,而不是从中提供文件;换句话说,我希望应用程序能够使用(至少大部分)内存,而不是文件系统实现。
因此,将其表述为一个问题,当 ZFS 在运行非 IO 敏感且内存使用率高的应用程序的计算机上运行时,我该如何解释 ZFS 的内存需求?
答案1
您还可以通过设置参数来调整内存要求zfs_arc_max
:
# cat /etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=4294967296
其中有/sys
显示zfs
设置的参数:
/sys/module/zfs/parameters/zfs_arc_max
/sys/module/zfs/parameters/zfs_arc_min
您还可以使用以下zfs primarycache
设置来设置要缓存的文件系统:
# zfs set primarycache=[all none metadata] zpool/fs
答案2
虽然 ZFS 会使用它认为有用的内存来缓存内容,但如果有需求,它会将其返还给应用程序。
请注意,其他文件系统也会占用尽可能多的内存作为缓存。主要区别在于内存可立即供应用程序使用。使用 ZFS 时,会有轻微的延迟,但这应该没有什么区别,除非您的应用程序使用内存的速度比 ZFS 释放内存的速度快,或者考虑到报告的可用内存(+缓冲区/缓存)并在可用内存不足时拒绝启动。
在这种情况下,如果您提前知道应用程序所需的内存占用量,则可以设置 arc max size 调整值来保留一些 RAM。
答案3
我在拥有 8GB RAM 的服务器上的 Linux 上运行 zfs。正如文档所述,它确实消耗了大部分 RAM。但是,我注意到运行内存密集型应用程序时性能没有差异。似乎如果您需要内存,zfs 会很乐意将其放弃使用。不过,要习惯看到荒谬的内存使用百分比。