Re: [RFC][PATCH] linux-2.6.2-rc2_vsyscall-gtod_B1.patch

Eric W. Biederman
2004-01-31T00:24:30Z

john stultz <johnstul@us.ibm.com> writes:

> All,
> This is my port of the x86-64 vsyscall gettimeofday code to
> i386. This patch moves gettimeofday into userspace, so it can be called
> without the syscall overhead, greatly improving performance. This is
> important for any application, like a database, which heavily uses
> gettimeofday for timestamping. It supports both the TSC and IBM x44X
> cyclone time source.

>
> Example performance gain: (vs. int80)
> Normal gettimeofday
> gettimeofday ( 1665576us / 1000000runs ) = 1.665574us
> vsyscall LD_PRELOAD gettimeofday
> gettimeofday ( 868378us / 1000000runs ) = 0.868377us

And what is the performance gain over using the kernel sysenter
implementation?

> This patch becomes especially important with the introduction of the
> 4G/4G split, as there the syscall overhead is greatly increased.
>
> Example gain w/ 4/4g split: (vs. int80)
> Normal gettimeofday
> gettimeofday ( 7210630us / 1000000runs ) = 7.210623us
> vsyscall LD_PRELOAD gettimeofday
> gettimeofday ( 844855us / 1000000runs ) = 0.844854us

This is clear evidence that the 4g/4g kernel has significant overhead,
suggesting that a 64bit kernel should be used if you care about
syscall performance with gobs of RAM.

Eric