From: bugzilla-daemon@bugzilla.kernel.org
To: platform-driver-x86@vger.kernel.org
Subject: [Bug 213029] New: [5.12 Regression] clock_gettime() a lot slower with Hyper-V clocksource driver
Date: Tue, 11 May 2021 13:08:22 +0000 [thread overview]
Message-ID: <bug-213029-215701@https.bugzilla.kernel.org/> (raw)
https://bugzilla.kernel.org/show_bug.cgi?id=213029
Bug ID: 213029
Summary: [5.12 Regression] clock_gettime() a lot slower with
Hyper-V clocksource driver
Product: Drivers
Version: 2.5
Kernel Version: 5.12
Hardware: x86-64
OS: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: Platform_x86
Assignee: drivers_platform_x86@kernel-bugs.osdl.org
Reporter: mgamal@redhat.com
Regression: No
Since kernel 5.12 the performance of clock_gettime() is a lot slower. There
seems to be a regression concerning VDSO in the Hyper-V clocksource driver.
The following code snippet runs a lot slower:
===============================
# gcc gettime.c -o gettime
# cat gettime.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[]) {
struct timespec start;
unsigned long i;
for (i=0; i<100000000UL; i++) {
if( clock_gettime(CLOCK_REALTIME, &start) == -1 ) {
perror( "clock gettime" );
exit( EXIT_FAILURE );
}
}
return 0;
}
===============================
# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
hyperv_clocksource_tsc_page
1) With kernel >= 5.12
# time ./gettime
real 0m48.201s
user 0m14.788s
sys 0m31.531s
2) With kernel < 5.12
# time ./gettime
real 0m3.308s
user 0m3.214s
sys 0m0.003s
I bisected the kernel and the commit that introduces the regression seems to be
this:
commit e4ab4658f1cff14c82202132f7af2cb5c2741469
Author: Michael Kelley <mikelley@microsoft.com>
Date: Tue Mar 2 13:38:19 2021 -0800
clocksource/drivers/hyper-v: Handle vDSO differences inline
While the driver for the Hyper-V Reference TSC and STIMERs is architecture
neutral, vDSO is implemented for x86/x64, but not for ARM64. Current code
calls into utility functions under arch/x86 (and coming, under arch/arm64)
to handle the difference.
Change this approach to handle the difference inline based on whether
VDSO_CLOCK_MODE_HVCLOCK is present. The new approach removes code under
arch/* since the difference is tied more to the specifics of the Linux
implementation than to the architecture.
No functional change.
Signed-off-by: Michael Kelley <mikelley@microsoft.com>
Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Acked-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link:
https://lore.kernel.org/r/1614721102-2241-8-git-send-email-mikelley@microsoft.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
It does indeed not introduce any functional changes, but degradation in
performance is quite noticeable.
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are watching the assignee of the bug.
next reply other threads:[~2021-05-11 13:08 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-11 13:08 bugzilla-daemon [this message]
2021-05-12 15:02 ` [Bug 213029] [5.12 Regression] clock_gettime() a lot slower with Hyper-V clocksource driver bugzilla-daemon
2025-12-22 7:05 ` bugzilla-daemon
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=bug-213029-215701@https.bugzilla.kernel.org/ \
--to=bugzilla-daemon@bugzilla.kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).