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?
fuente
Respuestas:
No para reventar la burbuja de conjeturas de nadie, pero esto es un error en MySQL 5.5 .
fuente
Bueno, es una pregunta realmente importante sin saber primero algo sobre la arquitectura que está ejecutando ... pero generalmente hay un impacto exponencial en el rendimiento del bus cuando se agrega capacidad de CPU, especialmente la arquitectura que admite múltiples procesadores multinúcleo, solo deténgase y piense por un momento las implicaciones sobre el ciclo de interrupción a través de cualquier limitación de ancho de banda de bus implementada ... en cualquier caso de rendimiento ... entendiendo que su arquitectura embotellará E / S o Bits por ciclo, nuevamente tenga en cuenta que las CPU múltiples necesitan múltiples subprocesos ... así que no importa la velocidad de su FSB ... si su hardware es de solo 64 bits, entonces la conectividad eléctrica física tendrá que compartir esta limitación en tantos núcleos en el mismo ciclo de reloj ...ahora deténgase y piense en las implicaciones positivas de actualizar de una placa del sistema de 64 bits a una de 256 bits, puede obtener un rendimiento x3 veces mejor a toda velocidad, dado que x1 se gastará al enhebrar / mantener la operación por encima ... sin embargo, durante las operaciones normales puede experimentar una realidad incómoda sobre los gastos generales cuando solo necesita un único procesador / operador ... Supongo que es un acto de equilibrio o, más específicamente, el caballo adecuado para el curso correcto ... Steveo Reedo [email protected] que es un acto de equilibrio o más específicamente el caballo adecuado para el curso correcto. Steveo Reedo [email protected] que es un acto de equilibrio o más específicamente el caballo adecuado para el curso correcto. Steveo Reedo [email protected]
fuente
Cuando agrega CPU, la cosa realizará más operaciones en paralelo. Si no ha aumentado la cantidad de RAM, puede producirse un intercambio, especialmente si utiliza una versión más gruesa (y más reciente significa más gruesa) del software que está probando.
fuente