On Tue, Oct 30, 2018 at 11:51:17AM -0700, Andy Lutomirski wrote:
Finally, one issue: rare_alloc() is going to utterly suck
performance-wise due to the global IPI when the region gets zapped out
of the direct map or otherwise made RO. This is the same issue that
makes all existing XPO efforts so painful. We need to either optimize
the crap out of it somehow or we need to make sure itâs not called
except during rare events like device enumeration.
Batching operations is kind of the whole point of the VM ;-) Either
this rare memory gets used a lot, in which case we'll want to create slab
caches for it, make it a MM zone and the whole nine yeards, or it's not
used very much in which case it doesn't matter that performance sucks.
For now, I'd suggest allocating 2MB chunks as needed, and having a
shrinker to hand back any unused pieces.