Re: [PATCH v8 4/5] arm64: arm_pmu: Add support for exclude_host/exclude_guest attributes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/01/2019 12:03, Christoffer Dall wrote:
> On Tue, Jan 08, 2019 at 11:50:59AM +0000, Marc Zyngier wrote:
>> On Tue, 08 Jan 2019 11:25:13 +0000,
>> Andrew Murray <andrew.murray@xxxxxxx> wrote:
>>
>> Hi Andrew,
>>
>>> My only doubt about this is as follows. If, on a KVM host you run this:
>>>
>>> perf stat -e cycles:H lkvm run ...
>>>
>>> then on the VHE host the cycles reported represents the entire non-guest cycles
>>> associated with running the guest.
>>>
>>> On a !VHE, the cycles reported exclude EL2 (with or without this patch) and
>>> thus you don't get a representation of all the non-guest cycles associated with
>>> the guest. However without this patch you could at least still run:
>>>
>>> perf stat -e cycles:H -e cycles:h lkvm run ...
>>>
>>> and then add the two cycle counts together to get something comparative with
>>> the VHE host.
>>>
>>> If the above patch represents the desired semantics, then perhaps we must count
>>> both EL1 and *EL2* for !exclude_kernel on !VHE. In fact I think we should do
>>> this anyway and remove a little complexity from armv8pmu_set_event_filter.
>>> Thoughts?
>>
>> I'm not sure we should hide the architectural differences between VHE
>> and !VHE. If you're trying to measure what is happening at in the
>> hypervisor, you can't reason about it while ignoring the dual nature
>> of !VHE.
>>
> 
> How do you define hypervisor here?  Is that just the code that runs at
> EL2 or also parts of KVM that runs at EL1?

I define it as "not a guest". Whatever is used to support a guest is the
hypervisor.

> It remains unclear to me why you'd want to measure a subset of KVM,
> which happens to run in EL2, in your host (and hypervisor-enabled)
> kernel, and you are even precluded from measuring a comparable portion
> of your implementation on other Arm systems (VHE).

Because I'm not trying to compare apples (VHE) and oranges (!VHE). My
use-case for perf is to measure the impact of a change on a given
implementation, and the more I can narrow the impact of that change, the
better (specially when !VHE precludes the use of other techniques such
as sampling).

> Admittedly, I'm not at export in using perf, but I find this EL1/EL2
> distinction out of place as it relates to exlude_kernel, exlude_user,
> and exlude_hv.  Will we have a fourth Arm-specific flag which takes the
> place of exclude_hv on PowerPC, which excludes an underlying hypervisor
> when running a guest, should we ever support counting that in the
> future?
In all honestly, exclude_hv doesn't make much sense to me on a VHE
system, unless you define an arbitrary cutting point where things are on
one side or the other. As for a fourth flag, I have no idea.

Thanks,

	M.
-- 
Jazz is not dead. It just smells funny...
_______________________________________________
kvmarm mailing list
kvmarm@xxxxxxxxxxxxxxxxxxxxx
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm



[Index of Archives]     [Linux KVM]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux