40
MySQL cloud performance Mark Callaghan

My Sql Performance In A Cloud

Embed Size (px)

DESCRIPTION

Mark Callaghan's Talk on MySQL User Conference 2009.

Citation preview

Page 1: My Sql Performance In A Cloud

MySQL cloud performance

Mark Callaghan

Page 2: My Sql Performance In A Cloud

Special thanks

Eric Hammond (http://www.anvilon.com) provided documentation that made all of my work much easier.

Page 3: My Sql Performance In A Cloud

What is this thing called a cloud?

Deployment trendsTechnologyPublic versus private

Page 4: My Sql Performance In A Cloud

Deploying MySQL in a cloud

New problems New benefitsDifferences from traditional deploymentPerformance can be good, but ...

Virtualization techniques matter May need InnoDB patches to tolerate IO latency

Page 5: My Sql Performance In A Cloud

Impact from requirements

Database in direct attached storage:backups and binlogs archived in the clouduse MySQL replication to maintain a failover targetless can go wrong

 Database in network attached storage

another MySQL server can takeover on failure

Page 6: My Sql Performance In A Cloud

Focus on InnoDB performance

Network attached storageDirect attached storageMulti-core serversVirtualization overheadPatches that improve performance

Page 7: My Sql Performance In A Cloud

Benchmarks

Start with simple benchmarks iibench

IO bound workloadgreat for finding bottlenecks in storage enginesstarted by Tokutek

sysbenchOLTP workload

wisconsinquery processing workload

Page 8: My Sql Performance In A Cloud

What is different?

Not much, MySQL runs great hereMulti-core scalability matters because 8-cores costs moreMay need ability to tolerate IO latency

Page 9: My Sql Performance In A Cloud

Make InnoDB faster

link with tcmallocuse XFS reduce mutex contention for multi-core serversIO performance

multiple background IO threadsincrease IO rate on busy servers

Page 10: My Sql Performance In A Cloud

Factors for IO latency

O_DIRECT versus buffered IOSATA writeback cacheFlash erase cyclesNetwork versus direct attached storageIO schedulerExcessive prefetching from the OSHardware RAID write cacheFile system limits on concurrent reads/writes per fileAbility of storage engine to issue concurrent IO requests

Page 11: My Sql Performance In A Cloud

Tuning for IO bound loads

innodb_read_io_threadsIn Percona and Google patchesHelps when there is a lot of prefetching for full table scans

 innodb_write_io_threads

In Percona and Google patchesHelps when writes have a lot of latencyWrites have a lot of latency when:

using O_DIRECT without SATA writeback cacheusing O_DIRECT without HW RAID write cacheusing network attached storage

Page 12: My Sql Performance In A Cloud

Tuning for IO bound loads (2)

innodb_io_capacityIn Google and Percona patchesHelps when there are many writes to issue

 faster IO

Increases rate at which background IO is doneIncrease size of IO request arrays Google and Percona patches have changes for this

 SHOW INNODB STATUS

Google and Percona added more outputGoogle patch includes average IO time for reads and writes

Page 13: My Sql Performance In A Cloud

Network attached storage tests

Server:2 CPU cores, 4G or 8G RAMSW RAID 0 striped over 4 network volumes1M RAID stripe sizeXFSMySQL 5.0.37 + v3 Google patch + tcmalloc Innodb with 1G buffer pool, O_DIRECT, innodb_flush_log_at_trx_commit=2

Page 14: My Sql Performance In A Cloud

Concurrent query performance with network attached storage:4 concurrent queries, IO bound

Page 15: My Sql Performance In A Cloud

iibench insert rate

Page 16: My Sql Performance In A Cloud

iibench QPS rate from 4 threads concurrent with inserts

Page 17: My Sql Performance In A Cloud

Direct attached storage tests

Server:2 CPU cores, 4G or 8G RAMSW RAID 0 striped over 2 disks 1M RAID stripe sizeXFSInnodb with 1G buffer pool, O_DIRECT, innodb_flush_log_at_trx_commit=2MySQL 5.0.37 + v3 Google patch + tcmalloc

Page 18: My Sql Performance In A Cloud

Concurrent query performance with direct attached storage:2 concurrent queries, IO bound

Page 19: My Sql Performance In A Cloud

iibench insert rate

Page 20: My Sql Performance In A Cloud

Direct attached storage tests (2)

Server:8 CPU cores, 4G or 8G RAMSW RAID 0 striped over 10 disks 1M RAID stripe sizeext-2Innodb with 1G buffer pool, O_DIRECT, innodb_flush_log_at_trx_commit=2MySQL 5.0.37 + v3 Google patch + tcmalloc

 

Page 21: My Sql Performance In A Cloud

Time to load 50M rows in iibench

Page 22: My Sql Performance In A Cloud

Row insert rate while loading 50M rows in iibench

Page 23: My Sql Performance In A Cloud

Multi-core servers

How do MySQL and InnoDB scale on SMP?Test configuration:

CPU bound workloadMySQL 5.0.37 with v3 Google patch4, 8 and 16 core serversmysqld linked with tcmalloc

Page 24: My Sql Performance In A Cloud

CPU speedup without virtualization:

modified sysbench readonly, CPU boundmeasure transactions per second

Page 25: My Sql Performance In A Cloud

CPU speedup without virtualization:

modified sysbench readwrite, CPU boundmeasure transactions per second

Page 26: My Sql Performance In A Cloud

Virtualization overhead

KVM testsUbuntu 8.044 core server, 1 disk, 4G RAM, supports AMD-VMySQL 5.0.77 with tcmallocMySQL 5.0.37 with v3 Google patch and tcmallocNote that KVM is much improved since this version

 Xen tests

Linux 2.68 CPU cores, enough RAM to cache databasehardware on server with Xen faster than non-Xen serverXen server has 4 disks in SW-RAID 0 using XFS, 16G RAM MySQL 5.0.37 with tcmalloc and v3 Google patch

Page 27: My Sql Performance In A Cloud

KVM random IO performance:sysbench fileio rndrd, 8G file

Page 28: My Sql Performance In A Cloud

Xen random IO performance:sysbench fileio rndrd, 16G file

Page 29: My Sql Performance In A Cloud

KVM sequential IO performance:sysbench fileio seqrd, 8G file

Page 30: My Sql Performance In A Cloud

Xen sequential IO performance:sysbench fileio seqrd, 16G file

Page 31: My Sql Performance In A Cloud

KVM sequential IO performance:hdparm  -t, hdparm -T

Page 32: My Sql Performance In A Cloud

KVM CPU performance:

modified wisconsin benchmark, CPU boundmeasure time to run all queries

Page 33: My Sql Performance In A Cloud

KVM CPU performance:

modified sysbench readonly, CPU boundmeasure transactions per second

Page 34: My Sql Performance In A Cloud

KVM CPU performance:

modified sysbench readwrite, CPU boundmeasure transactions per second

Page 35: My Sql Performance In A Cloud

Xen CPU performance:modified sysbench OLTP readonly, CPU bound

Page 36: My Sql Performance In A Cloud

Xen CPU performance:modified sysbench OLTP readwrite, CPU bound

Page 37: My Sql Performance In A Cloud

iibench insert rate comparing 2 local disks versus 4 network volumes

Page 38: My Sql Performance In A Cloud

iibench QPS rate comparing 2 local disks versus 4 network volumes

Page 39: My Sql Performance In A Cloud

Patches

All of these changes are available in some combination of the v3 Google patch, Percona builds and now ....

MySQL 5.4!

Page 40: My Sql Performance In A Cloud

Make appropriate choices

remote versus direct attached storageconfigurationstorage engineIO schedulerfile systempatches