El uso del tiempo de CPU "inactivo" todavía ralentiza otros programas

El uso del tiempo de CPU "inactivo" todavía ralentiza otros programas

Antes, cuando ejecutaba un cliente Folding@Home y ahora, cuando usaba BOINC, siempre usaban tiempo de CPU "inactivo" (para aquellos de ustedes que no están familiarizados con esos programas, ejecutan enormes cálculos científicos en su computadora, de manera muy intensiva). Sin embargo, noté que tanto en Windows como en Linux al intentar hacer otras cosas (Firefox, programación en Netbeans, etc.) todos esos programas son extremadamente lentos.

Ahora sé que puede hacer cosas como ejecutar clientes solo en 2 o 3 núcleos (suponiendo un sistema de 4 núcleos), pero estoy más interesado en saber por qué este tiempo de CPU "inactivo" haría que los programas con prioridad normal se ralenticen. ¿No se ejecutaría primero un proceso con prioridad normal antes que el proceso con prioridad inactiva, interrumpiéndolo si fuera necesario? ¿Por qué es difícil para los sistemas operativos gestionar esto?

Respuesta1

Esos programas en realidad no se ejecutan durante el tiempo de CPU "inactivo", sino que se ejecutan como procesos de baja prioridad. Cuando un sistema operativo ejecuta varias aplicaciones, utiliza un programador de procesos para determinar qué procesos obtienen acceso a la CPU y con qué frecuencia. Esto se llama multitarea preventiva.

El programador utiliza prioridades de proceso para determinar qué procesos obtienen acceso a la CPU. Un proceso de prioridad normal tendrá prioridad en el programador sobre un proceso de prioridad inactiva, pero la CPU todavía se está utilizando y hay cierta sobrecarga para el cambio de contexto entre subprocesos y procesos.

Debido a que la CPU ahora está funcionando al 100% todo el tiempo en lugar de tener ciclos inactivos disponibles, no es difícil imaginar que algunos procesos e interrupciones podrían tardar más que si la CPU estuviera inactiva debido a la sobrecarga de cambio de subprocesos.

Algunos de esos programas tienen una opción para detener la ejecución de su proceso cuando la computadora está en uso. Lo hacen detectando actividad del mouse o del teclado y deshabilitándose durante un cierto período de tiempo hasta que se determina que la computadora está inactiva nuevamente, momento en el cual volverán a iniciarse. Yo sugeriría mirar esa opción.

Otra cosa a señalar es que cuando una CPU está inactiva utiliza significativamente menos energía que cuando está en pleno uso. Entonces, mientras sus programas utilizan ciclos de CPU "sobrantes", pueden fácilmente duplicar el consumo de energía de su PC, lo que le cuesta varios dólares al mes en electricidad.

Respuesta2

Sólo tengo que agregar algunas pequeñas cosas a la respuesta de Chris Thompson, ya dijo la parte principal.

El consumo de energía y el efecto en su factura de electricidad pueden ser realmente significativos, sólo para enfatizar esto un poco más. Las razones por las que otros programas pueden verse afectados por los subprocesos adicionales de baja prioridad podrían ser el trabajo adicional al cambiar los procesos (la caché y los registros ya están en uso). Y las operaciones de E/S también podrían tener cierta influencia. La mayor parte del trabajo de estos programas solo requiere un uso intensivo de la CPU y eso puede verse influenciado por la prioridad del proceso, pero es difícil priorizar las E/S adicionales. Y el uso de memoria adicional también ralentiza su sistema. Si su memoria está bastante llena, el intercambio puede reducir significativamente el rendimiento de su sistema.

Para profundizar en el consumo de energía: encontré cifras de consumo de energía reales para un Intel Core i7 Extreme Edition de alrededor de 300 vatios bajo carga pesada. Los procesadores Intel Core más nuevos tienen algunas características de ahorro de energía realmente interesantes que incluso permiten que la CPU corte la energía de diferentes núcleos si están inactivos. Así que supongo que podrías usar entre 150 y 200 vatios más si siempre tienes programas de este tipo en ejecución. (Los números más antiguos que encontré muestran una diferencia de más de 150 vatios). Pero como no he encontrado números confiables, supongamos que usa 100 vatios más (no olvide que su sistema de enfriamiento también tiene que funcionar más si su CPU genera más calor). - esto da 100*24*30 = 72 kWh/mes o 864 kWh/a si su PC estuviera funcionando 24 horas al día, 7 días a la semana.

información relacionada