From: Miroslav Lichvar <mlichvar@redhat.com>
To: linux-kernel@vger.kernel.org
Cc: John Stultz <john.stultz@linaro.org>,
Prarit Bhargava <prarit@redhat.com>,
Richard Cochran <richardcochran@gmail.com>
Subject: [PATCH RFC 0/3] Improve stability of system clock
Date: Wed, 17 May 2017 18:13:14 +0200 [thread overview]
Message-ID: <20170517161317.19557-1-mlichvar@redhat.com> (raw)
This is an attempt to improve stability and accuracy of the system clock
with very accurate time sources like the new PTP KVM clock or NTP/PTP
using hardware timestamping. It affects mainly kernels running with
NOHZ. It requires updating of the old ia64 and powerpc vsyscalls.
The main problem is that the error accumulated in the ntp_error register
takes too long to correct and this cannot be easily fixed. There are
four sources of the error:
- rounding of time for old vsyscalls
- alignment of frequency adjustments to ticks
- iterative correction of the multiplier
- limited resolution of the multipler
Instead of trying to correct the error faster, the patches remove the
first three sources. With the only remaining source the correction logic
can be simplified and the frequency of the clock is much more stable and
accurate.
Simulations of a frequency step in linux-tktest (values are in ppm and
nanoseconds):
Before:
nohz on [1, samples/2] [samples/2 + 1, samples]
samples freq dev max freq dev max
10 1.47222 1341.3 2217.8 0.06322 0.2 0.5
30 0.20799 849.5 2448.7 0.06311 0.2 0.6
100 0.04101 492.1 2895.2 0.06311 0.2 0.5
300 0.05660 295.5 3026.1 0.02064 28.3 108.9
1000 0.01994 409.8 2732.1 0.00355 13.7 52.2
3000 0.00477 469.1 3238.9 0.00070 11.0 40.9
10000 0.00081 377.3 3791.6 0.00013 9.4 36.2
30000 0.00016 259.9 4055.7 0.00004 8.9 34.1
100000 0.00003 159.0 4177.2 0.00000 13.7 58.4
nohz off [1, samples/2] [samples/2 + 1, samples]
samples freq dev max freq dev max
10 3.55062 6.2 10.8 0.05730 0.0 0.0
30 0.44672 4.5 14.1 0.05724 0.2 0.5
100 0.03649 2.7 17.4 0.05711 0.2 0.5
300 0.05815 1.7 18.7 0.06313 0.2 0.5
1000 0.06270 1.0 19.1 0.06315 0.2 0.5
3000 0.05720 1.9 19.9 0.02065 1.1 4.1
10000 0.01947 13.5 41.0 0.00339 0.5 1.7
30000 0.00448 17.5 75.9 0.00065 0.3 1.0
100000 0.00078 14.2 101.7 0.00012 0.2 0.7
After:
nohz on [1, samples/2] [samples/2 + 1, samples]
samples freq dev max freq dev max
10 0.01584 9.0 14.2 0.02937 2.7 7.2
30 0.00426 10.9 22.4 0.00481 6.5 19.2
100 0.00077 11.6 26.3 0.00074 9.0 26.9
300 0.00013 12.4 29.9 0.00018 8.7 29.3
1000 0.00003 12.6 31.8 0.00003 8.7 32.1
3000 0.00001 12.6 33.3 0.00001 9.1 33.4
10000 0.00000 12.9 34.0 0.00000 9.0 34.1
30000 0.00000 12.8 34.5 0.00000 9.0 34.5
100000 0.00000 16.5 51.2 0.00000 13.7 58.5
nohz off [1, samples/2] [samples/2 + 1, samples]
samples freq dev max freq dev max
10 0.10309 0.1 0.1 0.12717 0.0 0.1
30 0.04269 0.1 0.3 0.02592 0.1 0.4
100 0.00629 0.3 0.5 0.00521 0.2 0.5
300 0.00109 0.3 0.6 0.00099 0.2 0.5
1000 0.00019 0.3 0.6 0.00022 0.2 0.6
3000 0.00002 0.3 0.6 0.00002 0.2 0.6
10000 0.00000 0.3 0.6 0.00000 0.2 0.6
30000 0.00000 0.3 0.6 0.00000 0.2 0.6
100000 0.00000 0.3 0.6 0.00000 0.2 0.6
Miroslav Lichvar (3):
timekeeping: Remove support for old vsyscalls
timekeeping: Don't align frequency adjustments to ticks
timekeeping: Determine multiplier directly from NTP tick length
include/linux/timekeeper_internal.h | 9 +-
kernel/time/Kconfig | 4 -
kernel/time/timekeeping.c | 184 +++++++++---------------------------
3 files changed, 48 insertions(+), 149 deletions(-)
--
2.9.3
next reply other threads:[~2017-05-17 16:13 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-17 16:13 Miroslav Lichvar [this message]
2017-05-17 16:13 ` [PATCH RFC 1/3] timekeeping: Remove support for old vsyscalls Miroslav Lichvar
2017-05-17 16:13 ` [PATCH RFC 2/3] timekeeping: Don't align frequency adjustments to ticks Miroslav Lichvar
2017-05-17 16:13 ` [PATCH RFC 3/3] timekeeping: Determine multiplier directly from NTP tick length Miroslav Lichvar
2017-05-17 16:30 ` [PATCH RFC 0/3] Improve stability of system clock John Stultz
2017-05-17 16:57 ` Miroslav Lichvar
2017-05-17 17:02 ` John Stultz
2017-05-17 17:22 ` Miroslav Lichvar
2017-05-17 23:06 ` John Stultz
2017-05-18 4:54 ` Richard Cochran
2017-05-20 0:35 ` John Stultz
2017-05-21 3:19 ` Rusty Russell
2017-06-08 16:17 ` Miroslav Lichvar
2017-06-08 18:36 ` John Stultz
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=20170517161317.19557-1-mlichvar@redhat.com \
--to=mlichvar@redhat.com \
--cc=john.stultz@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=prarit@redhat.com \
--cc=richardcochran@gmail.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