Re: [PATCH V2 03/11] perf/x86: Add support for TSC in nanoseconds as a perf event clock
From: Adrian Hunter
Date: Fri Mar 04 2022 - 13:27:59 EST
On 04/03/2022 15:41, Peter Zijlstra wrote:
> On Mon, Feb 14, 2022 at 01:09:06PM +0200, Adrian Hunter wrote:
>> Currently, when Intel PT is used within a VM guest, it is not possible to
>> make use of TSC because perf clock is subject to paravirtualization.
>
> Yeah, so how much of that still makes sense, or ever did? AFAIK the
> whole pv_clock thing is utter crazy. Should we not fix that instead?
Presumably pv_clock must work with different host operating systems.
Similarly, KVM must work with different guest operating systems.
Perhaps I'm wrong, but I imagine re-engineering time virtualization
might be a pretty big deal, far exceeding the scope of these patches.
While it is not something that I really need, it is also not obvious
that the virtualization people would see any benefit.
My primary goal is to be able to make a trace covering the host and
(Linux) guests. Intel PT can do that. It can trace straight through
VM-Entries/Exits, politely noting them on the way past. Perf tools
already supports decoding that, but only for tracing the kernel because
it needs more information (so-called side-band events) to decode guest
user space. The simplest way to get that is to run perf inside the
guests to capture the side-band events, and then inject them into the
host perf.data file during post processing. That, however, requires a
clock that works for both host and guests. TSC is suitable because
KVM largely leaves it alone, except for VMX TSC Offset and Scaling,
but that has to be dealt with anyway because it also affects the
Intel PT trace.