DragonFly kernel List (threaded) for 2004-02
pipe structure and KVM caching patch
I've done a first pass at improving pipe creation and teardown latencies
and reducing kmem operations (which are nasty on SMP systems). I added
a per-cpu cache of pipe structures and I retain VM object and kmem
mappings in the cached pipe structures. Everything can be monitored
and some params modified via the kern.pipe sysctl. It is untuned but
still represents a good first-order solution. The cache eats around 1MB
of KVM (virtual, not real memory) per cpu under heavy load.
I haven't had any problems testing it so far but more testing can't
hurt. The patch can be retrieved at:
My intention is to commit the pipe patch on thursday, in 3 days.
Robert Watson first mentioned the KVM caching issue for pipes in
FBsd & DFly. KVM allocations and deallocations are expensive on UP
systems and even MORE expensive on SMP systems due to TLB shootdown
The cpu synchronization and PMap TLB shootdown patch will be going in
tomorrow (tuesday). I've gotten positive reports from David and a few
other people, and it has been running on Leaf without incident, so I am
fairly comfortable with its robustness and I need to move onto
stage2 (the VM side of the SMP TLB shootdown race). I've CC'd Alan and
Tor but it's up to them to decide how much of it to port to FreeBSD.