Messages in this thread | | | Date | Sun, 14 Mar 2004 03:05:09 +0200 | From | Micha Feigin <> | Subject | Re: finding out the value of HZ from userspace |
| |
On Sat, Mar 13, 2004 at 11:32:39PM +0100, Arjan van de Ven wrote: > On Sat, 2004-03-13 at 23:14, Micha Feigin wrote: > > On Sat, Mar 13, 2004 at 08:38:52PM +0100, Arjan van de Ven wrote: > > > On Sat, Mar 13, 2004 at 11:34:37AM -0800, John Reiser wrote: > > > > Arjan van de Ven wrote: > > > > >On Thu, 2004-03-11 at 15:17, Micha Feigin wrote: > > > > > > > > > >>Is it possible to find out what the kernel's notion of HZ is from user > > > > >>space? > > > > >>It seem to change from system to system and between 2.4 (100 on i386) > > > > >>to 2.6 (1000 on i386). > > > > > > > > > > > > > > >if you can see 1000 from userspace that is a bad kernel bug; can you say > > > > >where you find something in units of 1000 ? > > > > > > > > create_elf_tables() in fs/binfmt_elf.c tells every ELF execve(): > > > > NEW_AUX_ENT(AT_CLKTCK, CLOCKS_PER_SEC); > > > > which can be found by crawling through the stack above the pointer > > > > to the last environment variable. > > > > > > Ugh that should say 100 on x86.... > > > but.. > > > param.h:# define USER_HZ 100 /* .. some user interfaces are in "ticks" */ > > > param.h:# define CLOCKS_PER_SEC (USER_HZ) /* like times() */ > > > ..... > > > that looks like 100 to me. > > > > > > > When dealing with bdflush and a few other interfaces the values need to > > be in jiffies which requires knowledge of the kernels notion of HZ not > > userspace. > > Wrong. Any such interface is supposed to convert automatically. Any > interface you can find that doesn't should be reported as a serious bug! >
Like I said, look at bdflush in 2.4 (this was fixed with the changed 2.6 interface) and xfs proc interface in both 2.4 and 2.6. In light of your post then there is a serious bug.
For example for bdflush age_buffer field (true for the other used fields also), no conversion: bh->b_flushtime = jiffies + bdf_prm.b_un.age_buffer;
For xfs flush interval: if (pbd_active == 1) { mod_timer(&pb_daemon_timer, jiffies + pb_params.flush_interval.val); interruptible_sleep_on(&pbd_waitq); }
xfs should be converted to centisecs, bdflush should also be converted to centisecs, or the interface from 2.6 should somehow be ported to exist in parallel to the 2.4 one.
I don't mind making a patch, which approach should be used? - 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/
| |