Estoy a punto de configurar un servidor de base de datos (MySQL) en el contenedor OpenVZ y me he preguntado cuántas CPU debería asignarle. Decidí compararlo. Comparé dos distribuciones de OS / MySQL y probé cómo funcionaban con 1, 2, 3 y 4 CPU.
La primera configuración de software fue:
- Lanzamiento de CentOS 6.5 (Final)
- mysql Ver 14.14 Distrib 5.1.71, para redhat-linux-gnu (x86_64) usando readline 5.1
El segundo:
- Debian GNU / Linux 7 \ n \ l
- mysql Ver 14.14 Distrib 5.5.31, para debian-linux-gnu (x86_64) usando readline 6.2
Ambos se ejecutaban en el mismo kernel: 2.6.32-openvz-042stab083.2-amd64 # 1 SMP vie 8 de noviembre 17:59:25 MSK 2013 x86_64 GNU / Linux.
Todo el software se instaló desde paquetes y se usó listo para usar sin ningún ajuste de configuración personalizado.
Hardware: 6 GB de RAM, 1-4 CPU de 3,5 GHz.
Para el benchmarking utilicé sysbench con el siguiente escenario:
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d prepare
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --db-driver=mysql --mysql-password=d --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
En ambos casos, el motor de la mesa era InnoDB.
El resultado que estaba viendo era la cantidad de transacciones por segundo. Los resultados fueron bastante estables: el error fue inferior al 1%.
Los resultados fueron buenos y esperados para CentOS / MySQL5.1, pero muy extraños para Debian / MySQL5.5:
Como puede ver, MySQL5.5 en Debian no aprovecha adecuadamente las múltiples CPU. Si bien el rendimiento con 2 CPU es mayor que con 1, es claramente menor que en CentOS / MySQL5.1. Además, se reduce cuando agregamos más CPU en la parte superior de 2, lo cual es realmente extraño.
¿Alguien puede explicar qué está pasando allí? ¿Por qué en la Tierra MySQL funcionaría peor al agregar CPU?