> From: "Xiao Guangrong" <[email protected]>
> To: "Ulrich Obergfell" <[email protected]>, [email protected]
> Cc: [email protected]
> Sent: Monday, May 5, 2014 9:10:19 AM
> Subject: Re: [PATCH 0/1] KVM: x86: improve the usability of the 'kvm_pio'
> tracepoint
>
> On 05/02/2014 11:57 PM, Ulrich Obergfell wrote:
>> The current implementation of the 'kvm_pio' tracepoint in
>> emulator_pio_in_out()
>> only tells us that 'something' has been read from or written to an I/O port.
>> To
>> improve the usability of the tracepoint, I propose to include the
>> value/content
>> that has been read or written in the trace output. The proposed patch aims at
>> the more common case where a single 8-bit or 16-bit or 32-bit value has been
>> read or written -- it does not fully cover the case where 'count' is greater
>> than one.
>>
>> This is an example of what the patch can do (trace of PCI config space
>> access).
>>
>> - on the host
>>
>> # trace-cmd record -e kvm:kvm_pio -f "(port >= 0xcf8) && (port <= 0xcff)"
>> /sys/kernel/debug/tracing/events/kvm/kvm_pio/filter
>> Hit Ctrl^C to stop recording
>>
>> - in a Linux guest
>>
>> # dd if=/sys/bus/pci/devices/0000:00:06.0/config bs=2 count=4 | hexdump
>> 4+0 records in
>> 4+0 records out
>> 8 bytes (8 B) copied, 0.000114056 s, 70.1 kB/s
>> 0000000 1af4 1001 0507 0010
>> 0000008
>>
>> - on the host
>>
>> # trace-cmd report
>> ...
>> qemu-kvm-23216 [001] 15211.994089: kvm_pio: pio_write
>> at 0xcf8 size 4 count 1 val 0x80003000
>> qemu-kvm-23216 [001] 15211.994108: kvm_pio: pio_read
>> at 0xcfc size 2 count 1 val 0x1af4
>> qemu-kvm-23216 [001] 15211.994129: kvm_pio: pio_write
>> at 0xcf8 size 4 count 1 val 0x80003000
>> qemu-kvm-23216 [001] 15211.994136: kvm_pio: pio_read
>> at 0xcfe size 2 count 1 val 0x1001
>> qemu-kvm-23216 [001] 15211.994143: kvm_pio: pio_write
>> at 0xcf8 size 4 count 1 val 0x80003004
>> qemu-kvm-23216 [001] 15211.994150: kvm_pio: pio_read
>> at 0xcfc size 2 count 1 val 0x507
>> qemu-kvm-23216 [001] 15211.994155: kvm_pio: pio_write
>> at 0xcf8 size 4 count 1 val 0x80003004
>> qemu-kvm-23216 [001] 15211.994161: kvm_pio: pio_read
>> at 0xcfe size 2 count 1 val 0x10
>>
>
> Nice.
>
> Could please check "perf kvm stat" to see if "--event=ioport"
> can work after your patch?
>
> Reviewed-by: Xiao Guangrong <[email protected]>
I've run a quick test with a local kernel - built from 3.15.0-rc1 source,
including the proposed patch - in combination with the 'perf' package that
is installed on my test machine. I didn't build a new 'perf' binary from
3.15.0-rc1 source.
The following output of the 'perf kvm stat live --event=ioport -d 10' command
looks reasonable.
17:10:29.036811
Analyze events for all VMs, all VCPUs:
IO Port Access Samples Samples% Time% Min Time Max Time
Avg time
0x177:PIN 35 20.00% 15.40% 1us 3us
1.68us ( +- 8.63% )
0x376:PIN 30 17.14% 16.37% 1us 6us
2.08us ( +- 17.15% )
0x170:POUT 15 8.57% 18.99% 2us 9us
4.83us ( +- 14.34% )
0xc0ea:POUT 10 5.71% 6.57% 2us 2us
2.51us ( +- 5.06% )
0xc0ea:PIN 10 5.71% 6.21% 1us 6us
2.37us ( +- 23.18% )
0x176:POUT 10 5.71% 6.69% 1us 3us
2.55us ( +- 7.59% )
0x170:PIN 5 2.86% 3.36% 2us 2us
2.56us ( +- 1.17% )
0x171:PIN 5 2.86% 1.47% 1us 1us
1.12us ( +- 0.37% )
0x171:POUT 5 2.86% 3.26% 2us 2us
2.49us ( +- 2.25% )
0x172:PIN 5 2.86% 1.45% 1us 1us
1.11us ( +- 0.24% )
0x172:POUT 5 2.86% 2.67% 1us 2us
2.04us ( +- 3.00% )
0x173:PIN 5 2.86% 1.46% 1us 1us
1.11us ( +- 0.29% )
0x173:POUT 5 2.86% 2.60% 1us 2us
1.99us ( +- 2.96% )
0x174:PIN 5 2.86% 1.45% 1us 1us
1.11us ( +- 0.16% )
0x174:POUT 5 2.86% 2.60% 1us 2us
1.99us ( +- 3.13% )
0x175:PIN 5 2.86% 1.46% 1us 1us
1.12us ( +- 0.15% )
0x175:POUT 5 2.86% 2.60% 1us 2us
1.98us ( +- 3.04% )
0x176:PIN 5 2.86% 1.45% 1us 1us
1.11us ( +- 0.23% )
0x177:POUT 5 2.86% 3.94% 2us 3us
3.01us ( +- 2.06% )
Total Samples:175, Total events handled time:381.58us.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html