La optimización de MySQL en Linux mejora el rendimiento. ¿Qué funciones se pueden optimizar para desactivar NUMA?
Para optimizar el rendimiento de MySQL en Linux, puede optimizar y desactivar las funciones NUMA de la siguiente manera:
En realidad, se derivan de la última tecnología de la CPU: el modo de ahorro de energía. . El sistema operativo coopera con el hardware de la CPU. Cuando el sistema no está ocupado, reducirá la frecuencia de la CPU para ahorrar energía y reducir la temperatura.
Para garantizar que MySQL pueda hacer un uso completo de los recursos de la CPU, se recomienda configurar la CPU en el modo de rendimiento máximo. Esta configuración se puede configurar en el BIOS y el sistema operativo. Por supuesto, configurar esta opción en el BIOS es mejor y más completo.
Entonces veamos la memoria y veamos qué podemos optimizar.
i) Echemos un vistazo a numa primero
La estructura de acceso a memoria no uniforme (NUMA: Non-UniformMemoryAccess) también es la última tecnología de administración de memoria. Corresponde a la estructura multiprocesador simétrica (SMP: SymmetricMulti-Processor).
Podemos ver intuitivamente que el costo del acceso a la memoria SMP es el mismo; pero bajo la arquitectura NUMA, el costo del acceso a la memoria local y el acceso a la memoria no local son diferentes. En consecuencia, en función de esta característica, en el sistema operativo, podemos configurar el método de asignación de memoria del proceso. Los métodos actualmente admitidos incluyen:
--interleave=nodes
--membind=nodes
--cpunodebind=nodes
- - physcpubind=cpus
--localalloc
--preferred=node
En resumen, es decir, puede especificar que la memoria se asigne localmente, en cierta CPU. los nodos se asignan o sondean. A menos que esté configurado el modo de asignación de sondeo --interleave=nodes, la memoria se puede asignar en cualquier nodo NUMA. De otras formas, incluso si queda memoria en otros nodos NUMA, Linux no asignará la memoria restante a este proceso, sino que utilizará SWAP para obtener memoria.
Así que la forma más sencilla es desactivar esta función.
Los métodos para desactivar la función incluyen: puede desactivar temporalmente esta función desde el BIOS, el sistema operativo o al iniciar el proceso.
a) Debido a las diferencias entre los distintos tipos de BIOS, la forma de desactivar NUMA varía mucho, por lo que no le mostraremos cómo configurarlo aquí.
b) Para desactivarlo en el sistema operativo, puede agregar directamente numa=off al final de la línea del kernel en /etc/grub.conf, como se muestra a continuación:
kernel/vmlinuz-2.6.32-220.el6.x86_64roroot=/dev/mapper/VolGroup-rootrd_NO_LUKS.UTF-8rd_LVM_LV=VolGroup/rootrd_NO_MDquietSYSFONT=latarcyrheb-sun16rhgbcrashkernel=autord_LVM_LV=VolGroup/swaprhgbcra. shkernel=autosilencioKEYBO ARDTYPE=pcKEYTABLE=usrd_NO_DMnuma=apagado
También puede configurar vm.zone_reclaim_mode=0 para recuperar la mayor cantidad de memoria posible.
c) Al iniciar MySQL, desactive la función NUMA:
numactl --interleave=allmysqld
Por supuesto, la mejor manera es desactivarla en la BIOS.
ii) Veamos nuevamente vm.swappiness.
vm.swappiness es la estrategia del sistema operativo para controlar el intercambio de memoria física. Los valores permitidos son un porcentaje, con un mínimo de 0 y un máximo de 100. El valor predeterminado es 60.
Establecer vm.swappiness en 0 significa intercambiar lo menos posible y 100 significa intercambiar páginas de memoria inactivas tanto como sea posible.
Específicamente: cuando la memoria está básicamente llena, el sistema usará este parámetro para determinar si intercambiar la memoria inactiva que rara vez se usa en la memoria o liberar el caché de datos.