Re: Setting sysctl vfs.zfs.arc_max failed: 22

From: Allan Jude <allanjude_at_freebsd.org>
Date: Tue, 5 Jul 2016 21:45:14 -0400
On 2016-07-05 21:32, Nathan Bosley wrote:
> I think in about 4 - 5 hours I can show what values I'm using in
> loader.conf under, say, r302264 and r302265 for comparison. I'm not 100%
> sure that the problem arose for me in r302265; I merely suspect it.
> 
> On Tue, Jul 5, 2016 at 9:25 PM, Allan Jude <allanjude_at_freebsd.org
> <mailto:allanjude_at_freebsd.org>> wrote:
> 
>     On 2016-07-05 20:27, Steven Hartland wrote:
>     > Ahh right, let me check that.
>     >
>     > On 06/07/2016 00:51, Nathan Bosley wrote:
>     >> I actually have this same problem.
>     >> I'll send more details when I get home later.
>     >>
>     >> I think the problem started for me after r302265.
>     >> Before that, I can set vfs.zfs.arc_max and vfs.zfs.arc_min in
>     >> loader.conf.
>     >> After r302265, setting either vfs.zfs.arc_max or vfs.zfs.arc_min in
>     >> loader.conf results in the EINVAL errors in 'dmesg':
>     >>
>     >> Setting sysctl vfs.zfs.arc_max failed: 22
>     >> Setting sysctl vfs.zfs.arc_min failed: 22
>     >>
>     >> But setting vfs.zfs.arc_meta_limit in loader.conf works fine.
>     >>
>     >> But I did notice that using 'sysct' or sysctl.conf for vfs.zfs.arc_max
>     >> and vfs.zfs.arc_min works.
>     >> I only have problems with setting them now in loader.conf.
>     >>
>     >> Like I said, I'll try to send output from my setup later.
>     >>
>     >> Thanks.
>     >>
>     >> On Tue, Jul 5, 2016 at 6:10 PM, Steven Hartland
>     >> <steven_at_multiplay.co.uk <mailto:steven_at_multiplay.co.uk>
>     <mailto:steven_at_multiplay.co.uk <mailto:steven_at_multiplay.co.uk>>> wrote:
>     >>
>     >>     What is it currently?
>     >>
>     >>     Just had a quick play here:
>     >>     sysctl vfs.zfs.arc_max
>     >>     vfs.zfs.arc_max: 32283127808
>     >>     sysctl vfs.zfs.arc_max=32283127807
>     >>     vfs.zfs.arc_max: 32283127808 -> 32283127807
>     >>     sysctl vfs.zfs.arc_max=32283127808
>     >>     vfs.zfs.arc_max: 32283127807 -> 32283127808
>     >>
>     >>     Error 22 = EINVAL so I suspect you're requesting a value
>     which one
>     >>     of the following:
>     >>     * < arc_abs_min
>     >>     * > kmem_size
>     >>     * < arc_c_min
>     >>     * < zfs_arc_meta_limit
>     >>
>     >>         Regards
>     >>         Steve
>     >>
>     >>     On 05/07/2016 22:56, Eric van Gyzen wrote:
>     >>
>     >>         Steven and -current:
>     >>
>     >>         I just updated to r302350 with a GENERIC kernel config. 
>     I see
>     >>         this in
>     >>         dmesg:
>     >>
>     >>              VT(efifb): resolution 1024x768
>     >>              Setting sysctl vfs.zfs.arc_max failed: 22
>     >>              CPU: Intel(R) Xeon(R) CPU E5-1650 v3 _at_ 3.50GHz
>     >>         (3491.98-MHz K8-class
>     >>              CPU)
>     >>
>     >>         The relevant parts of /boot/loader.conf are:
>     >>
>     >>              zfs_load="YES"
>     >>              vfs.zfs.arc_max="6442450944"
>     >>
>     >>         Let me know what other information you need.
>     >>
>     >>         Cheers,
>     >>
>     >>         Eric
>     >>
>     >>
>     >>     _______________________________________________
>     >>     freebsd-current_at_freebsd.org
>     <mailto:freebsd-current_at_freebsd.org>
>     <mailto:freebsd-current_at_freebsd.org
>     <mailto:freebsd-current_at_freebsd.org>>
>     >>     mailing list
>     >>     https://lists.freebsd.org/mailman/listinfo/freebsd-current
>     >>     To unsubscribe, send any mail to
>     >>     "freebsd-current-unsubscribe_at_freebsd.org
>     <mailto:freebsd-current-unsubscribe_at_freebsd.org>
>     >>     <mailto:freebsd-current-unsubscribe_at_freebsd.org
>     <mailto:freebsd-current-unsubscribe_at_freebsd.org>>"
>     >>
>     >>
>     >
>     > _______________________________________________
>     > freebsd-current_at_freebsd.org <mailto:freebsd-current_at_freebsd.org>
>     mailing list
>     > https://lists.freebsd.org/mailman/listinfo/freebsd-current
>     > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org
>     <mailto:freebsd-current-unsubscribe_at_freebsd.org>"
> 
> 
>     I think the issue might be that the default value of arc_min is higher
>     than when the user is trying to set arc_max to. In that case we might
>     want sysctl to lower arc_min instead of giving an error?
> 
>     It would definitely be a POLA violation to have to set arc_min lower to
>     be able to have existing lines that set arc_max in loader.conf work
>     correctly.
> 
>     --
>     Allan Jude
> 
> 

The problem is related to Steven's commit, which makes it so you can
adjust arc_max and arc_min at runtime. Part of this change put in a
requirement that the new arc_max you are trying to set, must be less
than the current arc_min. When you first boot, i think the default is
arc_max = all ram save 1GB, and arc_min = 1/8 of that.

So if you try to set your arc_max to 1/8th or less, it will fail with
that error 22 (this should be fixed).

You can work around it temporarily by setting a lower arc_min first.


-- 
Allan Jude


Received on Tue Jul 05 2016 - 23:45:16 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:06 UTC