Re: Unknown HZ value! (1908) Assume 1024.

Albert D. Cahalan (acahalan@cs.uml.edu)
Mon, 1 Apr 2002 03:28:30 -0500 (EST)


Tim Schmielau writes:
> On Wed, 20 Feb 2002, Tom Holroyd wrote:

>>>> jif * smp_num_cpus - (user + nice + system)
>>>
>>> Changing the line to this:
>>>
>>> jif * smp_num_cpus - user - nice - system
>>>
>>> should avoid the overflow.
>>
>> True. It still might be a good idea to make them longs, though,
>> because they are really totals of all the CPUs, as in:
>> user += kstat.per_cpu_user[cpu];
>>
>> Now ultimately, kstat.per_cpu_user[cpu] will overflow, and I don't
>> know what to do about that, but making user, nice, and system unsigned
>> long will at least allow SMP systems to last a little while longer.
>> (Actually I don't know why Procps needs these values at all -- the
>> claim in the code is that all of this is just to compute the HZ value,
>> which is presumably needed to be able to interpret jiffies. It'd be a
>> lot simpler just to have /proc/stat export the HZ value directly.)

Yeah, it would be a lot simpler. Try telling that to Linus. :-(

> I'd still prefer to export only 32 bit of user, nice, and system. This
> way they overflow in a clearly defined way - the 32 bits we export are
> exact, only the higher bits are missing.

The higher bits are absolutely required.

There are ways to push the work of doing a 64-bit counter out into the
proc filesystem and a timer that goes off every 31 bits worth of time.
I've posted an explanation before; you may search for it if you like.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/