Re: Perf tuning help?

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

 



On Tue, Apr 16, 2013 at 04:30:17PM -0400, Mason Turner wrote:
> We have an in-house app, written in c, that is not performing as well as we'd hoped it would when moving to a VM. We've tried all the common tuning recommendations (virtio, tap interface, cpu pining), without any change in performance. Even terminating all of the other VMs on the host doesn't make a difference. The VM doesn't appear to be CPU, memory or IO bound. We are trying to maximize UDP-based QPS against the in-house app.
> 
> I've been running strace against the app and "perf kvm" against the VM to try to identify any bottlenecks. I would say there are a lot of kvm_exits, but I'm not sure how to quantify what is acceptable and what is not.
> 
> We are trying to maximize UDP queries against the app. I've read a few times that the virtio network stack results in a lot of vm_exits. Unfortunately, we can't use the direct PCI access with our hardware.

Can you explain the traffic characteristics more?
 * UDP packet size
 * Pattern: 1 query packet, 1 response packet or something more exotic
 * Bare metal QPS (the goal)
 * Guest QPS (what you're seeing)
 * Benchmark configuration: are packets going across a physical network?

> Is there a good resource "inefficient" system calls? Things that result in higher than normal kvm_exits, or other performance killers?
> 
> Thanks for the help.
> 
> Our hypdervisor is running on
> CentOS 6.3: 2.6.32-279.22.1.el6.x86_64
> qemu-kvm 0.12.1.2  
> libvirt 0.9.10
> 
> Our app is running on
> Centos 6.1: 2.6.32-131.0.15.el6.x86_64

Slightly outdated guest and host.  It might be worth trying upstream
kernels and QEMU (build from source).

> <domain type='kvm'>
>   <name>thing1</name>
>   <uuid>abe76ce9-60a0-4727-a7ae-cf572e5c3f21</uuid>
>   <memory unit='KiB'>16384000</memory>
>   <currentMemory unit='KiB'>16384000</currentMemory>
>   <vcpu placement='static'>6</vcpu>
>   <cputune>
>     <vcpupin vcpu='0' cpuset='0'/>
>     <vcpupin vcpu='1' cpuset='2'/>
>     <vcpupin vcpu='2' cpuset='4'/>
>     <vcpupin vcpu='3' cpuset='6'/>
>     <vcpupin vcpu='4' cpuset='8'/>
>     <vcpupin vcpu='5' cpuset='10'/>
>   </cputune>
>   <numatune>
>     <memory mode='interleave' nodeset='0,2,4,6,8,10'/>
>   </numatune>
>   <os>
>     <type arch='x86_64' machine='rhel6.0.0'>hvm</type>
>     <boot dev='hd'/>
>   </os>
>   <features>
>     <acpi/>
>     <apic/>
>     <pae/>
>   </features>
>   <clock offset='utc'/>
>   <on_poweroff>destroy</on_poweroff>
>   <on_reboot>restart</on_reboot>
>   <on_crash>restart</on_crash>
>   <devices>
>     <emulator>/usr/libexec/qemu-kvm</emulator>
>     <disk type='file' device='disk'>
>       <driver name='qemu' type='raw' cache='none'/>
>       <source file='/var/lib/libvirt/images/thing1-disk0'/>
>       <target dev='vda' bus='virtio'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
>     </disk>
>     <controller type='usb' index='0'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
>     </controller>
>     <interface type='bridge'>
>       <mac address='00:5e:e3:e1:8a:aa'/>
>       <source bridge='virbr0'/>
>       <model type='virtio'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
>     </interface>

Please double-check that vhost-net is being used:
http://pic.dhe.ibm.com/infocenter/lnxinfo/v3r0m0/topic/liaat/liaatbpvhostnet.htm

>     <serial type='pty'>
>       <target port='0'/>
>     </serial>
>     <console type='pty'>
>       <target type='serial' port='0'/>
>     </console>
>     <input type='tablet' bus='usb'/>
>     <input type='mouse' bus='ps2'/>
>     <graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/>
>     <video>
>       <model type='cirrus' vram='9216' heads='1'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
>     </video>
>     <memballoon model='virtio'>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
>     </memballoon>
>   </devices>
> </domain>
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux