mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Stefani Seibold <stefani@seibold.net>
To: Andy Lutomirski <luto@amacapital.net>
Cc: Greg KH <gregkh@linuxfoundation.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	X86 ML <x86@kernel.org>, Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
	Andi Kleen <ak@linux.intel.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	John Stultz <john.stultz@linaro.org>,
	Pavel Emelyanov <xemul@parallels.com>,
	Cyrill Gorcunov <gorcunov@openvz.org>,
	andriy.shevchenko@linux.intel.com,
	Martin.Runge@rohde-schwarz.com, Andreas.Brief@rohde-schwarz.com
Subject: Re: Final: Add 32 bit VDSO time function support
Date: Fri, 28 Feb 2014 08:22:04 +0100	[thread overview]
Message-ID: <1393572124.1019.3.camel@wall-e.seibold.net> (raw)
In-Reply-To: <CALCETrW_PHbDzn2S3NyGTSk4yqYjnpJbStCuLc_yBGdfspfFCA@mail.gmail.com>

Am Mittwoch, den 26.02.2014, 16:55 -0800 schrieb Andy Lutomirski:
> Um.  This code doesn't work.  I'll send a patch.  I can't speak
> towards how well it compiles in different configurations.
> 
> I can't speak towards how well it compiles in different
> configurations.  Also, vdso_fallback_gettime needs .cfi annotations, I
> think.  I could probably dredge the required incantations from
> somewhere, but someone else may know how to do it.
> 
> Once I patch it to work, your 32-bit code is considerably faster than
> the 64-bit case.  It's enough faster that I suspect a bug.  Dumping
> the in-memory shows some rather suspicious nops before the rdtsc
> instruction.  I suspect that you've forgotten to run the 32-bit vdso
> through the alternatives code.  The is a nasty bug: it will appear to
> work, but you'll see non-monotonic times on some SMP systems.
> 

I didn't know this. My basic test case is a KVM which defaults to 1 cpu.
Thanks for discovering the issue.

> In my configuration, with your patches, I get (64-bit):
> 
> CLOCK_REALTIME:
> 100000000 loops in 2.07105s = 20.71 nsec / loop
> 100000000 loops in 2.06874s = 20.69 nsec / loop
> 100000000 loops in 2.29415s = 22.94 nsec / loop
> CLOCK_MONOTONIC:
> 100000000 loops in 2.06526s = 20.65 nsec / loop
> 100000000 loops in 2.10134s = 21.01 nsec / loop
> 100000000 loops in 2.10615s = 21.06 nsec / loop
> CLOCK_REALTIME_COARSE:
> 100000000 loops in 0.37440s = 3.74 nsec / loop
> [  503.011756] perf samples too long (2550 > 2500), lowering
> kernel.perf_event_max_sample_rate to 50000
> 100000000 loops in 0.37399s = 3.74 nsec / loop
> 100000000 loops in 0.38445s = 3.84 nsec / loop
> CLOCK_MONOTONIC_COARSE:
> 100000000 loops in 0.40238s = 4.02 nsec / loop
> 100000000 loops in 0.40939s = 4.09 nsec / loop
> 100000000 loops in 0.41152s = 4.12 nsec / loop
> 
> Without the patches, I get:
> 
> CLOCK_REALTIME:
> 100000000 loops in 2.07348s = 20.73 nsec / loop
> 100000000 loops in 2.07346s = 20.73 nsec / loop
> 100000000 loops in 2.06922s = 20.69 nsec / loop
> CLOCK_MONOTONIC:
> 100000000 loops in 1.98955s = 19.90 nsec / loop
> 100000000 loops in 1.98895s = 19.89 nsec / loop
> 100000000 loops in 1.98881s = 19.89 nsec / loop
> CLOCK_REALTIME_COARSE:
> 100000000 loops in 0.37462s = 3.75 nsec / loop
> 100000000 loops in 0.37460s = 3.75 nsec / loop
> 100000000 loops in 0.37428s = 3.74 nsec / loop
> CLOCK_MONOTONIC_COARSE:
> 100000000 loops in 0.40081s = 4.01 nsec / loop
> 100000000 loops in 0.39834s = 3.98 nsec / loop
> [   36.706696] perf samples too long (2565 > 2500), lowering
> kernel.perf_event_max_sample_rate to 50000
> 100000000 loops in 0.39949s = 3.99 nsec / loop
> 
> This looks like a wash, except for CLOCK_MONOTONIC, which got a bit
> slower.  I'll send a followup patch once the bugs are fixed that
> improves the timings to:
> 
> CLOCK_REALTIME:
> 100000000 loops in 2.08621s = 20.86 nsec / loop
> 100000000 loops in 2.07122s = 20.71 nsec / loop
> 100000000 loops in 2.07089s = 20.71 nsec / loop
> CLOCK_MONOTONIC:
> 100000000 loops in 2.06831s = 20.68 nsec / loop
> 100000000 loops in 2.06862s = 20.69 nsec / loop
> 100000000 loops in 2.06195s = 20.62 nsec / loop
> CLOCK_REALTIME_COARSE:
> 100000000 loops in 0.37274s = 3.73 nsec / loop
> 100000000 loops in 0.37247s = 3.72 nsec / loop
> 100000000 loops in 0.37234s = 3.72 nsec / loop
> CLOCK_MONOTONIC_COARSE:
> 100000000 loops in 0.39944s = 3.99 nsec / loop
> 100000000 loops in 0.39940s = 3.99 nsec / loop
> 100000000 loops in 0.40054s = 4.01 nsec / loop
> 
> I'm not quite sure that causes the remaining loss.
> 
> Test code is here:
> 
> https://gitorious.org/linux-test-utils/linux-clock-tests



  parent reply	other threads:[~2014-02-28  7:22 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-26 19:34 Stefani Seibold
2014-02-26 20:10 ` Andy Lutomirski
2014-02-26 20:45 ` Greg KH
2014-02-26 20:54   ` Andy Lutomirski
2014-02-27  0:55     ` Andy Lutomirski
2014-02-27  1:02       ` [PATCH 0/2] Improvements/fixes to 32-bit vdso timing Andy Lutomirski
2014-02-27  1:02         ` [PATCH 1/2] x86: Mark __vdso entries as asmlinkage Andy Lutomirski
2014-02-27  3:25           ` H. Peter Anvin
2014-02-27  3:39           ` Andi Kleen
2014-02-27  5:06             ` H. Peter Anvin
2014-02-27  5:19               ` Andy Lutomirski
2014-02-27  5:22                 ` H. Peter Anvin
2014-02-27 20:11                   ` Andy Lutomirski
2014-02-27 23:12                     ` H. Peter Anvin
2014-02-27  5:07             ` H. Peter Anvin
2014-02-27  1:02         ` [PATCH 2/2] x86: Inline the CLOCK_MONOTONIC vdso code Andy Lutomirski
2014-02-28  0:18       ` [PATCH v2 0/4] vDSO fixes, on top of tip/x86/vdso Andy Lutomirski
2014-02-28  0:18         ` [PATCH v2 1/4] x86: Use the default ABI for the 32-bit vDSO Andy Lutomirski
2014-02-28  7:28           ` Stefani Seibold
2014-02-28 15:06             ` H. Peter Anvin
2014-02-28 20:19               ` Andy Lutomirski
2014-03-01 13:43                 ` Stefani Seibold
2014-02-28  0:18         ` [PATCH v2 2/4] x86: Inline the CLOCK_MONOTONIC vdso code Andy Lutomirski
2014-02-28  0:18         ` [PATCH v2 3/4] x86: Patch alternatives in the 32-bit vDSO Andy Lutomirski
2014-02-28  7:22           ` Stefani Seibold
2014-03-01 14:04           ` Stefani Seibold
2014-02-28  0:18         ` [PATCH v2 4/4] x86: Zero-pad the VVAR page Andy Lutomirski
2014-02-28  7:33         ` [PATCH v2 0/4] vDSO fixes, on top of tip/x86/vdso Stefani Seibold
2014-02-28 20:15           ` Andy Lutomirski
2014-03-01 14:02             ` Stefani Seibold
2014-02-28  7:22       ` Stefani Seibold [this message]
2014-03-01  2:00         ` Final: Add 32 bit VDSO time function support Andy Lutomirski
2014-03-01 22:56           ` H. Peter Anvin
2014-03-02  8:01             ` Stefani Seibold
2014-02-27  5:07     ` H. Peter Anvin
2014-02-27 12:14     ` Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1393572124.1019.3.camel@wall-e.seibold.net \
    --to=stefani@seibold.net \
    --cc=Andreas.Brief@rohde-schwarz.com \
    --cc=Martin.Runge@rohde-schwarz.com \
    --cc=aarcange@redhat.com \
    --cc=ak@linux.intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=gorcunov@openvz.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hpa@zytor.com \
    --cc=john.stultz@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xemul@parallels.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome