Page MenuHomeFreeBSD

Plumb a domain parameter through uma_reclaim() and callees.
Needs ReviewPublic

Authored by markj on Feb 6 2020, 3:48 AM.

Details

Reviewers
rlibby
jeff
Summary

Now that zones are first-touch by default, it starts making sense to
permit reclamation from a specific domain when the page daemons are
trying to free pages. No functional change intended.

Diff Detail

Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 29201
Build 27129: arc lint + arc unit

Event Timeline

sys/kern/kern_mbuf.c
719

elsewhere we have done:
foo_bar()
foo_bar_domain()

Rather than adding a parameter to all current consumers. In this case quite a lot will want any and I suspect only a few will want _domain() so it may be less churn.

sys/kern/vfs_subr.c
1452

Did we already discuss this?

Why aren't we draining the specific zone here? Do we need to drain unrelated things to push vnode references? this looks weird.

sys/vm/uma_core.c
1154

We should just move iteration and the work into different functions.

I was thinking it would be nice if this code was closer and named with the other zone_domain_ stuff.

1267

again unnecessary iteration.

sys/vm/uma_core.c
1306–1310

This doesn't make as much sense anymore. We still need the logic that protects from concurrent destruction, but now we will refuse to reclaim from one domain if we're already reclaiming from another. What do you think the right behavior will be?