Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
MySQL-and-virtualization
1. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
MySQL and Virtualization
Percona Live MySQL Conference and Expo 2013
Raghavendra Prabhu
raghavendra.prabhu@percona.com
Percona
23rd April, 2013
Raghavendra Prabhu Percona
MySQL Virtualization
2. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Outline
Introduction
Virtualization
MySQL
Symbiosis
Instrumentation/Debugging
Instrumentation II
Application
Conclusion
Raghavendra Prabhu Percona
MySQL Virtualization
3. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Overview
Why
Why not
Performance v/s Efficiency
Overcommit!
High Availability
Testing/Instrumentation
Raghavendra Prabhu Percona
MySQL Virtualization
4. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Popular solutions
Xen, KVM, VirtualBox
Why KVM
Massive reuse of kernel and userspace
Compatibility in case of para-virt
Most applies to Xen as well
Important difference
Raghavendra Prabhu Percona
MySQL Virtualization
5. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Native against Emulation
Emulation: TCG
Valgrind
KVM
Kernel module
VT-x (Intel), AMD-V
Guest - Host context
Exit - Enter latency
Lazy approach
Para-virtualization
Raghavendra Prabhu Percona
MySQL Virtualization
6. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Development
QEMU
Most active
In-kernel
Native client
More hypervisors
KVM API - ioctl /dev/kvm
Raghavendra Prabhu Percona
MySQL Virtualization
7. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Considerations
Performance
Scaling - Horizontal or Vertical
Eggs and the Basket
Moore’s law
Cost
Saturation
Raghavendra Prabhu Percona
MySQL Virtualization
8. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Memory
KSM
How it works and is used
How it can be used: MADV_MERGEABLE
Memory Ballooning: Virtio
Overcommit
Memory statistics: QOM
Caching
Affects I/O
Write{back,through}, none, directsync and unsafe
Snapshot mode & commit: cache=unsafe
Raghavendra Prabhu Percona
MySQL Virtualization
9. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Memory II
KSM for MySQL
Multiple buffer pools
Shared storage - VirtFS
With NUMA
Pinning + KSM = !
ksmtuned and numad
Ballooning: In host’s shoes
Where
Migration & Upgrade - Hot/Cold
With QGA
Feedback from MySQL: Para-virtualized process!
Cache
InnoDB + cache=none = true O_DIRECT: for NFS
=writethrough: app fails to grok fsync
=writeback: speed and benefits of none
Raghavendra Prabhu Percona
MySQL Virtualization
10. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
CPU
Processor pinning
Cgroups: Better
Applies to others
Dynamic
Hotplug
Overcommitting - smp
Context switches
Raghavendra Prabhu Percona
MySQL Virtualization
11. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Network
Types
VDE
TAP and Bridge
Openvswitch
Dump
Multicast with UDP
Performance
virtio-net
Para-virtualized construct
Multi-queue
vhost-net
Zero-copy transmit: DMA
No Qemu: kernel and KVM
Not just network
Raghavendra Prabhu Percona
MySQL Virtualization
12. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Security
Masquerading
Isolation
Namespaces
Random Numbers
Why?
Hardware / Virtio RNG
Resource exhaustion: DDoS
OOM: Cgroups
Seccomp sandbox: Safety is only an illusion!
Guest to host vulnerabilities
Encryption
Raghavendra Prabhu Percona
MySQL Virtualization
13. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
I/O and Storage
The weakest link
Virtio
virtio-blk-pci data plane
Separate I/O thread
PCI Passthrough
PCI devices in general
IOMMU (AMD) & VT-d (Intel)
SR-IOV: multiple devices without having
VFIO: in userspace
No longer exclusive
More secure: very important
Interrupts closer to guest
Raghavendra Prabhu Percona
MySQL Virtualization
14. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
I/O and Storage II
VirtFS
Filesystem passthrough
9p protocol
Possibilities
Fragmentation
How: Hole punching
Fallocate, pre-allocation Qcow
Thin provisioning
Qcow lazy provisioning
Device mapper target
Throttling: Errant guests!
block_set_io_throttle
Raghavendra Prabhu Percona
MySQL Virtualization
15. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
I/O and Storage III
Backends
Raw
Qcow
Block device attachment
Performance close to bare metal
GlusterFS
Sheepdog
Distributed Storage
iSCSI
NBD
Networked storage
Shared disk image
Raghavendra Prabhu Percona
MySQL Virtualization
16. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
I/O and Storage IV
Scheduler
Deadline
CFQ - quantum and slice
Discard
Pass discard requests to host filesystem
Fully async
AIO
pthread v/s native
Swap
Swappiness
Less preferred to Ballooning and KSM
Poor with EPT
Raghavendra Prabhu Percona
MySQL Virtualization
17. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Others
Transparent Huge Pages
Issues?
Possible fixes - MADV_NOHUGEPAGE
How can it help
ivshmem
Fastest message passing
Raghavendra Prabhu Percona
MySQL Virtualization
18. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Reliability
What everyone wants: Uninterrupted Sleep - ‘D’ state
What they usually get: Nagios alerts
Its like Insurance
What can be done
Backups
Backup the original image
Blockdev snapshot
guestfs-fsfreeze-{freeze,thaw} and FTWRL
Raghavendra Prabhu Percona
MySQL Virtualization
19. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Reliability II
High Availability
System uptime v/s Application uptime
Difference
Migration
Live migration: Requirement
Online block streaming/commit
Drive Mirroring
Live block copy
Snapshots
VM Snapshots: complete state
Qcow2 snapshots
Raghavendra Prabhu Percona
MySQL Virtualization
20. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Upgrades
Downtime
Ballooning the buffer pool
Migration
Preserves connections
OpenvSwitch
Raghavendra Prabhu Percona
MySQL Virtualization
21. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Testing
Cluster
PXC
Topologies
Army of nodes
Forest: Cluster of clusters
Data centers in microcosm
Memory
NUMA
Page cache and Memory Pressure
Dump guest memory: core
Examine online
Raghavendra Prabhu Percona
MySQL Virtualization
22. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Fault injection
NMI and MCE
Pulling the power cord!
Filesystem
Interesting cases
Ext4
XFS
PCI AER
Raghavendra Prabhu Percona
MySQL Virtualization
23. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Others
Jenkins and Vagrant
Watchdog
“Houston, we have a problem”
With MySQL: Turtles all the way
systemd
ACPI tables
Raghavendra Prabhu Percona
MySQL Virtualization
24. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
perf-kvm
perf toolsuite
Strace?
Caveats
Raghavendra Prabhu Percona
MySQL Virtualization
25. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
GDB monitor
Remote Target and Single Stepping
Kernel development
bzImage and initrd
Raghavendra Prabhu Percona
MySQL Virtualization
26. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Qemu Monitor (QMP/HMP)
Ballooning
Throttle
PCI Hot-add
Examining memory
JSON API
Endless possibilities with scripting
Python scripts in repo
Info commands
Raghavendra Prabhu Percona
MySQL Virtualization
27. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Tracing
Ftrace
Latency
Virtio I/O
Dtrace
With systemtap
LTTng
Simple
Stderr
Dprintf
Raghavendra Prabhu Percona
MySQL Virtualization
28. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Development
QCOW
Backing file hierarchy
block stream
Advantages
Copy on read
Lazy Refcounts
Encryption and Compression
Raghavendra Prabhu Percona
MySQL Virtualization
29. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Development II
Caveats
Raw v/s Qcow: Performance
Rendering Qcow unusable
Filesystem passthrough
Share datadir
Common code-tree / development directories
Pass the entire root R/O!
Lightweight Snapshot
Useful to have newer FHS with /usr
Raghavendra Prabhu Percona
MySQL Virtualization
30. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Wrappers
Scripting
libvirt
virsh / virt-manager
Openstack
Proxmox
Candy
Spice
VNC
oVirt
VDSM
Raghavendra Prabhu Percona
MySQL Virtualization
31. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Thoughts?
Questions
Usage and Experience
Raghavendra Prabhu Percona
MySQL Virtualization
32. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Appendix
Best practices: http://goo.gl/LY3tf
Virtio Introduction: http://goo.gl/B9bCA
KVM Kernel API: http://goo.gl/5A4Ma
linux-kvm.org: http://goo.gl/yWPiU
Internals blog: http://goo.gl/z07cy
Qemu wiki: http://goo.gl/IGoKa
RedHat Virtualization docs: http://goo.gl/rXRKc
Docs from Qemu git tree: http://goo.gl/qD7nj
KSM internals: http://goo.gl/ypyhk
Raghavendra Prabhu Percona
MySQL Virtualization
33. Introduction Virtualization MySQL Symbiosis Instrumentation/Debugging Instrumentation II Application Conclusio
Me
Raghavendra Prabhu
http://wnohang.net/about
Software Engineer at Percona and Product Lead of PXC
https://launchpad.net/percona-xtradb-cluster
Slides downloadable at http://goo.gl/jsult
Raghavendra Prabhu Percona
MySQL Virtualization