Hello all, While discussing milliseconds and jiffies and their inter-relations with Roman Zippel in a separate thread, I came across an interesting and perhaps problematic rounding issue with directly using HZ when HZ==250.
Consider requesting a 10 millisecond sleep, in jiffies. This is accomplished via HZ/100, as there are HZ jiffies in a second and, thus, 1/100th of HZ should be 10 milliseconds in jiffies (this is the common interpretation, I think, and the flaw may simply lie in the interpretation). But, if HZ==250, then HZ/100 = 2 (integer division with truncation), which when translated to milliseconds, is 8 ms (250 interrupts per second means a jiffy is 4 milliseconds in duration). Now, combine this with the potential corner case (explained in http://marc.theaimsgroup.com/?l=linux-kernel&m=112311712414431&w=2) where a schedule_timeout(HZ/100) request occurs immediately before a timer interrupt occurs. We now might get a 4 millisecond sleep *and* have schedule_timeout() return 0, indicating falsely that a full 10 millisecond sleep has elapsed. Could be, though, that my analysis is flawed here too :) Please correct me if that's the case! I will try to audit the direct users of HZ; maybe this isn't really a problem. Just some food for thought. Thanks, Nish - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/