Compartir a través de


Cambios en el número de procesadores

En un servidor con particiones dinámicas, puede agregar un procesador a una partición de hardware en cualquier momento. Por lo tanto, no debe realizar ninguna suposición sobre el número de procesadores activos en una partición de hardware, el valor de afinidad del procesador o el número de procesador asignado a cada procesador activo. Los bits que se establecen en el valor de afinidad de procesador representan cada uno de los procesadores activos actualmente en la partición de hardware. Los bits concretos que se establecen cambiarán si agrega un procesador a la partición de hardware.

Si alguna de las siguientes instrucciones es verdadera para un controlador de dispositivo, debe actualizar el controlador para que funcione correctamente en un servidor con particiones dinámicas cuando un procesador se agregue dinámicamente a una partición de hardware:

  • El controlador de dispositivo usa el número de procesadores activos en la partición de hardware para determinar la cantidad de recursos que usa, como la cantidad de memoria que asigna, el número de subprocesos que crea o la cantidad de otros recursos que usa. En esta situación, la asignación de recursos del controlador de dispositivo será incorrecta si un procesador se agrega dinámicamente a la partición de hardware. Esto podría afectar negativamente al rendimiento o comportamiento del controlador.

  • El controlador de dispositivo recorre los bits del valor de afinidad del procesador. En esta situación, es posible que el controlador de dispositivo no funcione correctamente si no puede controlar los cambios dinámicos en el valor de afinidad del procesador o no puede controlar los huecos en la secuencia de bits que se establecen.

  • El controlador de dispositivo usa los bits del valor de afinidad del procesador para asignar recursos asignados por controladores a procesadores específicos. En esta situación, las asignaciones de recursos del controlador de dispositivo serán incorrectas si un procesador se agrega dinámicamente a la partición de hardware. Esto podría afectar negativamente al rendimiento o comportamiento del controlador.

  • El controlador de dispositivo asigna estructuras de datos para cada procesador activo en la partición de hardware. En esta situación, el controlador de dispositivo podría provocar un comportamiento adverso, daños en los datos o una comprobación de errores si intenta acceder a estas estructuras de datos para un procesador que se agregó dinámicamente a la partición de hardware.

  • Las rutinas de distribución del controlador de dispositivo usan el número de procesador en el que se ejecutan para acceder a estructuras de datos u otros recursos asignados a ese procesador en particular. En esta situación, las rutinas de distribución del controlador de dispositivo pueden provocar un comportamiento adverso, daños en los datos o una comprobación de errores si intentan acceder a estos recursos para un procesador que se ha agregado dinámicamente a la partición de hardware.

  • El controlador de dispositivo programa sus rutinas de servicio de interrupción (ISR), llamadas a procedimientos diferidos (DPC) u otros subprocesos en procesadores específicos. En esta situación, el controlador de dispositivo podría dejar de funcionar correctamente si agrega un procesador a la partición de hardware y el controlador de dispositivo no podrá usar completamente ningún procesador nuevo.

  • El controlador de dispositivo no admite el reequilibrio de recursos. En esta situación, el controlador de dispositivo no podrá usar ningún procesador nuevo que se agregue a la partición de hardware para controlar las interrupciones.

  • El controlador de dispositivo usa un algoritmo de equilibrio de carga para distribuir el procesamiento de solicitudes de E/S entre varios procesadores. En esta situación, el controlador de dispositivo podría dejar de funcionar correctamente si agrega un procesador a la partición de hardware y el controlador de dispositivo no podrá usar completamente ningún procesador nuevo.

Si un controlador de dispositivo se ve afectado por cambios en el número de procesadores activos, debe registrarse con el sistema operativo para recibir notificaciones cuando agregue procesadores a la partición de hardware. Cuando se notifica al controlador de dispositivo, puede responder según sea necesario para una operación segura y óptima. Para obtener más información sobre cómo un controlador de dispositivo puede registrarse con el sistema operativo, consulte Notificación de controladores.

Para recuperar el número actual de procesadores activos en la partición de hardware, los controladores de dispositivo deben llamar a la función KeQueryActiveProcessorCount . Para recuperar el valor de afinidad del procesador actual, los controladores de dispositivo pueden llamar a la función KeQueryActiveProcessors o a la función KeQueryActiveProcessorCount .

Nota Si un controlador de dispositivo asigna estructuras de datos para cada procesador activo en la partición de hardware y el controlador de dispositivo produciría un error si se produce un error en la asignación de memoria para las estructuras de datos para un nuevo procesador, el controlador de dispositivo puede asignar suficientes de estas estructuras de datos durante la inicialización del controlador para controlar el número máximo de procesadores que admite el sistema operativo. En esta situación, el controlador de dispositivo no tendría que asignar nuevas estructuras de datos al agregar nuevos procesadores a la partición de hardware. Sin embargo, a menos que el tamaño de estas estructuras de datos sea bastante pequeño, puede ser un uso ineficaz de los recursos de memoria. Un controlador de dispositivo puede consultar el número máximo de procesadores que admite el sistema operativo mediante una llamada a la función KeQueryMaximumProcessorCount .

Importante Los controladores de dispositivo siempre deben actualizar cualquier valor guardado del número de procesadores activos y la afinidad de procesador cuando se le notifique que ha agregado un procesador a la partición de hardware.

Importante Un controlador de dispositivo no debe contar el número de bits establecidos en el valor de afinidad del procesador para determinar el número de procesadores activos en la partición de hardware. Se recomienda que los controladores de dispositivo llamen a la función KeQueryActiveProcessorCount para este propósito. Esta función devuelve el número de procesadores activos y el valor de afinidad de procesador asociado.

Importante Los controladores de dispositivo creados para Windows Vista, Windows Server 2008 y versiones posteriores de Windows no deben usar la variable de kernel KeNumberProcessors para determinar el número de procesadores activos en la partición de hardware. La variable de kernel KeNumberProcessors está obsoleta en Windows Vista con Service Pack 1 (SP1), Windows Server 2008 y versiones posteriores de Windows.