linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [RT]adjtimex gives wrong number of ticks (fwd)
       [not found] <alpine.LFD.2.02.1109302241560.2711@ionos>
@ 2011-09-30 21:04 ` john stultz
  0 siblings, 0 replies; only message in thread
From: john stultz @ 2011-09-30 21:04 UTC (permalink / raw)
  To: Dennis Borgmann; +Cc: linux-rt-users

> ---------- Forwarded message ----------
> Date: Thu, 29 Sep 2011 14:42:45 +0200
> From: Dennis Borgmann <dennis.borgmann@googlemail.com>
> To: linux-rt-users@vger.kernel.org
> Subject: [RT]adjtimex gives wrong number of ticks
> 
> Hello RT-users!
> 
> I am observing strange behaviour regarding CONFIG_HZ on various machines, while
> trying to adjust the tickrate of some systems. I found, that adjtimex(2) is not
> behaving the way it should. If I write a simple program like this:
> 
> #include <stdio.h>
> #include <sys/timex.h>
> int main() {
>     struct timex t;
>     adjtimex(&t);
>     printf("%ld\n",t.tick);
> }
> 
> , which simply is to print the time in usec between two kernel ticks, the output
> makes no sense. On a RT-System with CONFIG_HZ=1000, the output is "10000" and on
> a non-RT system with CONFIG_HZ=250 (my desktop-laptop), the output is "9999" -
> almost the same.
> 
> If I calculate correctly, it should be 1000 with CONFIG_HZ and 4000 with
> CONFIG_HZ=250.
> 
> Am i wrong, or is this an error?
> 
> Btw: adjtimex with a tick of of 1000 gives me this:
> 
> root@ap:/tmp# adjtimex --tick 1000
> adjtimex: Invalid argument
> for this kernel:
>    USER_HZ = 100 (nominally 100 ticks per second)
>    9000 <= tick <= 11000
>    -32768000 <= frequency <= 32768000
> 
> on the RT-system with CONFIG_HZ=1000. This is also odd - it should print
> "USER_HZ=1000" and not "USER_HZ=100".
> 
> Strange... Any ideas?

So USER_HZ is always 100 (atleast on x86 and X86_64 systems).

Its a architecture specific constant that allows the kernel to keep a
consistent ABI to userspace regardless of what the internal
configuration of the kernel is.

So the kernel will take adjustments to the tick value via adjtimex and
scale them appropriately to the internal HZ value before applying it.

So while you may be running with HZ=250 or HZ=1000, the kernel
interfaces that expose "ticks" will always use USER_HZ (100) based
ticks.

thanks
-john





^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2011-09-30 21:05 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <alpine.LFD.2.02.1109302241560.2711@ionos>
2011-09-30 21:04 ` [RT]adjtimex gives wrong number of ticks (fwd) john stultz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).