Page MenuHomeFreeBSD

Fix arc after kmem/kernel_arena merge
ClosedPublic

Authored by jeff on Dec 14 2017, 9:37 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Mar 28, 3:20 PM
Unknown Object (File)
Tue, Mar 19, 3:36 PM
Unknown Object (File)
Tue, Mar 19, 3:06 PM
Unknown Object (File)
Mar 15 2024, 10:11 AM
Unknown Object (File)
Jan 16 2024, 5:13 PM
Unknown Object (File)
Dec 22 2023, 10:29 PM
Unknown Object (File)
Nov 15 2023, 2:45 AM
Unknown Object (File)
Nov 12 2023, 10:02 AM
Subscribers

Details

Summary

kernel_arena doesn't have the same initial size constraint as kmem did. This broke some of the arena logic in arc. Setting a limit on kernel_arena would produce other undesirable results and complications. Instead, I opted to use the uma limit feature directly. This required some FreeBSD specific ifdefs.

Test Plan

pho reports it is stable and no longer has a perf regression relatively to pre change.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

This revision is now accepted and ready to land.Dec 17 2017, 8:06 PM
cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
4293 ↗(On Diff #36614)

I'd suggest not adding this new ifdef and instead moving zio_area definition to be alongside heap_arena in sys/cddl/compat/opensolaris/sys/kmem.h. If I correctly understand, now it will always be NULL on FreeBSD.

4337 ↗(On Diff #36614)

This is FreeBSD-specific code. It's not present upstream at all.
It was added by @mav in rS281109 and then transformed to the current shape when a big ZFS change was imported in rS286625.
So, if we really think that that kind of check is not needed any longer in ARC, then this block and all traces of FMR_ZIO_FRAG can just be removed.

cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
4337 ↗(On Diff #36614)

The original commit is rS281026, actually.

jeff marked 2 inline comments as done.Jan 1 2018, 12:44 AM
This revision was automatically updated to reflect the committed changes.