Configuración del servidor: affinity I/O mask

Se aplica a: SQL Server

Para realizar varias tareas, Windows a veces mueve subprocesos del proceso entre diferentes procesadores. Aunque es eficaz desde el punto de vista del sistema operativo, esta actividad puede reducir el rendimiento de SQL Server en casos de elevadas cargas, ya que cada caché de procesador se vuelve a cargar repetidamente con los datos. La asignación de procesadores a subprocesos específicos puede mejorar el rendimiento en estas condiciones, ya que se eliminan las recargas de procesador; esta asociación entre un subproceso y un procesador se denomina afinidad del procesador.

SQL Server admite la afinidad del procesador por medio de dos opciones de máscara de afinidad: affinity mask (también conocida como CPU affinity mask) y affinity I/O mask. Para obtener más información sobre la opción affinity mask, vea Configuración de la opción de configuración del servidor de máscara de afinidad. La compatibilidad de afinidad de CPU y E/S con servidores con entre 33 y 64 procesadores exige el uso adicional de las opciones de configuración del servidor affinity64 mask y affinity64 I/O mask, respectivamente.

Nota:

La compatibilidad de la afinidad con servidores que tienen entre 33 y 64 procesadores solo está disponible en sistemas operativos de 64 bits.

La opción affinity I/O mask enlaza las E/S de disco de SQL Server a un subconjunto especificado de CPU. En entornos de procesamiento de transacciones en línea (OLTP) de SQL Server de grandes prestaciones, esta extensión puede mejorar el rendimiento de los subprocesos de SQL Server que emiten E/S. Esta mejora no admite la afinidad de hardware para controladores de discos o discos individuales.

El valor de affinity I/O mask especifica las CPU de un equipo con varios procesadores que se pueden seleccionar para procesar operaciones de E/S del disco de SQL Server. La máscara es un mapa de bits en el que el primer bit de la derecha especifica la CPU(0) de menor orden, el bit inmediatamente a su izquierda especifica la CPU(1) siguiente a la de menor orden, y así sucesivamente. Para configurar más de 32 procesadores, establezca tanto affinity I/O mask como affinity64 I/O mask.

Estos son los valores para affinity I/O mask:

Bytes en máscara Número de CPU
1 byte Hasta 8 CPU
2 bytes Hasta 16 CPU
3 bytes Hasta 24 CPU
4 bytes Hasta 32 CPU

Para cubrir más de 32 CPU, configure una affinity I/O mask de 4 bytes para las primeras 32 CPU y una affinity64 I/O mask de hasta 4 bytes para las restantes CPU.

Un bit 1 en el patrón de E/S de afinidad especifica que la CPU correspondiente es apta para realizar operaciones de E/S de disco de SQL Server. Un bit 0 especifica que no se deben programar operaciones de E/S de disco de SQL Server para la CPU correspondiente. Cuando todos los bits se establecen en 0, o bien no se especifica affinity I/O mask, las E/S del disco de SQL Server se programan en cualquiera de las CPU que se pueden seleccionar para procesar subprocesos de SQL Server.

Dado que establecer la opción affinity I/O mask de SQL Server es una operación especializada, solo debería usarse en caso necesario. En la mayor parte de los casos, el mejor rendimiento se obtiene con la afinidad predeterminada de Windows.

Al especificar la opción affinity I/O mask, se debe usar junto con la opción de configuración affinity mask. No habilite la misma CPU tanto en el conmutador affinity I/O mask como en la opción affinity mask. Los bits correspondientes a cada CPU deberían estar en uno de los tres estados siguientes:

  • 0 en la opción affinity I/O mask y en la opción affinity mask.
  • 1 en la opción affinity I/O mask y 0 en la opción affinity mask.
  • 0 en la opción affinity I/O mask y 1 en la opción affinity mask.

La opción affinity I/O mask es una opción avanzada. Si va a usar el procedimiento almacenado del sistema sp_configure para cambiar la configuración, solo puede cambiar el valor affinity I/O mask si show advanced options está establecido en 1. En SQL Server, para reconfigurar la opción affinity I/O mask hay que reiniciar la instancia SQL Server.

Precaución

No configure la afinidad de CPU en el sistema operativo Windows y configure también affinity mask en SQL Server. Esta configuración intenta lograr el mismo resultado y, si las configuraciones no son coherentes, puede obtener resultados impredecibles. La afinidad de CPU de SQL Server se configura mejor mediante el procedimiento almacenado del sistema sp_configure en SQL Server.