Agregar CPU reduce el rendimiento de MySQL 5.5 (Debian)

8

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: ingrese la descripción de la imagen aquí

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?

Garra Verde
fuente
La contención de recursos podría estar en juego aquí: ¿tiene muchos otros servidores / contenedores virtuales ejecutándose en este host? ¿Es posible que los procesadores físicos estuvieran bajo carga durante su evaluación comparativa de la instalación de Debian?
luz negra
Los resultados fueron / son bastante reproducibles. Era mi propio servidor de metal desnudo en casa y no lo cargué con nada más durante la prueba.
Greendrake
Quiero decir, por supuesto, había algunas otras máquinas virtuales en el servidor, pero estaban inactivas.
Greendrake
Hubiera dicho kernel, pero es lo mismo ... ¿Podría intentar usar la misma versión en ambos sistemas?
miniBill
uno diferente, debian usa eglibc en.wikipedia.org/wiki/Embedded_GLIBC , tal vez este no sea el problema
c4f4t0r

Respuestas:

1

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]

usuario37008
fuente
0

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.

Thorsten Staerk
fuente