xen-devel
[Xen-devel] RE: [PATCH 3/5] x86/pvclock: add vsyscall implementation
To: |
Avi Kivity <avi@xxxxxxxxxx>, Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx> |
Subject: |
[Xen-devel] RE: [PATCH 3/5] x86/pvclock: add vsyscall implementation |
From: |
Dan Magenheimer <dan.magenheimer@xxxxxxxxxx> |
Date: |
Tue, 6 Oct 2009 07:19:51 -0700 (PDT) |
Cc: |
Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>, kurt.hackel@xxxxxxxxxx, the arch/x86 maintainers <x86@xxxxxxxxxx>, Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>, Glauber de Oliveira Costa <gcosta@xxxxxxxxxx>, Keir Fraser <keir.fraser@xxxxxxxxxxxxx>, zach.brown@xxxxxxxxxx, chris.mason@xxxxxxxxxx |
Delivery-date: |
Tue, 06 Oct 2009 07:23:20 -0700 |
Envelope-to: |
www-data@xxxxxxxxxxxxxxxxxxx |
In-reply-to: |
<4ACB0833.2050203@xxxxxxxxxx> |
List-help: |
<mailto:xen-devel-request@lists.xensource.com?subject=help> |
List-id: |
Xen developer discussion <xen-devel.lists.xensource.com> |
List-post: |
<mailto:xen-devel@lists.xensource.com> |
List-subscribe: |
<http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe> |
List-unsubscribe: |
<http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe> |
Sender: |
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx |
> From: Jeremy Fitzhardinge [mailto:jeremy.fitzhardinge@xxxxxxxxxx]
> With this in place, I can do a gettimeofday in about 100ns on a 2.4GHz
> Q6600. I'm sure this could be tuned a bit more, but it is
> already much better than a syscall.
To evaluate the goodness of this, we really need a full
set of measurements for:
a) cost of rdtsc (and rdtscp if different)
b) cost of vsyscall+pvclock
c) cost of rdtsc emulated
d) cost of a hypercall that returns "hypervisor system time"
On a E6850 (3Ghz but let's use cycles), I measured;
a == 72 cycles
c == 1080 cycles
d == 780 cycles
It may be partly apples and oranges, but it looks
like a good guess for b on my machine is
b == 240 cycles
Not bad, but is there any additional context switch
cost to support it?
> From: Avi Kivity [mailto:avi@xxxxxxxxxx]
> Instead of using vgetcpu() and rdtsc() independently, you can
> use rdtscp
> to read both atomically. This removes the need for the
> preempt notifier.
Xen does not currently expose rdtscp and so does not emulate
(or context switch) TSC_AUX. Context switching TSC_AUX
is certainly possible, but will likely be expensive.
If the primary reason for vsyscall+pvclock is to maximize
performance for gettimeofday/clock_gettime, this cost
would need to be added to the mix.
> preempt notifiers are per-thread, not global, and will upset
> the cycle
> counters. I'd drop them and use rdtscp instead (and give up if the
> processor doesn't support it).
Even if rdtscp is used, in the Intel processor lineup
only the very latest (Nehalem) supports rdtscp, so
"give up" doesn't seem like a very good option, at least
in the near future.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|