Latencia DPC: cuando el que da el tirón es un driver

Un driver dentro de una interrupción se ejecuta por encima de cualquier hilo de la máquina, así que no aparece en ningún administrador de tareas ni en ninguna gráfica de tiempos de fotograma — lo que eso cuesta, cómo medirlo con honestidad, qué archivo es qué dispositivo, y el único arreglo que funciona.

Ya has recorrido la lista. No hay nada ejecutándose, las temperaturas están bien, el disco es rápido, el juego está en un SSD, y la máquina sigue dando sacudidas. El Administrador de tareas muestra un sistema ocioso. La gráfica de tiempos de fotograma enseña el fotograma que llegó tarde, pero no dice nada de por qué llegó tarde.

Hay una causa que explica exactamente esta forma, y es invisible en todas las herramientas a las que la gente suele recurrir, porque ocurre por debajo de ellas.

Primero, la frase honesta. El arreglo para un driver que retiene un núcleo es ese driver, de su fabricante. La parte de w0a es la medición, el nombre del archivo y la reparación de valores que dejaron atrás herramientas antiguas. El único interruptor que ofrecía cerca de esto, dirigir las interrupciones de un dispositivo a núcleos elegidos, es de solo lectura desde el 8 de octubre de 2026, porque ninguna prueba A/B en un juego mostró un fotograma ganado gracias a él.

Qué está pasando en realidad

Un dispositivo — una tarjeta de red, una controladora de disco, un chip de sonido, una controladora USB — necesita la atención del procesador. Levanta una interrupción, y Windows ejecuta de inmediato la rutina de servicio de interrupción del driver. Esa rutina se ejecuta por encima de cualquier prioridad de hilo que exista: no es «prioridad alta», es estar fuera del planificador de hilos por completo. En ese núcleo no se puede planificar nada más hasta que la rutina vuelva.

Como ese es un sitio caro donde estar, se supone que los drivers hacen ahí lo mínimo y difieren el resto a una llamada a procedimiento diferido — un DPC — que se ejecuta un instante después, todavía por delante de cualquier hilo de ese núcleo.

Mientras se está ejecutando cualquiera de las dos, ese núcleo no dibuja nada ni lee ninguna entrada. Si tu hilo de renderizado estaba ahí, tu fotograma llega tarde. Si tu reporte del mouse estaba en la cola detrás, tu entrada llega tarde. Y ninguno de los dos sucesos aparece en un administrador de tareas, porque no hay ningún proceso al que atribuírselo.

Por qué un milisegundo es mucho aquí

Lo que hace que esto merezca la pena perseguirlo es la aritmética:

Medirlo, y las dos formas en que la medición falla

La Prueba de Latencia de w0a abre una sesión de trazado del kernel y registra, durante doce segundos de movimiento real del mouse, cuánto tiempo retuvo un núcleo cada driver. Necesita permisos de administrador. Por qué la prueba pide doce segundos de movimiento del mouse explica la duración; cómo leer la prueba de latencia explica los colores.

Dos resultados no son respuestas, y los dos se reportan como tales en vez de redondearse a la baja a «limpio»:

Hay un tercero, más sutil: una sesión que perdió eventos puede haberse saltado por completo la peor ejecución, así que la página avisa de que el número puede no ser el peor real. Es el mismo principio que el escaneo de tirones aplica en todas partes — una regla que no se pudo ejecutar cuenta como no comprobada, nunca como limpia.

Los números, exactamente

NúmeroLa regla
Duración de la pruebaDoce segundos por defecto: lo bastante largo para atrapar a un driver que falla una vez por segundo, y lo bastante corto para que de verdad sigas moviendo el mouse todo el tiempo.
Datos suficientes del mouseDos segundos de los propios informes del dispositivo, y nunca menos de 250 muestras; para un mouse de 1000 Hz eso son 2000. Por debajo de eso, el percentil 99 es la segunda o tercera peor muestra, no una estadística.
Veredicto del driverLa peor ejecución individual de un driver se marca como advertencia a partir de 1 ms y como crítica a partir de 4 ms. Son los límites que este campo usa desde hace dos décadas; son una convención, no una medición que w0a hiciera en tu máquina.
Una medición completaLas cifras de los drivers solo cuentan como completas cuando el trazado del kernel se ejecutó y su sesión no perdió ningún evento. Un contador que se niega a responder se trata como una ejecución con pérdidas, no como una limpia.
Suelo del sistemaEl percentil 99 del mouse, más medio intervalo de actualización, más la peor ejecución de un driver — esta última solo cuando se midió el trazado del kernel, porque sumar cero por un kernel sin medir imprimiría una cifra más bonita justo cuando la herramienta sabe menos. Es un suelo, nunca un total: el muestreo de entrada del propio juego, su cola de renderizado, el trabajo de la GPU y la respuesta del panel quedan todos fuera. La latencia de entrada que ningún software puede arreglar es el resto de la cadena.

Leer la lista

Cada driver aparece con el nombre de su archivo, su retención individual más larga, su porcentaje del tiempo medido y cuántas veces se ejecutó. Ordena por la retención más larga; ese es el número que te cuesta un fotograma.

Dos lecturas que la gente hace mal:

Qué archivo es cuál, y qué hacer con cada uno

El nombre del archivo es toda la pista, y la familia a la que pertenece decide el arreglo:

FamiliaQué esQué ayuda de verdad
Red inalámbricaEl driver del adaptador Wi-FiEl driver del propio fabricante en lugar del genérico que entrega Windows Update. Un cable elimina la línea por completo.
Red por cableLa de la placa base o una tarjeta de red añadidaEl driver del fabricante de la placa. Desactivar la moderación de interrupciones no arregla esta línea: sin ella los paquetes dejan de agruparse, cada paquete recibido genera su propia interrupción y el driver se ejecuta más a menudo, no menos. Por eso la página Conexión no toca la moderación de interrupciones en máquinas con menos de seis núcleos físicos — mira tweaks de red.
AlmacenamientoLa controladora que hay en el camino hasta tu discoEn NVMe, prueba el driver propio de Windows y el del fabricante, y quédate con aquel con el que la prueba de latencia marque el valor más bajo. Un driver de almacenamiento de terceros merece la pena quitarlo.
USBLa controladora hostLos drivers de chipset, y mover el mouse a un puerto de la placa en lugar de dejarlo detrás de un hub.
AudioEl códec, y todo lo que se apoya encimaEl driver del fabricante; si persiste, el driver de audio genérico de Windows suele bajarlo. Las utilidades de RGB y de audio corren por este camino.
PantallaEl driver gráficoLa web del propio fabricante. Si empezó después de una actualización, vuelve a la versión anterior.
Componentes del propio WindowsTiempo gastado por cuenta de algún otro driverNo hay nada que «actualizar» por sí solo — arreglar los drivers de arriba también baja esta línea.
Gestión de energíaEl camino que cambia los relojes y los estados de reposoSubir el estado mínimo del procesador y reducir la profundidad de los estados C en el firmware la acortan las dos cosas, y las dos suben el consumo en reposo. Eso es un intercambio, no un arreglo.

Un driver de filtro merece su propia línea aquí. Las herramientas de modelado de tráfico y de enrutado de conexiones pasan cada paquete por un driver propio, y los parones de red de varios segundos son su efecto secundario más conocido; el escaneo de tirones los nombra cuando los encuentra. Lo mismo vale para las suites de macros y las herramientas de iluminación que instalan un filtro en el camino del mouse y el teclado.

El arreglo, y los no-arreglos

El arreglo es actualizar ese driver concreto, desde el fabricante del hardware. No todo el sistema, no con una herramienta que actualiza drivers, y no reinstalando Windows. La página nombra el archivo con precisión para que puedas buscar a qué dispositivo pertenece.

Lo que no arregla esto, y por eso aquí se rechaza: las anulaciones de la resolución del temporizador, los valores de gestión de memoria del kernel (DisablePagingExecutive, LargeSystemCache) y las listas del Registro que circulan bajo la palabra «latencia». Ninguna de ellas cambia cuánto tiempo retiene un núcleo un driver, porque quien lo retiene es el código de ese driver. Desactivar dispositivos al azar tampoco es un diagnóstico — aunque desactivar un dispositivo como prueba, con una medición antes y otra después, es un experimento perfectamente válido. Lo mismo vale para los valores de dispositivo que circulan junto con estas listas: MSISupported cambia el modo de interrupción de un dispositivo y, mal puesto, el resultado puede ser una pantalla negra, así que w0a no lo escribe nunca, y la tarjeta de reparación de direccionamiento de interrupciones de más abajo lo deja en paz.

Los dos ajustes cercanos que toca w0a

Directiva de interrupciones del dispositivo: solo lectura, con una tarjeta de reparación

Dónde la guarda Windows: por dispositivo, en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\<device>\<instance>\Device Parameters\Interrupt Management\Affinity Policy. DevicePolicy (DWORD) elige cómo se colocan las interrupciones del dispositivo; cuando vale 4, «procesadores especificados», AssignmentSetOverride es la máscara de los procesadores que pueden usar.

Valor por defecto de Windows: ninguno de los dos valores existe. Windows calcula entonces la colocación por su cuenta, y Microsoft recomienda la directiva por defecto siempre que sea aplicable.

Qué hace w0a: lee estos valores y no los escribe. Desde el 8 de octubre de 2026 el direccionamiento que ofrecía en la página Prueba de Latencia ya no existe, por tres motivos: ninguna prueba A/B en un juego mostró un fotograma ganado gracias a él, Microsoft recomienda la colocación que calcula Windows, y una máscara equivocada es un dispositivo que no arranca.

Vuelta atrás: si una herramienta fijó las interrupciones de un dispositivo y algo se rompió — un mouse que se desconecta, un «Código 10» en el Administrador de dispositivos —, la tarjeta direccionamiento de interrupciones del dispositivo borra los dos valores de todos los dispositivos PCI, incluido el direccionamiento que dejaron versiones antiguas de w0a. Solo pide reinicio cuando de verdad quitó algo, y deja MSISupported en paz.

«Bajo carga: control de flujo, moderación de interrupciones, coalescencia de segmentos apagados» (página Conexión)

Qué escribe: 0 en la palabra clave *FlowControl del adaptador de red, en cada adaptador que la declara. *InterruptModeration, *RscIPv4 y *RscIPv6 solo se escriben en máquinas con al menos seis núcleos físicos, y solo en adaptadores de los que se sabe que funcionan por debajo de 2,5 Gbit/s; en esas máquinas la casilla también desactiva la coalescencia de segmentos a nivel de la pila de red, salvo que ya esté desactivada.

Por qué la moderación se queda activada en máquinas más pequeñas: con la moderación y la coalescencia desactivadas, cada paquete recibido se convierte en su propia interrupción en lugar de una por intervalo de moderación, y la carga de llamadas diferidas cae en el núcleo que recibe. Así que desactivar la moderación no es una forma de acortar la línea del driver de red en la Prueba de Latencia: según la propia descripción de w0a, lo que quita es la espera de decenas a cientos de microsegundos que un paquete pasa en el adaptador hasta que se agota el temporizador del lote, y lo que añade es una interrupción por paquete. Su efecto en la lista de drivers no se ha medido. Si tu línea es el driver de red, ejecuta la prueba con la casilla aplicada y sin ella.

Lo que promete la propia casilla: microsegundos, en el ping bajo carga. Su mensaje dice que el ping medio no cambia.

Cuándo se aplica: cuando el adaptador se reinicia; w0a pide reinicio siempre que escribió algo.

Vuelta atrás: la tarjeta descargas (offload) del adaptador de red devuelve los offloads por hardware, la moderación de interrupciones, Energy Efficient Ethernet, la suspensión selectiva y los búferes de recepción a los valores por defecto del propio driver, tal como los declara el driver.

Compruébalo tú mismo

Estos comandos solo leen. En el símbolo del sistema o en PowerShell:

reg query "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" /s /v DevicePolicy
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\PCI" /s /v AssignmentSetOverride

Una respuesta que dice que la búsqueda terminó sin ninguna coincidencia (en un Windows en inglés, End of search: 0 match(es) found.) significa que ningún dispositivo lleva una sustitución: el valor por defecto de Windows. Una coincidencia aparece bajo la clave en la que se encontró, y la parte PCI de esa ruta identifica el dispositivo.

En PowerShell, para el adaptador de red:

Get-NetAdapterAdvancedProperty -Name "*" -RegistryKeyword "*FlowControl","*InterruptModeration","*RscIPv4","*RscIPv6" -AllProperties

Esto lista el ajuste actual de cada adaptador para las cuatro palabras clave que puede escribir la casilla de la página Conexión. Un adaptador que no aparece para una palabra clave no la declara, y la casilla no escribe nada ahí.

Y luego vuelve a medir

El mismo método, los mismos doce segundos, la misma máquina. La página compara con tu ejecución anterior y reporta un cambio por debajo del 5% como «sin cambios» y no como una mejora, porque dos ejecuciones en una máquina que nadie ha tocado ya se diferencian de por sí en un pequeño porcentaje — una mano se mueve distinto cada vez.

Si la línea del driver bajó y el tirón no, has aprendido algo real: esta no era tu causa, y por qué los juegos dan tirones en Windows 11 tiene el resto de la lista. Si lo que tienes es una tasa de fotogramas que cae y se queda abajo en vez de una sacudida, nunca fue esto — caídas repentinas de FPS en juegos es esa otra lista.

Relacionado

¿Juegas a CS2? Qué opciones de lanzamiento siguen haciendo algo y dónde están de verdad los fotogramas en el menú de vídeo: Pocos FPS y tirones en CS2: una lista basada en mediciones

w0a no cambia ningún ajuste de Windows hasta que se lo pides, y un tweak guarda el valor anterior antes de escribir uno nuevo. Avísame

¿Te sirvió esta página?

¿Qué faltaba, o qué no funcionó? Leemos todos estos mensajes.

Si esta página no resolvió tu problema, escríbenos — dinos qué artículo leíste y lo corregimos.