Commit Graph

13 Commits

Author SHA1 Message Date
ad 4c7ba24481 Add MI code to support in-kernel preemption. Preemption is deferred by
one of the following:

- Holding kernel_lock (indicating that the code is not MT safe).
- Bracketing critical sections with kpreempt_disable/kpreempt_enable.
- Holding the interrupt priority level above IPL_NONE.

Statistics on kernel preemption are reported via event counters, and
where preemption is deferred for some reason, it's also reported via
lockstat. The LWP priority at which preemption is triggered is tuneable
via sysctl.
2008-04-28 15:36:01 +00:00
ad 15efd9ad99 Do adaptive spinning for rwlocks, but only if the lock is write held and
there are no waiters. This gives a major boost to build.sh on larger
systems as directory vnode locks are exclusive for lookup, but are often
only held for a very short period of time.

This change has the potential to more readily expose lock order reversals
and other types of deadlock.
2008-04-04 17:25:09 +00:00
ad ea9faa6742 lockstat: no longer track lockmgr() events. 2008-01-26 14:29:31 +00:00
wiz 833f95f3dc Sort options. Sync -E argument name with man page. 2007-07-15 21:24:46 +00:00
ad 5c2240bb95 - Increase default number of trace buffers to 10000.
- New options:
     -f         Trace only by calling functions.
     -m         Merge call sites within unique functions.
     -M         Merge lock addresses within unique objects.
2007-07-14 13:30:43 +00:00
ad 75922662e1 Correctly seperate different events for the same type of lock. 2007-01-20 20:01:03 +00:00
ad 9f07c24ec6 lockstat: improve reporting slightly, and fix a bug where the command
could spin while resorting lists.
2006-12-25 11:57:40 +00:00
ad 048c3d68d9 Tweak output slightly, and fix a bug. 2006-11-13 19:08:52 +00:00
ad 1279365222 Fix some minor bugs and improve output slightly. 2006-11-08 23:12:57 +00:00
wiz 97c200c877 Sort options. 2006-09-10 21:09:48 +00:00
ad d8323c46d4 Fix a typo. 2006-09-07 14:44:05 +00:00
ad 96d4a987b2 Fix an #include. 2006-09-07 01:23:59 +00:00
ad 297f461929 Add the lockstat command: displays a summary of kernel locking events
recorded over the lifetime of a called program.
2006-09-07 00:50:45 +00:00