Alfred Perlstein wrote:
* [EMAIL PROTECTED] <[EMAIL PROTECTED]> [080430 18:13] wrote:
Howdy,

In deploying 7.0 at work we were finding a persistent problem when
running "vmstat 1" on systems.  The problem shows up as a 10ms "pause"
in processing, usually packet stamping and forwarding by a user level
process.  This is due to the fact that vmstat calls the vmtotal()
routine which in turn does a whole lot of locking.  The vmtotal call
locks and walks the VM object list twice in a mark and sweep
operation.

So, the question is, "What is the right way to fix this?"  I could
remove the locking since the O_ACTIVE bit is not used by any other
routine besides vmtotal, but I'm not too happy about that.

The relevant code can be found in src/sys/vm/vm_meter.c in vmtotal().

Thoughts?

Can you _really_ remove the locking?  I don't think that would be safe
if the list is being manipulated, but I haven't checked.

Typically one uses a sentinal to get around such problems.  Basically
insert a dummy object that no one should touch other than you, then
drop the lock periodically and insert it into the list, then resume.


net80211 uses a scan generation # to walk it's node lists.  No sentinel.

   Sam


_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to