Re: scalable kmap (was Re: vm lock contention reduction)

Martin J. Bligh
2002-07-09T04:28:32Z

> It's a bit weird that copy_strings is the heaviest user of kmap().

I can dig out the whole acg, and see what was calling copy_strings,
that might help give us a clue.

> I bet it's kmapping the same page over and over. A little cache
> there will help. I'll fix that up.

Sounds like a plan ...

> So here's the patch. Seems to work. Across a `make -j6 bzImage'
> the number of calls to kmap_high() went from 490,429 down to 41,174.
>
> And guess what? Zero change in wallclock time.

Well, I was going to try to bench this tonight, but am having a
problem with 2.5.25 right now (we've been on 2.4 for a while,
but are shifting). Hopefully get you some numbers tommorow, and
will get some other benchmarks done by people here on various
machines.

> Any theories?

Maybe the cost of the atomic kmap counters the gain? Having to do a
single line tlbflush every time ... a per cpu pool might help if that
is the problem, but would have to make it a reasonable size to counter
the cost. I'll do some more measurements first, and get some profile
data to see if the number of ticks changes down in one function and
up in the other?

Thanks to all for looking at this,

M.