Re: Updated rusage patch



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
_______________________________________________
freebsd-arch@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "freebsd-arch-unsubscribe@xxxxxxxxxxx"