On Mon, May 12, 2014 at 11:19:39AM +0200, Michael Kerrisk (man-pages) wrote: > Hi Peter, > > On Mon, May 12, 2014 at 10:47 AM, Peter Zijlstra <pet...@infradead.org> wrote: > > On Mon, May 12, 2014 at 08:53:59AM +0200, Michael Kerrisk (man-pages) wrote: > >> On 05/11/2014 04:54 PM, Michael Kerrisk (man-pages) wrote: > > > >> > $ time sudo ./t_sched_setattr d 18446744072 18446744072 18446744073 > >> > >> I realize my speculation was completely off the mark. time(2) really > >> is reporting the truth, and the sched_setattr() call returns immediately. > >> But it looks like with these settings the deadline scheduler gets itself > >> into a confused state. The process chews up a vast amount of CPU time > >> for the few actions (including process teardown) that occur after > >> the sched_setattr() call, and since the SCHED_DEADLINE process has > >> priority over everything else, the system locks up. > > > > Yeah, its doing something weird alright.. let me see if I can get > > something useful out. > > Thanks!
So I think its because the way we check wrapping (s64)(a - b) < 0 This means that its impossible to tell if time went fwd or bwd with 64bit increments. I've not entirely pinpointed where this is wrecking things, but it seems like a fair bet this is what's going wrong. So I'm tempted to put a sanity check on all these values to make sure <= 2^63. That way the wrapping logic in the kernel keeps working. And 2^63 [ns] should be plenty large enough for everyone (famous last words of course). > > Btw, you do know about EX_USAGE from sysexits.h ? > > Yes, I'm peripherally aware of them, but have tended to avoid them > because they're not in POSIX, and don't seem to be all that widely > used. Ah, so then its just something weird I've picked up along the way :-) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/