«Cuando saco la aplicación de primer plano, el audio empieza a cortarse.»
«Poner Programación del procesador en Servicios en segundo plano estabilizó las cosas.»
En Windows este tipo de comentarios circulan desde hace mucho tiempo. Preocupan especialmente en escenarios como audio, vídeo, mediciones, streaming o procesos residentes, donde el proceso continuo importa más que la interfaz de usuario.
Sin embargo, esta configuración no es un interruptor mágico de aceleración. No es una configuración que suba directamente la frecuencia de la CPU, ni que convierta la aplicación en un servicio de Windows, ni que la fije a los núcleos P. Lo que cambia, principalmente, es cómo se reparte el tiempo de CPU entre la aplicación en primer plano y los procesos que se ejecutan detrás.
En este artículo repasamos qué cambia entre Programas y Servicios en segundo plano, conectando los fundamentos del planificador de Windows, el quantum (la porción de tiempo), la preferencia del foreground y, finalmente, el comportamiento en CPU con núcleos P y E.
1. Conclusión inicial
Empecemos por lo esencial.
- Lo que cambia directamente esta configuración no es tanto la «potencia» de la CPU como el «reparto» del tiempo de CPU.
Programastiende a favorecer a la aplicación en primer plano, mientras queServicios en segundo planotrata de forma más equitativa el primer plano y el segundo plano.- Por eso, en cargas de trabajo donde el plazo de un proceso continuo que corre por detrás importa más que la interfaz en primer plano,
Servicios en segundo planopuede notarse. - Sin embargo, en CPU con núcleos P/E, «en qué núcleo se coloca» un proceso depende hoy en día mucho más del QoS, la política de energía, la planificación híbrida (hybrid scheduling) y Intel Thread Director que de esta configuración por sí sola.
- Es decir, poner
Servicios en segundo planono equivale a algo tan simple como «los procesos en segundo plano van a núcleos P» o «los servicios van a núcleos E». - Si los cortes o caídas de audio se deben a DPC/ISR, ahorro de energía de USB, controladores, thermal throttling o EcoQoS, esta configuración por sí sola no los corrige.
En una frase: esta configuración no es un ajuste de frecuencia de la CPU, sino un ajuste de las reglas de la cola de espera.
1.1 Terminología que conviene tener clara desde el principio
En este artículo aparecen, ya desde el principio, algunos términos cuyo significado real solo queda claro hacia el capítulo 6. Los resumimos aquí de antemano.
| Término | Significado |
|---|---|
| quantum (porción de tiempo) | La unidad de tiempo durante la cual un hilo puede ejecutarse de forma continua en un turno. Windows cuenta un tercio del clock tick (el intervalo de interrupción del reloj del sistema) como una unidad |
| ISR / DPC | ISR es Interrupt Service Routine (rutina de servicio de interrupción) y DPC es Deferred Procedure Call (llamada a procedimiento diferido). Ambos son mecanismos con los que los controladores procesan interrupciones, y se ejecutan antes que los hilos normales, de modo que si se alargan, la aplicación queda a la espera |
| MMCSS | Multimedia Class Scheduler Service. Es un servicio de Windows que, cuando un hilo dedicado a procesamiento multimedia se registra, le eleva la prioridad conforme a la configuración del registro |
| QoS | Quality of Service. Es la «clasificación de rendimiento y eficiencia energética» que se asigna a un hilo. Es un eje distinto de la prioridad, y afecta a qué tipo de núcleo se elige y a la gestión de energía del procesador |
| EcoQoS | Una clasificación de QoS orientada al ahorro de energía. La aplicación la asigna explícitamente mediante SetProcessInformation / SetThreadInformation |
| underrun | En procesamiento de audio, entre otros, ocurre cuando no se logra llenar el búfer antes del plazo y los datos se agotan. Se percibe como cortes o dropouts |
| core parking | Un mecanismo de gestión de energía que pone en reposo los procesadores lógicos que no se usan cuando la carga es baja |
| C-state | La profundidad del estado de inactividad de la CPU. Cuanto más profundo, mayor ahorro de energía, pero más tiempo tarda en recuperarse |
| Núcleos P / Núcleos E | Núcleos orientados al rendimiento y núcleos orientados a la eficiencia energética, respectivamente. Una CPU que combina ambos tipos se denomina hybrid (heterogénea) |
| Intel Thread Director | Un mecanismo con el que las CPU híbridas de Intel entregan al sistema operativo pistas sobre las características de ejecución de cada hilo. Windows 11 lo usa para decidir la selección de núcleo |
2. Qué cambia realmente esta configuración
Programación del procesador, en la pantalla de configuración, es una de las políticas de programación más antiguas de Windows. Internamente es una configuración con bastante historia, ligada a Win32PrioritySeparation.
Antes de nada, conviene fijar lo básico sobre cómo usa Windows la CPU.
- El planificador primero elige, de entre los hilos ejecutables, el de mayor prioridad.
- Si varios tienen la misma prioridad, se ejecutan por turnos, durante un tiempo fijo cada uno.
- Ese «tiempo fijo» es el quantum (la porción de tiempo).
flowchart LR
accTitle: Bucle básico del planificador de Windows
accDescr: Diagrama de flujo que muestra cómo el planificador elige el hilo de mayor prioridad entre los hilos listos, lo ejecuta durante un quantum y decide si cambia de contexto según haya otro hilo en espera con la misma prioridad
ready["Hilo listo para ejecutarse"] --> pick["El planificador elige el hilo de mayor prioridad"]
pick --> run["Se ejecuta durante 1 quantum"]
run --> wait{"¿Hay otro hilo en espera con la misma prioridad?"}
wait -- yes --> switch["Cambio de contexto"]
switch --> pick
wait -- no --> run
Lo que principalmente afecta Programación del procesador es el reparto de este quantum y el grado en que se favorece al foreground.
Aquí, foreground es la aplicación que el usuario está usando en primer plano en ese momento. En cambio, los procesos que pasan a segundo plano, los workers de otros procesos, los servicios de Windows, los procesos auxiliares y los procesos residentes tienden a quedar del lado del background.
Lo importante es que, aunque se elija Servicios en segundo plano, la propia aplicación no se convierte en un servicio de Windows. Lo que cambia no es el tipo llamado «servicio», sino la regla de reparto de CPU entre foreground y background. Aquí el nombre resulta bastante confuso.
2.1 Cómo llegar a la pantalla de configuración
Esta configuración está bastante escondida dentro del Panel de control. Hay dos caminos para llegar a ella.
- Ejecutando
SystemPropertiesPerformance.exedesdeWin + Rse abre directamente «Opciones de rendimiento».Programación del procesadorestá en su pestaña «Opciones avanzadas». - Si prefiere seguir el camino manual: «Propiedades del sistema» > pestaña «Opciones avanzadas» > «Configuración» de «Rendimiento» > pestaña «Opciones avanzadas». La propia «Propiedades del sistema» se puede abrir con
sysdm.cpl.
El resultado de la elección se escribe en el siguiente valor del registro.
| Elemento | Contenido |
|---|---|
| Clave | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl |
| Nombre del valor | Win32PrioritySeparation |
| Tipo | REG_DWORD |
| Rango | 0x0–0x3F |
Si solo quiere comprobar el valor actual, puede leerlo con PowerShell. Es prudente anotar el valor antes de cambiarlo, para poder revertirlo.
Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\PriorityControl' -Name 'Win32PrioritySeparation'
2.2 Versiones de Windows afectadas y el significado del valor
Programación del procesador, dentro de «Opciones de rendimiento», existe tanto en Windows 10 / Windows 11 cliente como en Windows Server. Sin embargo, lo confuso de esta configuración es que el mismo valor se interpreta de forma distinta en cliente y en servidor.
Según la documentación de registro de Microsoft, Win32PrioritySeparation es una máscara de bits que divide 6 bits en 3 grupos de 2 bits cada uno (AABBCC).
- Los 2 bits superiores: si el quantum es más largo o más corto
- Los 2 bits intermedios: si el quantum es variable o fijo
- Los 2 bits inferiores: cuántas veces más se favorece al foreground respecto al background (solo tiene efecto cuando es variable)
Sobre esa base, se explica que cada elección de la interfaz escribe los siguientes valores (en la interfaz de la época se llamaban Applications y Background services, que corresponden a los actuales Programas y Servicios en segundo plano).
| Elección en la interfaz | Valor escrito | Significado |
|---|---|---|
Programas |
100110 (0x26) |
Quantum variable y más corto. El foreground recibe 3 veces más que el background |
Servicios en segundo plano |
011000 (0x18) |
Quantum fijo y más largo. Foreground y background reciben el mismo trato |
Para ir un paso más allá en los números, el artículo de explicación de Microsoft indica que, con 0x26, el quantum del foreground es 18 y el del background es 6, y que con 0x18 ambos son 36. Como el quantum se cuenta en unidades de un tercio del clock tick, en ticks equivale a 6 ticks para el primer plano y 2 ticks para el segundo plano, frente a 12 ticks para ambos. El mismo artículo menciona un caso, en un equipo multiprocesador x86, donde el clock tick era de 15,625 milisegundos; en ese caso, la diferencia sería entre «el primer plano se ejecuta de forma continua durante unos 94 milisegundos» y «tanto el primer plano como el segundo plano se ejecutan durante unos 188 milisegundos cada uno».
Es decir, el lado de Servicios en segundo plano reparte turnos más largos, pero sin dar preferencia exclusiva al primer plano. Con esto, es menos probable que el proceso de segundo plano se quede sin que le llegue el turno.
Además, la interpretación de este valor predeterminado también varía según el sistema operativo. En la descripción de Win32_OperatingSystem de Microsoft se indica que en Windows cliente el valor predeterminado es quantum variable, con un quantum más largo para la aplicación en primer plano, mientras que en Windows Server el valor predeterminado es quantum fijo. La documentación del registro también señala que el mismo valor predeterminado 0x2 significa, en cliente, «más corto, variable, 3 veces el primer plano», y en servidor, «más largo, fijo, equitativo». Por eso el servidor ya parte, de forma predeterminada, de un comportamiento equivalente al de Servicios en segundo plano.
Los valores concretos citados aquí proceden de documentación de Microsoft y artículos de la era de Windows 2000 / XP. La correspondencia entre el valor del registro y la interfaz sigue siendo la misma hoy, pero el tratamiento real del quantum puede variar según la versión del sistema operativo, así que conviene leer estos números como una referencia del orden de magnitud, no como cifras exactas para todas las versiones.
3. Qué cambia entre Programas y Servicios en segundo plano
La diferencia entre ambos se entiende mejor comparándola en una tabla.
| Aspecto | Programas |
Servicios en segundo plano |
|---|---|---|
| Idea básica | Tiende a mejorar la percepción de la aplicación en primer plano | Trata el primer plano y el segundo plano de forma más equitativa |
| Preferencia del foreground | Fuerte | Se reduce |
| Cuando la CPU está saturada | La interfaz tiende a responder de forma fluida | El proceso continuo en segundo plano tiende a no perder el turno |
| Escenario al que se adapta | Uso interactivo centrado en el escritorio | Servicios, captura, codificación, procesos continuos |
| Efecto secundario habitual | Es fácil que se incumplan los plazos de los procesos en segundo plano | La fluidez de la interfaz en primer plano puede reducirse un poco |
Las versiones de Windows orientadas al cliente están, básicamente, orientadas a que la aplicación en primer plano se sienta fluida. Por eso, en el uso normal de escritorio, Programas resulta natural.
Sin embargo, hay casos en los que la situación cambia.
- Procesamiento de audio que llena el búfer de forma continua en segundo plano
- Captura o análisis que se ejecuta de forma continua en otro hilo o proceso, aunque la interfaz sea ligera
- Casos en los que, aunque el navegador o el IDE estén en primer plano, importa cumplir el plazo del proceso en segundo plano
- Cargas de trabajo orientadas a servidor, servicio o proceso residente
En estos casos, en lugar de favorecer únicamente al foreground, resulta más estable que el proceso en segundo plano pueda recuperar CPU con facilidad. En ese sentido, Servicios en segundo plano puede tener sentido.
4. Por qué puede notarse en audio y en procesos continuos
Los cortes y dropouts de audio son un buen ejemplo para entenderlo.
El procesamiento de audio no basta con que sea «rápido en promedio». Cada pocos milisegundos, o incluso en unidades más cortas, hay que llenar el búfer antes del momento necesario. Aunque el uso promedio de la CPU sea bajo, si justo en ese instante no puede ejecutarse, se produce un corte de audio.
Veamos una situación concreta.
- En primer plano hay un navegador, la interfaz de un DAW u otra aplicación
- Por detrás, un hilo de procesamiento de audio se ejecuta con un ciclo regular, suministrando el búfer
- El hilo de procesamiento de audio no tiene una prioridad demasiado alta, ni aprovecha suficientemente MMCSS o QoS
- La CPU está razonablemente ocupada
En este caso, con Programas, la aplicación en primer plano tiende a ejecutarse durante periodos más largos, y puede ocurrir que el procesamiento de audio en segundo plano «esté bien en promedio, pero se retrase justo en ese instante». Si esto se repite, se produce un underrun, que se traduce en cortes.
Por el contrario, al cambiar a Servicios en segundo plano, el proceso continuo en segundo plano recupera CPU con más facilidad, y es menos probable que se incumpla el plazo.
Es decir, lo que ocurre cuando esta configuración surte efecto no es que «la CPU se haya vuelto más rápida», sino un proceso así:
- La preferencia hacia la aplicación en primer plano se reduce un poco
- El número de veces y el momento en que el proceso continuo en segundo plano puede intervenir mejora
- Como resultado, se reducen los deadline miss
5. Fundamento: el quantum y la preferencia del foreground
Si bajamos un poco más al nivel técnico, el mecanismo por el que esto surte efecto es el siguiente.
5.1 Un quantum más largo hace esperar más a los rivales de la misma prioridad
Cuando varios hilos compiten dentro de la misma banda de prioridad, cuanto más largo sea el quantum que recibe uno de ellos, más tiende a esperar el resto.
En una configuración que favorece a la aplicación en primer plano, el lado del foreground tiende a ejecutarse de forma continua durante más tiempo. Como resultado, el lado del background, con una prioridad similar, tiende a recibir con más frecuencia un «ahora no».
En procesos como audio, vídeo, medición periódica, sondeo (polling) o monitorización —procesos que necesitan ejecutarse de forma periódica, aunque sea poco a poco—, esta diferencia se nota.
5.2 Windows favorece al foreground de varias formas
Windows, de por sí, presta bastante atención al foreground. Algunos ejemplos representativos son:
- Preferencia hacia el proceso que pasa a primer plano
- Preferencia hacia el hilo propietario de la ventana que recibe la entrada
- Impulso dinámico de prioridad para el hilo tras completarse una operación de E/S
Es decir, con el simple hecho de sacar una aplicación del primer plano, su trato en la programación cambia de forma habitual. Resulta más fácil de entender pensar que Servicios en segundo plano reduce, en particular, el sesgo en el reparto del tiempo de CPU dentro de esta preferencia hacia el foreground.
5.3 «No dejar holgazanear a la CPU» tiene razón a medias
La expresión «no dejar holgazanear a la CPU» resulta intuitiva. En el sentido de que el proceso en segundo plano tiene menos probabilidad de quedar relegado, es cierto.
Pero, hablando con más precisión técnica, lo que realmente cambia no es tanto el control de inactividad o la frecuencia de la CPU en sí, sino el orden y la duración con que se ejecutan los hilos.
Por eso, esta configuración:
- No es una configuración que suba el turbo boost
- No es una configuración que desactive los C-state
- No cambia directamente el core parking
- No es una configuración que fije el uso a los núcleos P
6. Cómo influye en una CPU con núcleos P/E
Aquí es donde más se suele malinterpretar.
Poner Servicios en segundo plano no significa que Windows decida, de forma simple, «como es un proceso en segundo plano, va a un núcleo E» o «como está en primer plano, va a un núcleo P». En el Windows actual, y en especial en las CPU híbridas de Windows 11, la selección entre núcleos P y E pasa por muchas más etapas.
6.1 Nombres parecidos, conceptos distintos
Ante todo, hay dos cosas distintas con nombres parecidos.
- El
Servicios en segundo planodeProgramación del procesador- Configuración presente en la interfaz antigua
- Afecta principalmente al reparto del tiempo de CPU entre foreground y background
- Pertenece a la familia del quantum y el boost del foreground
- El QoS
Utility/Eco/Low, entre otros- Clasificación de energía/rendimiento del Windows actual
- Afecta también a la selección de núcleo y al control de frecuencia
- Se relaciona de forma directa con el comportamiento de los núcleos P/E
Estas dos cosas no son lo mismo.
6.2 QoS y visibilidad en Windows 11
En el Windows actual no solo influye la prioridad, sino también el QoS. Especialmente en procesadores heterogéneos, es decir, en configuraciones como núcleos P/E, el QoS influye en qué tipo de núcleo se prefiere.
La clasificación general de Windows 11 es la siguiente.
| Estado / clase | Imagen del QoS | Influencia sobre núcleos P/E | Dónde se documenta |
|---|---|---|---|
| Aplicación con ventana en primer plano y con foco | High | Tiende a rendimiento | Tabla de clasificación de QoS, In Focus |
| Aplicación visible pero sin foco | Medium | Intermedio | Tabla de clasificación de QoS, Visible |
| Aplicación minimizada / totalmente oculta | Low | Con batería, tiende a núcleos eficientes | Tabla de clasificación de QoS, Minimized, or Fully Occluded |
| Servicios en segundo plano (background services) | Utility | Con batería, tiende a núcleos eficientes | Tabla de niveles de QoS, Utility |
| Proceso con EcoQoS asignado explícitamente | Eco | Tiende a núcleos eficientes | Tabla de niveles de QoS, Eco |
| Hilo al que MMCSS asigna búfer por lotes | Media | Prioriza la eficiencia y reduce la frecuencia | Tabla de niveles de QoS, Media |
| Hilo multimedia con plazo de audio | Deadline | Tiende a rendimiento | Tabla de niveles de QoS, Deadline |
Esta tabla es una reelaboración de las dos tablas que aparecen en «Quality of Service» de Microsoft Learn, es decir, el listado de niveles de QoS (High / Medium / Low / Utility / Eco / Media / Deadline) y la clasificación de QoS (la correspondencia entre el estado de visualización de la ventana y el QoS asignado). No es una clasificación construida a partir de observaciones propias. La misma documentación indica también que un proceso que se determina que está emitiendo sonido se trata como High, y que los hilos que no encajan en ninguna de las categorías anteriores se asignan automáticamente mediante heurísticas basadas en la prioridad, entre otros factores.
Hay otro dato importante para quien realice mediciones. Existe una función por la cual, si durante un tiempo determinado no hay entrada del usuario mientras se funciona con batería, el QoS de la aplicación en primer plano puede bajar a Medium. La documentación advierte que, al medir rendimiento con batería, conviene desactivar esta función, e indica el procedimiento: establecer en 1 el valor DisableUserPresenceQos (REG_DWORD) dentro de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerThrottling. Si en pruebas automatizadas sin entrada del usuario aparece que «solo con batería va más lento», lo primero que conviene sospechar es esto.
Lo importante aquí es que el simple hecho de minimizar puede cambiar el QoS. Es decir, en un portátil con CPU híbrida, es habitual que ocurra lo siguiente:
- Se saca la aplicación del primer plano
- Además, se minimiza
- Como resultado, el QoS baja
- Tiende a colocarse preferentemente en un núcleo eficiente
- La percepción o el cumplimiento de plazos empeora
6.3 Thread Director y la programación híbrida
En las CPU híbridas de Intel de la 12.ª generación en adelante, Intel Thread Director entrega pistas al sistema operativo. Windows 11 las usa para decidir la asignación entre núcleos P y E de forma más inteligente.
Además, del lado de Windows existen políticas de programación heterogénea (heterogeneous scheduling).
SchedulingPolicyShortSchedulingPolicyShortThreadRuntimeThreshold
Si se dejan en Automatic, es el sistema operativo el que decide según el QoS y la configuración del sistema. Además, por detrás también actúan el motor de core parking y el motor de estados de rendimiento de la gestión de energía del procesador.
En conjunto, el panorama se puede entender más o menos así.
flowchart TD
accTitle: Factores que determinan la asignación de núcleo P/E y la frecuencia en Windows
accDescr: Diagrama de flujo que muestra cómo la prioridad de un hilo, su QoS, su visibilidad, la política de programación híbrida y las sugerencias de Intel Thread Director alimentan al planificador de Windows junto con la gestión de energía del procesador, y cómo esa combinación determina el núcleo P/E y la frecuencia finales
t["Hilo (Thread)"] --> p["Prioridad / prioridad dinámica"]
t --> q["QoS (High / Medium / Low / Utility / Eco / Deadline)"]
t --> v["Visibilidad / audible / estado de entrada"]
t --> h["Política de programación híbrida<br/>SCHEDPOLICY / SHORTSCHEDPOLICY"]
t --> td["Sugerencias de Intel Thread Director<br/>Windows 11 en CPU híbrida de Intel"]
v --> q
p --> s["Planificador de Windows + Processor Power Management"]
q --> s
h --> s
td --> s
s --> c["Se determinan el núcleo P/E y la frecuencia"]
7. Cuándo funciona y cuándo no
En la práctica, conviene separar los casos en los que suele funcionar de los casos en los que el problema es otro.
7.1 Casos en los que suele funcionar
En estos casos, Servicios en segundo plano puede ser una medida razonable.
- Al pasar el foco a la aplicación en primer plano, solo el proceso continuo en segundo plano se vuelve inestable
- El uso de CPU no está saturado, pero solo se incumple el plazo del proceso periódico
- El proceso crítico está en una aplicación heredada, un proceso auxiliar o un hilo worker, y el uso de MMCSS o QoS no es suficiente
- El protagonista es un servicio o un proceso residente, y la estabilidad del proceso en segundo plano importa más que la fluidez de la interfaz en primer plano
7.2 Casos en los que no ayuda, o el problema es otro
Por el contrario, hay problemas para los que esta configuración por sí sola no basta.
- Latencia elevada de DPC/ISR
- Fallos en el controlador USB o en el controlador de audio
- Efectos de USB selective suspend o del ahorro de energía de dispositivos
- Thermal throttling
- Efectos del ahorro de batería, power throttling o EcoQoS
- Tamaño de búfer demasiado pequeño
- La aplicación ya usa correctamente MMCSS / Deadline y el problema está en otro lugar
En particular, en portátiles con Windows 11 y CPU híbrida, los cambios de visibilidad y de QoS tienen bastante peso. Si el rendimiento empeora al minimizar, o solo empeora con batería, conviene sospechar antes del QoS y de la parte de energía que de Programación del procesador.
8. Cómo abordarlo en la práctica
Para aislar la causa en la práctica, este orden resulta claro.
- Fijar las condiciones
- Alimentación por corriente alterna o batería
- Modo de energía
- Tamaño del búfer
- Estado en primer plano, visible o minimizado
- Comparar
ProgramasyServicios en segundo planoen las mismas condiciones- Registrar no solo la percepción, sino también el número de dropouts, el número de glitches y el retraso de procesamiento
- En Windows 11 / CPU híbrida, sospechar del lado del QoS
- Si empeora solo al minimizar
- Si cambia según el estado audible
- Si empeora solo con batería
- En audio o vídeo, revisar primero MMCSS
- Si el hilo importante le está indicando a Windows que «este plazo importa»
- Si aun así no se resuelve, investigar DPC / ISR / USB / controlador
- Aquí ya se trata de un problema anterior al planificador
8.1 Qué comprobar y cómo, punto por punto
Para no quedarse solo en «sospechar», aquí quedan los métodos concretos de comprobación.
| Qué se quiere comprobar | Cómo comprobarlo en concreto |
|---|---|
La configuración actual de Programación del procesador |
Abra SystemPropertiesPerformance.exe, o lea Win32PrioritySeparation con el comando de PowerShell del apartado 2.1 |
| Corriente alterna / batería y el plan de energía | Compruebe y registre el plan de energía activo con powercfg /getactivescheme y la lista completa con powercfg /list |
| Si un proceso tiene throttling de energía | En la pestaña «Detalles» del Administrador de tareas, haga clic derecho en los encabezados de columna y añada la columna de throttling de energía. En Windows 11, la pestaña «Procesos» también muestra la indicación de modo de eficiencia en la columna de estado |
| Si el QoS de la aplicación en primer plano baja con batería | Configure DisableUserPresenceQos, del apartado 6.2, y compare si el comportamiento cambia |
| Si el hilo importante puede usar MMCSS | Si es código propio, compruebe si llama a AvSetMmThreadCharacteristics / AvSetMmMaxThreadCharacteristics y si el identificador devuelto es válido. Si lo está usando, la prioridad sube según la categoría de programación, y esto se puede comprobar viendo la prioridad en la lista de hilos de Process Explorer (High: 23–26, Medium: 16–22, Low: 8–15) |
| Definición de tareas de MMCSS | En HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks existen tareas como Audio, Pro Audio, Capture y Playback, donde se puede comprobar Scheduling Category y Priority |
| La latencia de DPC / ISR | Capture una traza con wpr -start GeneralProfile -filemode, deténgala con wpr -stop trace.etl, y revise el tiempo por módulo en el gráfico de DPC/ISR de WPA |
| En qué núcleo se ejecutó un hilo | Abra la misma traza en CPU Usage (Precise) de WPA y observe la columna del procesador lógico en el que se ejecutó. La correspondencia entre el número de procesador lógico y los núcleos P/E depende del modelo, así que conviene elaborar antes esa tabla con Coreinfo de Sysinternals, por ejemplo. Así se puede comparar si el número usado cambia entre el estado en primer plano y el estado minimizado |
wpr es el comando de Windows Performance Recorder, incluido en el Windows ADK. Se ejecuta desde una consola con privilegios de administrador.
En la práctica, importa más «si se cumplió el plazo» que el uso promedio de la CPU. Esto es bastante esencial.
9. Resumen
Si resumimos, de forma bastante breve, qué ocurre al cambiar Programación del procesador a Servicios en segundo plano, queda así:
- Lo que cambia no es la velocidad de la CPU en sí, sino el reparto del tiempo de CPU entre foreground y background
Programastiende a hacer que la aplicación en primer plano se sienta fluidaServicios en segundo planohace que el proceso continuo en segundo plano pierda menos su turno- Por eso puede notarse en casos como audio, vídeo, captura, monitorización o procesos residentes, donde el plazo del proceso en segundo plano importa
- Sin embargo, en CPU con núcleos P/E, la colocación real en un núcleo depende también, y con fuerza, del QoS, la política de energía, la planificación híbrida y Thread Director, entre otros
- Por eso, en el Windows actual, lo natural es ver esta configuración como algo que puede tener efecto, pero que no es el protagonista único
En definitiva, esto no es una perilla que suba la potencia de la CPU, sino una perilla que cambia el reparto del trabajo.
Priorizar la fluidez de la aplicación en primer plano o facilitar que se cumplan los plazos del proceso continuo en segundo plano: pensar en esta configuración como algo que inclina ese equilibrio ligeramente hacia el lado del background resulta bastante esclarecedor.
Y en la era de las CPU híbridas, por encima de todo esto se añade además la capa del QoS y la selección de núcleos P/E. Viendo el conjunto hasta aquí, empieza a entenderse «por qué a veces funciona» y «por qué a veces no funciona».
10. Referencias
- Sawady: Configuración para priorizar los servicios en segundo plano (no dejar holgazanear a la CPU)
- Microsoft Learn: Win32_OperatingSystem class
- Microsoft Learn: descripción del valor de registro Win32PrioritySeparation - El significado de los bits y los valores que escribe cada elección de la interfaz.
- Microsoft Learn: Master Your Quantum - El quantum correspondiente a cada valor de
Win32PrioritySeparation. - Microsoft Learn: Know Thy Tick - La relación entre el clock tick y el quantum.
- Microsoft Learn: CPU Analysis in Windows Performance Analyzer
- Microsoft Learn: Windows Performance Recorder
- Microsoft Learn: Priority Boosts
- Microsoft Learn: Window Features
- Microsoft Learn: Quality of Service
- Microsoft Learn: SetThreadInformation function
- Microsoft Learn: SetProcessInformation function
- Microsoft Learn: Multimedia Class Scheduler Service
- Microsoft Learn: Processor power management options overview
- Microsoft Learn: SchedulingPolicy
- Microsoft Learn: ShortSchedulingPolicy
- Microsoft Learn: ShortThreadRuntimeThreshold
- Intel Support: Is Windows 10 Task Scheduler Optimized for 12th Generation Intel Core Processors?
- Intel White Paper: Intel performance hybrid architecture & software optimizations, Part Two
Artículos relacionados
Artículos recientes con las mismas etiquetas para profundizar en temas cercanos.
Guía introductoria de configuración de CPU para desarrolladores de aplicaciones Windows: prioridad, afinidad y núcleos P/E
Para desarrolladores de aplicaciones Windows: la relación entre prioridad de CPU, afinidad, núcleos P/E, ahorro de energía y EcoQoS/Effic...
Cómo funcionan el portapapeles y arrastrar y soltar — Gestionar correctamente la transferencia de datos OLE en aplicaciones empresariales
Una tabla de Excel se deforma al pegarla y deja de poder pegarse si cierra el origen: es el portapapeles colocando el mismo contenido en ...
WPR/WPA en la práctica — Introducción al análisis de rendimiento del sistema para «todo el PC va lento»
Problemas como «todo el PC va lento» o «el arranque es lento», que el Administrador de tareas no explica, se investigan con WPR/WPA leyen...
El apagado de Windows visto desde la aplicación ── cómo sobrevivir correctamente a la notificación de cierre, el reinicio y el corte de energía
Un reinicio nocturno de Windows Update corrompió datos de medición: ese accidente se evita con buen diseño. Explicamos, con fuentes ofici...
Introducción a la accesibilidad en aplicaciones Windows — UI Automation y cómo prepararse para la obligatoriedad del ajuste razonable
Ante la reforma legal japonesa vigente desde abril de 2024, explicamos UI Automation, el mecanismo con el que los lectores de pantalla le...
Temas relacionados
Estas páginas sitúan el tema en un contexto más amplio de servicios y decisiones.
Temas técnicos de Windows
Portal sobre desarrollo de Windows, investigación de fallos y aprovechamiento de activos existentes.
Servicios relacionados con este tema
El artículo está directamente relacionado con los siguientes servicios.
Consultoría técnica y revisión de diseño
Es un tema en el que conviene ordenar el comportamiento de la programación de Windows, el QoS, la configuración de energía y la era de los núcleos P/E para tomar decisiones de diseño, por lo que encaja bien con la consultoría técnica y la revisión de diseño.
Investigación de fallos y causas
El proceso de determinar si los cortes de audio, las caídas o la inestabilidad de los procesos en segundo plano cambian con `Programación del procesador`, o si en realidad se deben a DPC/ISR o a un controlador, encaja bien con la investigación de errores y el análisis de causas.
Preguntas frecuentes
Preguntas habituales en las consultas sobre el tema del artículo.
- ¿Qué cambia al poner «Programación del procesador» en «Servicios en segundo plano»?
- No cambia la velocidad ni la frecuencia de la CPU, sino la forma de repartir el tiempo de CPU entre la aplicación en primer plano y los procesos que se ejecutan por detrás. Internamente es una configuración ligada a Win32PrioritySeparation, que afecta al reparto del quantum (la porción de tiempo) y al grado de preferencia que recibe el foreground. «Programas» tiende a favorecer a la aplicación en primer plano, mientras que «Servicios en segundo plano» trata el primer plano y el segundo plano de forma más equitativa. Además, elegir esta configuración no convierte su aplicación en un servicio de Windows.
- ¿Por qué a veces «Servicios en segundo plano» corrige los cortes de audio?
- El procesamiento de audio no solo necesita ser rápido en promedio: hay que llenar el búfer antes de un plazo que se repite cada pocos milisegundos. Con la configuración «Programas», la aplicación en primer plano tiende a ejecutarse durante periodos más largos, y aunque el procesamiento de audio en segundo plano esté bien en promedio, puede retrasarse justo en ese instante y producir un underrun. Al cambiar a «Servicios en segundo plano», el proceso continuo en segundo plano recupera CPU con más facilidad, lo que puede reducir los deadline miss. Sin embargo, esta configuración no corrige los problemas causados por la latencia de DPC/ISR, el ahorro de energía de USB, fallos de controladores, thermal throttling o EcoQoS.
- ¿Poner «Servicios en segundo plano» hace que los procesos en segundo plano se ejecuten en los núcleos P?
- No. Que un proceso se coloque en un núcleo P o en un núcleo E depende mucho más del QoS, la política de energía, la planificación híbrida (hybrid scheduling) y tecnologías como Intel Thread Director que de esta configuración. En Windows 11 es habitual que el simple hecho de minimizar una aplicación reduzca su QoS y haga que se coloque preferentemente en núcleos eficientes cuando se funciona con batería. Si el problema solo aparece al minimizar o solo con batería, conviene sospechar antes del QoS y de la parte de energía que de esta configuración.
- ¿Cómo se puede aislar la causa de los cortes o caídas de audio?
- Primero fije las condiciones —alimentación por corriente alterna o batería, modo de energía, tamaño del búfer, estado en primer plano o minimizado— y compare «Programas» frente a «Servicios en segundo plano» en las mismas condiciones, registrando el número de dropouts y el retraso de procesamiento. En un CPU híbrido de Windows 11, observe si el problema empeora solo al minimizar o solo con batería, lo que apunta al QoS. En audio o vídeo, compruebe primero si los hilos importantes pueden usar MMCSS, y si aun así no se resuelve, investigue DPC/ISR, USB y los controladores. Llegados a este punto, el problema ya no tiene que ver con el planificador.
Perfil del autor
Página de presentación del autor del artículo.
Go Komura
Representante de KomuraSoft LLC
Especializado en desarrollo de software para Windows, consultoría técnica e investigación de fallos, sobre todo en proyectos con sistemas existentes y errores difíciles de reproducir.