Updated rusage patch
Jeff Roberson
jroberson at chesapeake.net
Fri Jun 1 01:17:42 UTC 2007
On Thu, 31 May 2007, Jeff Roberson wrote:
> On Thu, 31 May 2007, Bruce Evans wrote:
>
> I believe the sched lock locking is necessary for rux. For rusage, however,
> it's only ever modified by curthread. The only races that are present when
> reading without locks are potentially inconsistent rusage where the stats are
> not all from a single snapshot of the program. However, the stats can
> obviously change before the copy makes it back to user-space anyhow. I don't
> see a real race that needs protecting.
>
Now that I've said all of that and committed the patch, I just realized
that there is still one race that is unacceptable. When the thread exits
in thread_exit() and adds the stats of both threads together we could lose
changes in the still-running thread.
I guess I may just leave a ru in struct proc that they are added to. In
the threadlock patch I serialize thread_exit() on a per-process basis.
This will be compatible with the locking there. This will also get rid of
that MALLOC you didn't like at the expense of slightly bloating struct
proc, which I don't like.
Jeff
> This is why I believe the code in exit1() is also safe although technically
> it could lose some information on the way to thread_exit(). To fix this we'd
> have to do the final accumulation under sched_lock the last time we lock it.
> However there are other races in the proc code there that were not
> immediately obvious. Also, doing the accumulation here negates the
> possibility of running process accounting after p_ru is valid, which it is
> not doing now.
>
> Related to rusage but unrelated to my patch; Why are irxss, irdss, and irsss
> expressed in units of bytes*ticks of execution when rusage doesn't report the
> ticks of execution and rather a timeval? Are consumers expected to sum the
> timevals and then extrapolate?
>
> Jeff
>
>>
>> Bruce
>>
> _______________________________________________
> freebsd-arch at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-unsubscribe at freebsd.org"
>
More information about the freebsd-arch
mailing list