[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <50037A4B.4050900@gmail.com>
Date: Sun, 15 Jul 2012 20:19:55 -0600
From: David Ahern <dsahern@...il.com>
To: Gleb Natapov <gleb@...hat.com>
CC: Peter Zijlstra <peterz@...radead.org>, Avi Kivity <avi@...hat.com>,
LKML <linux-kernel@...r.kernel.org>
Subject: Re: perf with precise attribute kills all KVM based VMs
On 7/12/12 10:06 AM, Gleb Natapov wrote:
>> I started with cycles:pp; should not really matter - they all need
>> to work without blowing up VMs (cycles:p, cycles:pH, cycles:pG,
>> cycles:pp, cycles:ppH, cycles:ppG).
> cycles:ppG and cycles:pG should be illegal. Peter's patch takes care of
> this. Others should set exclude guest and have to work without blowing
> up VMs.
I was only testing your patch; I'll add Peter's going forward.
---8<---
>> perf kvm --guestmount=/tmp/guest-mount record -fo /tmp/perf.data -a
>> -v -e cycles:pH -- sleep 60
> Do not run perf kvm. It does not set exclude_guest and :p and :pp is not
> compatible with guest profiling and should be disallowed. Again Peter's
> patch takes care of this.
Well, perf-kvm needs to work too - and yes you can set exclude_guest
with it (doesn't make sense to use perf-kvm with exclude_guest, but then
VMs should not die because of it). If someone adds -e <hardware
event>:p{p} it needs to be handled cleanly. The G and H event modifiers
can be used explicitly to exclude host or guest and that case too needs
to be handled properly from whatever the context is.
Peter's patch handles kernel side checks requiring exclude_guest if the
pebs is to be used. A user running perf-kvm, perf-record and perf-top
deserves something better than a confusing 'not supported error' which
includes a message suggesting perf events is not enabled. I have some
local patches for record and top to cover this.
>
> Run perf top -e cycles:pH or similar.
>
>>
>> Note the :pH this time.
> I am not sure what perf kvm does with :pH modifier, but H modifier does
> not make sense with perf kvm and should be reported as an error by perf tool.
perf-kvm passes everything from record on to the builtin record command.
So, 'perf kvm record -e cycles:pH' effectively becomes 'perf record -e
cycles:pH' with 2 global flags modified (perf_guest set and perf_host
unset). There is nothing invalid about the perf-kvm command.
---8<---
>> My server has 16 cpus and the VM has only 2 vcpus; with the -a I
>> would expect some host sampling. Note: in the above case :pp resets
>> the exclude-host modifier set by the perf-kvm part, so hosts samples
>> are not excluded. See parse_events_modifier().
> Isn't this a bug? Why anything at all resets exclude-host set by
> perf-kvm?
Arguably yes and arguably no. As with any linux command later arguments
can unset/reset earlier ones. In this case -e <event>:<modifier> comes
after the perf-kvm --guest --host settings. I can whip up a patch for
perf {record,top} to spit out a debug message if perf_{guest,host} are
not consistent with excl_{guest,host} if that's wanted.
Don't forget -- perf-kvm has the --host flag to enable host side
monitoring and --no-guest can be used to disable guest side monitoring.
David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists