41
1 KVM PERFORMANCE IMPROVEMENTS AND OPTIMIZATIONS Mark Wagner Principal SW Engineer, Red Hat August 14, 2011

KVM PERFORMANCE IMPROVEMENTS AND … · KVM PERFORMANCE IMPROVEMENTS AND OPTIMIZATIONS Mark Wagner Principal SW Engineer, Red Hat August 14, 2011 2 Overview • Discuss a range of

  • Upload
    buinhan

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

1

KVM PERFORMANCE

IMPROVEMENTS AND

OPTIMIZATIONS

Mark Wagner Principal SW Engineer, Red HatAugust 14, 2011

2

Overview

• Discuss a range of topics about KVM performance– How to improve out of the box experience– But crammed into 30 minutes

• Use libvirt where possible– Note that not all features in all releases

3

Before we dive in...

RHEL6-default0

50

100

150

200

250

300

350

400

450

Guest NFS Write Performance - are we sure ?Is this really a 10Gbit line ?

Thr

oug

hput

( M

Byt

es /

sec

ond

)

By default the rtl8139

device is chosen

Arrow showsimprovement

4

Agenda

• Low hanging fruit• Memory• Networking • Block I/O basics• NUMA and affinity settings• CPU Settings• Wrap up

5

Recent Performance Improvements

• Performance enhancements in every component

Component Feature

CPU/Kernel NUMA – Ticketed spinlocks; Completely fair scheduler; Extensive use of Read Copy Update (RCU)Scales up to 64 vcpus per guest

Memory Large memory optimizations: Transparent Huge Pages is ideal for hardware based virtualization

Networking Vhost-net – a kernel based virtio w/ better throughput and latency. SRIOV for ~native performance

Block AIO, MSI, scatter gather.

6

Remember this ?

RHEL6-default0

50

100

150

200

250

300

350

400

450

Guest NFS Write Performance

Thr

oug

hput

( M

Byt

es /

sec

ond

)

Impact of not specifying OS at guest creation

7

Be Specific !

• virt-manager will:

– Make sure the guest will function

– Optimize as it can

• The more info you provide the more tailoring will happen

Specify theOS details

8

Specify OS + flavor

• Specifying Linux will get you:– The virtio driver

– If the kernel is recent enough the vhost_net drivers

9

I Like This Much Better

Default vhost virtio0

50

100

150

200

250

300

350

400

450

Guest NFS Write PerformanceImpact of specifying OS Type at Creation

Thr

oug

hput

( M

Byt

es /

sec

ond

)

12.5 x

10

Memory Tuning – Huge Pages

• 2M pages vs 4K standard Linux page

– Virtual to physical page map is 512 times smaller

– TLB can map more physical page resulting fewer misses

• Traditional Huge Pages always pinned

• We now have Transparent Huge Pages

• Most databases support Huge Pages

• Benefits not only Host but guests

– Try them in a guest too !

11

Transparent Huge Pages

No-THP THPK

50K

100K

150K

200K

250K

300K

350K

400K

450K

500K

SPECjbb workload 24-cpu, 24 vcpu Westmere EP, 24GB

guestbare metal

Tra

nsa

ctio

ns P

er M

inut

e

30%25%

12

Network Tuning Tips

• Separate networks for different functions

– Use arp_filter to prevent ARP Flux

• echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter

• Use /etc/sysctl.conf for permanent

• Packet size - MTU

– Need to make sure it is set across all components

• Don't need HW to bridge intra-box communications

– VM traffic never hits the HW on same box

– Can really kick up MTU as needed

13

KVM Network Architecture - VirtIO

• Virtual Machine sees paravirtualized network device – VirtIO– VirtIO drivers included in Linux Kernel– VirtIO drivers available for Windows

• Network stack implemented in userspace

14

KVM Network Architecture Virtio

Context switch host kernel <-> userspace

15

1 21 64195

7652048

614724573

655360

50

100

150

200

250

300

350

400

Network Latency virtio

Guest Receive (Lower is better)

VirtioHost

Message Size (Bytes)

La

ten

cy (

use

cs)

Latency comparison

4X gap in latency

16

KVM Network Architecture – vhost_net

• Moves QEMU network stack from userspace to kernel

• Improved performance

• Lower Latency

• Reduced context switching

• One less copy

17

1 19 51131

3871027

30758195

2457965539

0

50

100

150

200

250

300

350

400

Network Latency - vhost_net

Guest Receive (Lower is better)

VirtioVhost_netHost

Message Size (Bytes)

La

ten

cy (

use

cs)

Latency comparison

Latency much closerto bare metal

18

Host CPU Consumption virtio vs vhost_net

32-vhost

32-vio

128-v

host

128-v

io

512-v

host

512-v

io

2048-v

host

2048-v

io

8192-v

host

8192-v

io

32768-v

host

32768-v

io0

5

10

15

20

25

30

35

40

45

Host CPU Consumption, virt io vs Vhost8 Guests TCP Receive

%usr%soft %guest %sys

Message Size (Bytes)

% T

ota

l Ho

st C

PU

(L

ow

er is

Bet

ter)

Major difference is usr time

Two columns is a data set

19

vhost_net Efficiency

32 64128

256512

10242048

40928192

1638432768

655070

50

100

150

200

250

300

350

400

8 Guest Scale Out RX Vhost vs Virtio - % Host CPUMbit per % CPU netperf TCP_STREAM

VhostVirtio

Message Size (Bytes)

Mbi

t /

% C

PU

(bi

gger

is b

ette

r)

20

KVM Architecture – Device Assignment vs SR/IOV

Device AssignmentSR-IOV

21

KVM Network Architecture – PCI Device Assignment

• Physical NIC is passed directly to guest– Device is not available to anything else on the host

• Guest sees real physical device

– Needs physical device driver

• Requires hardware support

Intel VT-D or AMD IOMMU

• Lose hardware independence

• 1:1 mapping of NIC to Guest

• BTW - This also works on some I/O controllers

22

KVM Network Architecture – SR-IOV

• Single Root I/O Virtualization

New class of PCI devices that present multiple virtual devices that appear as regular PCI devices

• Guest sees real physical device

– Needs physical (virtual) device driver

• Requires hardware support

• Actual device can still be shared

• Low overhead, high throughput

• No live migration – well its difficult

• Lose hardware independence

23

Latency comparison

1 19 51131

3871027

30758195

2457965539

0

50

100

150

200

250

300

350

400

Network Latency by guest interface method

Guest Receive (Lower is better)

VirtioVhost_netSR-IOVHost

Message Size (Bytes)

La

ten

cy (

use

cs)

SR-IOV latency closeto bare metal

SR-IOV latency close to bare metal

24

KVM w/ SR-IOV Intel Niantic 10Gb Postgres DB T

hro

ug

hp

ut

in O

rder

/min

(O

PM

)

69,984

86,46992,680

010,00020,00030,00040,00050,00060,00070,00080,00090,000100,000

1 Red Hat KVM bridged guest

1 Red Hat KVMSR-IOV guest

1 database instance (bare metal)

Total OPM

DVD Store Version 2 results

93% Bare Metal

76% Bare Metal

25

I/O Tuning - Hardware

• Know your Storage– SAS or SATA?– Fibre Channel, Ethernet or SSD?– Bandwidth limits

• Multiple HBAs– Device-mapper-multipath– Provides multipathing capabilities and LUN persistence

• How to test– Low level I/O tools – dd, iozone, dt, etc

26

I/O Tuning – Understanding I/O Elevators

● Deadline

– Two queues per device, one for read and one for writes

– IOs dispatched based on time spent in queue• CFQ

– Per process queue

– Each process queue gets fixed time slice (based on process priority)• Noop

– FIFO– Simple I/O Merging– Lowest CPU Cost

• Can set at Boot-time– Grub command line – elevator=deadline/cfq/noop

• Or Dynamically – per device– echo “deadline” > /sys/class/block/sda/queue/scheduler

27

Virtualization Tuning – I/O elevators - OLTP

1Guest 2 Guests 4 GuestsK

50K

100K

150K

200K

250K

300K

Performance Impact of I/O Elevators on OLTP WorkloadHost running Deadline Scheduler

NoopCFQDeadline

Tra

nsa

ctio

ns p

er M

inut

e

28

Virtualization Tuning - Caching

• Cache=none– I/O from the guest in not cached

• Cache=writethrough– I/O from the guest is cached and written through on the host– Potential scaling problems with this option with multiple guests

(host cpu used to maintain cache)

• Cache=writeback - Not supported

29

Effect of I/O Cache settings on Guest performance

1Guest 4GuestsK

100K

200K

300K

400K

500K

600K

700K

800K

900K

OLTP like workload

FusionIO storage

Cache=WTCache=none

Tra

nsa

ctio

n P

er M

inut

e

30

I/O Tuning - Filesystems

B

• Configure read ahead– Database ( parameters to configure read ahead)– Block devices ( getra , setra )

• Asynchronous I/O– Eliminate Synchronous I/O stall– Critical for I/O intensive applications

31

AIO – Native vs Threaded (default)

10U 20UK

100K

200K

300K

400K

500K

600K

700K

800K

900K

1000K

Impact of AIO selection on OLTP Workload

"cache=none" setting used - Threaded is default

AIO ThreadedAIO Native

Number of Users (x 100)

Tra

nsa

ctio

ns P

er M

inut

e

Configurable per device (only by xml configuration file)Libvirt xml file - driver name='qemu' type='raw' cache='none' io='native'

32

Remember Network Device Assignment ?

• Device Assignment– It works for Block too !– Device Specific– Similar Benefits– And drawbacks...

3334

KVM VirtIO KVM/PCI-PassThrough Bare-Metalk

2k

4k

6k

8k

10k

12k

14k

16k

18k

20k

SAS Mixed Analytics Workload - Metal/KVMIntel Westmere EP 12-core, 24 GB Mem, LSI 16 SAS

SAS systemSAS Total

Tim

e to

co

mpl

ete

(sec

s)

6% longer

25% longer

• Block Device Passthrough - SAS Workload

34

NUMA (Non Uniform Memory Access)

• Multi Socket – Multi core architecture

– NUMA is needed for scaling

• Keep memory latencies low

– Linux completely NUMA aware

– Additional performance gains by enforcing NUMA placement

– Still some “out of the box” work is needed

• How to enforce NUMA placement– numactl – CPU and memory pinning

• One way to test if you get a gain is to mistune it.• Libvirt now supports some NUMA placement

35

Memory Tuning - NUMA# numactl --hardwareavailable: 8 nodes (0-7)node 0 cpus: 0 1 2 3 4 5node 0 size: 8189 MBnode 0 free: 7220 MBnode 1 cpus: 6 7 8 9 10 11node 1 size: 8192 MB...node 7 cpus: 42 43 44 45 46 47node 7 size: 8192 MBnode 7 free: 7816 MBnode distances:node 0 1 2 3 4 5 6 7 0: 10 16 16 22 16 22 16 22 1: 16 10 22 16 16 22 22 16 2: 16 22 10 16 16 16 16 16 3: 22 16 16 10 16 16 22 22 4: 16 16 16 16 10 16 16 22 5: 22 22 16 16 16 10 22 16 6: 16 22 16 22 16 22 10 16 7: 22 16 16 22 22 16 16 10

Internode Memory distance From SLIT table

Note variation in internode distances

36

Virtualization Tuning – Using NUMA

4Guest-24vcpu-56G 4Guest-24vcpu-56G-NUMAK

50K

100K

150K

200K

250K

300K

350K

400K

Impact of NUMA in multiguest OLTP

location,location,location

Guest 4Guest 3Guest 2Guest 1

Tra

nsa

ctio

ns P

er S

eco

nd

37

Specifying Processor Details

• Mixed results with CPU type and topology

• The Red Hat team is still exploring some topology performance quirks– Both model and topology

• Experiment and see what works best in your case

38

CPU Pinning - Affinity

• Virt-manager allows CPU selection based on NUMA topology

– True NUMA support in libvirt

• Virsh pinning allows finer grain control

– 1:1 pinning

• Good gains with pinning

39

Performance monitoring tools

• Monitoring tools– top, vmstat, ps, iostat, netstat, sar, perf

• Kernel tools– /proc, sysctl, AltSysrq

• Networking– ethtool, ifconfig

• Profiling– oprofile, strace, ltrace, systemtap, perf

40

Wrap up

• KVM can be tuned effectively – Understand what is going on under the covers– Turn off stuff you don't need– Be specific when you create your guest– Look at using NUMA or affinity– Choose appropriate elevators (Deadline vs CFQ)– Choose your cache wisely

41

For More Information

• KVM Wiki– http://www.linux-kvm.org/page/Main_Page

• irc, email lists, etc– http://www.linux-kvm.org/page/Lists%2C_IRC

• libvirt Wiki– http://libvirt.org/

• New, revamped edition of the “Virtualization Guide”– http://docs.redhat.com/docs/en-

US/Red_Hat_Enterprise_Linux/index.html – Should be available soon !