estructura PERF_CONFIGURATION_DATA (storport.h)
La estructura de PERF_CONFIGURATION_DATA describe las optimizaciones de rendimiento que admite la rutina StorPortInitializePerfOpts .
Sintaxis
typedef struct _PERF_CONFIGURATION_DATA {
ULONG Version;
ULONG Size;
ULONG Flags;
ULONG ConcurrentChannels;
ULONG FirstRedirectionMessageNumber;
ULONG LastRedirectionMessageNumber;
ULONG DeviceNode;
ULONG Reserved;
PGROUP_AFFINITY MessageTargets;
} PERF_CONFIGURATION_DATA, *PPERF_CONFIGURATION_DATA;
Miembros
Version
Número de versión de la estructura. Establezca este miembro al consultar e inicializar optimizaciones.
Size
El tamaño de la estructura, establecido en sizeof(PERF_CONFIGURATION_DATA)).
Flags
Un OR bit a bit de las marcas admitidas. Actualmente, se admiten las siguientes marcas:
Marca | Significado |
---|---|
STOR_PERF_DPC_REDIRECTION |
Esta marca se usa para indicar que el procesamiento DPC debe distribuirse en varias CPU.
Esta marca es válida cuando Version se establece en 2 o 3. |
STOR_PERF_CONCURRENT_CHANNELS |
Esta marca se usa para indicar que se admiten las llamadas simultáneas a la rutina HwStorStartIo . Antes de Windows 8, los miniportes no deben establecer esta marca.
Esta marca es válida cuando Version se establece en 2 o 3. |
STOR_PERF_INTERRUPT_MESSAGE_RANGES |
Esta marca se usa para indicar que se admite la redirección de interrupciones. Al usar esta marca, también debe establecer la marca STOR_PERF_DPC_REDIRECTION.
Esta marca es válida cuando Version se establece en 2 o 3. |
STOR_PERF_ADV_CONFIG_LOCALITY |
Esta marca se usa para indicar que debe usar el grupo y la máscara que pertenecen al grupo de mensajes con la afinidad correcta. Al usar esta marca, también debe establecer el STOR_PERF_INTERRUPT_MESSAGE_RANGES y las marcas de STOR_PERF_DPC_REDIRECTION.
Esta marca es válida cuando Version se establece en 3. |
STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO |
Esta marca se usa para indicar que el controlador de miniporte completará las E/S simultáneamente con el envío de nuevas E/S. Al usar esta marca, también debe establecer la marca STOR_PERF_DPC_REDIRECTION.
Esta marca es válida cuando Version se establece en 3. Vea los comentarios más abajo. |
STOR_PERF_DPC_REDIRECTION_CURRENT_CPU |
Esta marca se usa para indicar que está optando por el redireccionamiento DPC (obligatorio), pero la opción de redirección de E/S se establece en la CPU que solicita el DPC y no en la CPU que origina la solicitud de E/S en Storport.
Al usar esta marca, también debe establecer la marca STOR_PERF_DPC_REDIRECTION. Esta marca es válida cuando Version se establece en 4. |
STOR_PERF_NO_SGL |
Esta marca se usa para indicar que la minipuerto no necesita que el controlador storport cree las sgls para un búfer de solicitudes de E/S.
Esta marca es válida cuando Version se establece en 5. |
ConcurrentChannels
Número de llamadas simultáneas a la rutina HwStorStartIo que admite el controlador de miniporte y el dispositivo. Solo se tiene acceso a este miembro cuando se ha establecido la marca STOR_PERF_CONCURRENT_CHANNELS. Antes de Windows 8, los miniportes no deben establecer este valor.
FirstRedirectionMessageNumber
Cuando el miembro Flags tiene establecida la marca STOR_PERF_INTERRUPT_MESSAGE_RANGES, el controlador de miniporte inicializa la redirección de interrupción para comenzar con este número de mensaje. Solo se tiene acceso a este miembro cuando se establece la marca STOR_PERF_INTERRUPT_MESSAGE_RANGES.
LastRedirectionMessageNumber
Cuando el miembro Flags tiene establecida la marca STOR_PERF_INTERRUPT_MESSAGE_RANGES, el controlador de miniporte inicializa la redirección de interrupciones para terminar con este número de mensaje. Solo se tiene acceso a este miembro cuando se establece la marca STOR_PERF_INTERRUPT_MESSAGE_RANGES.
DeviceNode
Cuando el miembro Flags tiene establecida la marca STOR_PERF_ADV_CONFIG_LOCALITY, Storport inicializa este campo para que contenga el número de nodo NUMA en el que reside el dispositivo del controlador de miniporte.
Reserved
Reservado para uso del sistema.
MessageTargets
Cuando el miembro Flags tiene establecida la marca STOR_PERF_ADV_CONFIG_LOCALITY, Storport inicializa los campos de en las estructuras de una matriz de GROUP_AFFINITY . Estas estructuras corresponden a los mensajes de redireccionamiento que están actualmente en uso. La propia matriz es de base cero, pero FirstRedirectionMessageNumber no es necesario que sea cero. La minipuerta asigna esta matriz y establece MessageTargets para que apunte a ella. El controlador de minipuerto debe asignar una matriz GROUP_AFFINITY lo suficientemente grande como para contener todas las máscaras de afinidad devueltas.
Comentarios
La versión actual de esta estructura se define mediante STOR_PERF_VERSION. Si se establece Version en este valor , flags podrá especificar todas las optimizaciones admitidas.
El propósito de la marca STOR_PERF_DPC_REDIRECTION es asegurarse de que las CPU individuales no están sobrecargadas con el procesamiento DPC. Cuando se establece esta marca, el procesamiento de DPC se distribuye en varias CPU. Si no se establece STOR_PERF_DPC_REDIRECTION_CURRENT_CPU, StorPort intentará programar los DPC de finalización de E/S en la misma CPU que originó la E/S.
Normalmente, una minipuerto completa las solicitudes de E/S en su rutina HwStorStartIo y llama a StorPortNotification con el tipo de notificación RequestComplete . Para procesar E/S de esta manera, el minipuerto dejará la marca STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO establecida en el miembro Flags , lo que permite a Storport ajustar el redireccionamiento DPC.
Para obtener información sobre cómo habilitar las interrupciones señaladas por mensajes para un dispositivo, consulte Habilitación de Message-Signaled interrupciones en el Registro.
Requisitos
Requisito | Valor |
---|---|
Header | storport.h (incluya Storport.h) |