On 09/13/2011 12:10 PM, William Cohen wrote:

> Should the qemu.kvm.cpu_in and qemu.kvm.cpu_out match up?  There are a lot 
> more qemu.kvm.cpu_out than qemu.kvm.cpu_in count.

I found that cpu_in and cpu_out refer to input and output instructions.  I 
wrote a little script tally up the input and output operations on each port to 
run on a qemu on fc15 machine.

It generates output like the following:


cpu_in
  port    count
0x01f7     3000
0x03d5      120
0xc000     2000
0xc002     3000

cpu_out
  port    count
0x0080      480
0x01f1     2000
0x01f2     2000
0x01f3     2000
0x01f4     2000
0x01f5     2000
0x01f6     2000
0x01f7     1000
0x03d4      480
0x03d5      120
0x03f6     1000
0xc000     3000
0xc002     2000
0xc004     1000
0xc090        4

Looks like lots of touching the ide device ports (0x01f0-0x01ff) and some vga 
controller (0x03d0-0x3df). This is kind of what would be expected when the 
machine is doing a fsck and selinux relabel on the guest virtual machines. Look 
like some pci device access (http://www.tech-pro.net/intro_pci.html) also.

-Will
global cpu_in, cpu_out
probe qemu.system.x86_64.cpu_in { cpu_in[addr]++ }
probe qemu.system.x86_64.cpu_out {cpu_out[addr]++ }
probe end {
  # write out the data
  printf("\ncpu_in\n%6s %8s\n","port", "count")
  foreach (addr+ in cpu_in)
    printf("0x%04x %8d\n", addr, cpu_in[addr])
  printf("\ncpu_out\n%6s %8s\n","port", "count")
  foreach (addr+ in cpu_out)
    printf("0x%04x %8d\n", addr, cpu_out[addr])
}

Reply via email to