Updated rusage patch
Bruce Evans
brde at optusnet.com.au
Fri Jun 1 10:18:57 UTC 2007
On Fri, 1 Jun 2007, Jeff Roberson wrote:
> On Fri, 1 Jun 2007, Bruce Evans wrote:
> Well, I think the whole exit/wait path could probably use some attention.
> There is an incredible amount of locking and unlocking to deal with various
> races and lock order issues. And there are many subtle effects which aren't
> immediately obvious. I'm nervous about how many bugs might be caused if we
> start going down this path so close to 7.0.
I'm afraid to look too closely :-).
>> Related bugs:
>> - td_[usip]ticks are still under (j) (sched_lock) in proc.h.
>> - td_(uu,us}ticks have always (?) been under (k) (thread-local). That
>> is more correct than (j), but they are updated by an interrupt handler
>> and seem to be accessed without disabling interrupts elsewhere.
[See other replies for large modifications to this]
> Well td_[uisp]ticks are set and cleared while the sched_lock is held. In
> threadlock.diff the thread lock is responsible for this. That reminds me
> that I didn't add the per-thread locking to rufetch() in the patch I posted
> earlier.
But the ticks fields aren't aren't under sched_lock in the patches or
committed version. The could easily be under time_lock, but were
carefully pushed out of that too in the time_lock changes. Per-thread
locking in statclock() and rufetch() could fix this but would give more
locking overhead in statclock().
Bruce
More information about the freebsd-arch
mailing list