From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ulrich Obergfell Subject: Re: [PATCH 0/1] KVM: x86: improve the usability of the 'kvm_pio' tracepoint Date: Mon, 5 May 2014 13:11:51 -0400 (EDT) Message-ID: <32021739.1040315.1399309911606.JavaMail.zimbra@redhat.com> References: <1399046267-4677-1-git-send-email-uobergfe@redhat.com> <5367395B.6070100@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, pbonzini@redhat.com To: Xiao Guangrong Return-path: Received: from mx5-phx2.redhat.com ([209.132.183.37]:50006 "EHLO mx5-phx2.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754210AbaEERLx (ORCPT ); Mon, 5 May 2014 13:11:53 -0400 In-Reply-To: <5367395B.6070100@linux.vnet.ibm.com> Sender: kvm-owner@vger.kernel.org List-ID: > From: "Xiao Guangrong" > To: "Ulrich Obergfell" , kvm@vger.kernel.org > Cc: pbonzini@redhat.com > 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 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.