Re: finding out the value of HZ from userspace

From: Peter Williams
Date: Thu Apr 01 2004 - 19:19:29 EST


Richard B. Johnson wrote:
On Thu, 1 Apr 2004, Jamie Lokier wrote:


Arjan van de Ven wrote:

HZ doesn't mean nothing, esp when we go to a tickless kernel...

As explained several times in this thread, HZ is meaningful because it
affects the rounding in select/poll/epoll/setitimer. A few userspace
programs with low jitter soft-RT timing requirements need to
compensate for that rounding and/or deliberately synchronise
themselves with the tick.

Such programs can determine HZ experimentally and lock onto the tick
in the manner of a PLL, but it would be nice to simply be able to
have the value, to reduce the number of control variables.

When we go to a tickless kernel and offer high-resolution timers to
userspace, then it will be irrelevant. Until then, or if the kernel
goes tickless but limits the resolution of timers for efficiency, the
value of HZ is still relevant.

Not to get irritatingly back to the subject of this thread or
anything, but... is the value of HZ reported to userspace anywhere?

Thanks :)
-- Jamie


I may be naive, but what's the matter with:

#include <stdio.h>
#include <sys/param.h> // Required to be here!
int main()
{
printf("HZ=%d\n", HZ);
return 0;
}
It works for me.

There's no guarantee that the kernel that's running was compiled using that header file which (on my system i.e. RedHat 9) comes as part of the glibc package. It also gets the value indirectly via linux/param.h which in turn gets it via asm/param.h which makes any such program highly non portable. Not to mention that the HZ obtained this way is 100 which is actually not the same as HZ in the 2.6.5-rc3 kernel that I'm running.

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/