Re: finding out the value of HZ from userspace

From: Peter Williams
Date: Tue Mar 16 2004 - 18:17:06 EST


Andi Kleen wrote:
So it does and POSIX.1 (_SC_CLK_TCK) compliant as well. Unfortunately, the presence of this functionality makes it VERY difficult to understand why ticks are being converted from HZ==1000 values to HZ=100 values when they are being exported to user space especially as this conversion throws away precision. Can anyone enlighten me?


There are two different cases here:

Timer tick as visible to user space in the minimum delay of select()
and other kernel functions with timeout. That is what AT_CLKTCK aims at.

Which is a good reason for USER_HZ to be the same as HZ.


And exports of values with jiffie units in sysctls in /proc. This was in fact i
always a bug because they should have used ms or s as unit (there are readily usable utility functions to do this for sysctl). Otherwise
writing documentation becomes quite difficult. But there are already i
configurations that set or read these values and was not a good idea to subtly and silently break them. Especially since they predate any exporting of HZ to user space. So the the conversion factor was added.

This is not only obscure sysctls, ps and top are also consumers of such
jiffies values in /proc


These programs could (and should) use sysconfig(_SC_CLK_TCK) to find out how many ticks there are in a second so this does not constitute a good reason for USER_HZ not being equal to HZ.

BTW, in ignorance of sysconfig(_SC_CLK_TCK) and because of statements to the same effect in Robert Love's book, I had been assuming that this was the reason for USER_HZ and HZ not being equal. But now that I've been told about sysconfig(_SC_CLK_TCK) I can see no valid reason. That doesn't mean that there aren't any but the reasons you've advanced certainly aren't them.

Peter
--
Dr Peter Williams, Chief Scientist peterw@xxxxxxxxxx
Aurema Pty Limited Tel:+61 2 9698 2322
PO Box 305, Strawberry Hills NSW 2012, Australia Fax:+61 2 9699 9174
79 Myrtle Street, Chippendale NSW 2008, Australia http://www.aurema.com

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