Un flaco de Dropbox contando que tenian 1000 MySQLs, que se
creaban 1.200.000.000 de archivos por día y había mucha data por
manejar y que en lugar de ponerse a tunear MySQL, se pusieron a
ver como se comportaba el SO, dieron un par de tuneos simples y
efectivos para GNU/Linux pero mostraron su laboratorio perfilando
MySQL.
Primero vieron que TCPWrapper hace un montón de syscalls
revisando /etc/hosts.deny y /etc/hosts.accept para comprorar si el
host que se esta conectado tiene permiso para hacerlo, esto es un
legacy y básicamente eliminaron eso del source de la lib y
pusieron reglas de iptables, como tenían que compilar MySQL.
Empezaron a hacer tests con diferentes compiladores, cgolang y 2
versiones de gcc, resulto que la versión mas nueva de gcc era
menos performante que la vieja, pero que no podían hacer un
downgrade, asi que se pusieron a jugar con todos los parámetros de
gcc para lograr una excelente performance, básicamente uso de
instrucciones modernas para el hardware con el que contaban y unas
optimizaciones locas, entre otras cosas reemplazaron el código de
fastmutex del source de MySQL por algo mas performante y fast
posta.
Y como todos estos tests son fabulosos con unit tests vieron como
simular una carga real, para esto hablo uno de Percona mostrando
una tool pt-query-playback, que básicamente lee un slow-query y lo
ejecuta y con eso perfilaron y lo usaron de base para recompilar
con gcc y lograr que sea casi el doble de rápido!