lkml.org 
[lkml]   [2011]   [Dec]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH 0/4] clock_gettime_ns and x86-64 optimizations
    Date
    On x86-64, clock_gettime is so fast that the overhead converting to and
    from nanoseconds is non-negligible. clock_gettime_ns is a different and
    faster interface.

    Patch 1 adds the syscall and wires it up on x86-64. Patch 2 implements
    the corresponding vdso entry on x86-64. Patch 3 optimizes the vdso
    call, and patch 4 is a trivial change that speeds up the vdso
    clock_gettime and clock_gettime_ns implementations.

    The vdso timings are (on an 800MHz Sandy Bridge mobile):

    Basic implementation:

    realtime 77.4ns
    monotonic 79.2ns
    realtime_coarse 18.1ns
    monotonic_coarse 22.0ns

    realtime_ns 84.9ns
    monotonic_ns 85.1ns
    realtime_coarse_ns 19.49
    monotonic_coarse_ns 27.32

    Optimized implementation:

    realtime 78.5ns
    monotonic 77.4ns [a little faster -- maybe significant]
    realtime_coarse 18.4ns
    monotonic_coarse 19.4ns

    realtime_ns 77.85ns [a nice improvement]
    monotonic_ns 77.75ns [ditto]
    realtime_coarse_ns 18.2ns
    monotonic_coarse_ns 18.2ns [a lot faster]

    Inlined (patch 4): [everything is improved]

    realtime 73.4ns
    monotonic 72.1ns
    realtime_coarse 13.2ns
    monotonic_coarse 15.8ns

    realtime_ns 73.15ns
    monotonic_ns 72.1ns
    realtime_coarse_ns 14.1ns
    monotonic_coarse_ns 15.6ns

    This being the middle of the holidays, I reserve the right to have made
    mistakes.

    For the git-inclined, this series is at
    https://git.kernel.org/?p=linux/kernel/git/luto/linux.git;a=shortlog;h=refs/heads/timing/clock_gettime_ns/patch_v1

    Andy Lutomirski (4):
    Add clock_gettime_ns syscall
    x86-64: Add __vdso_clock_gettime_ns vsyscall
    x86-64: Optimize vdso clock_gettime
    x86-64: Inline vdso clock_gettime helpers

    arch/x86/include/asm/unistd_64.h | 2 +
    arch/x86/include/asm/vgtod.h | 21 ++++--
    arch/x86/kernel/vsyscall_64.c | 25 +++++++-
    arch/x86/vdso/vclock_gettime.c | 136 ++++++++++++++++++++++++++------------
    arch/x86/vdso/vdso.lds.S | 7 ++
    include/linux/syscalls.h | 3 +
    include/linux/time.h | 5 ++
    kernel/posix-timers.c | 30 ++++++++
    8 files changed, 179 insertions(+), 50 deletions(-)

    --
    1.7.7.4



    \
     
     \ /
      Last update: 2011-12-25 17:53    [W:0.022 / U:0.168 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site