Estoy viendo el porcentaje de utilización de mi CPU por un proceso. ¿Cómo utiliza un proceso solo un 50% de CPU? ¿No utiliza un proceso 100%, luego 0%, luego 100%? No es como cualquier otra instrucción es un programa diferente.
performance
cpu
.net-framework
Anthony D
fuente
fuente
Respuestas:
Solo sondea un total de aproximadamente una vez por segundo. Estás viendo cuánto del último segundo usó.
Si ve una CPU al 50% por un tiempo, lo más probable es que esté usando el 100% de una CPU en un sistema de doble CPU.
fuente
Técnicamente tienes razón. En cualquier momento, la CPU se está utilizando o no se está utilizando. Pero mostrar eso en un gráfico no sería muy útil, por lo que el gráfico promedia la utilización de la CPU durante un período de tiempo, probablemente cada segundo.
fuente
El sistema operativo programa el proceso para un cierto período de tiempo. Entonces, si el proceso está programado para (digamos) 1 ms de 10 ms, entonces usará un 10% de CPU.
Es un poco contradictorio, ya que (en un sistema de CPU de un solo subproceso), el proceso se está ejecutando o no. es decir, está utilizando 100% o 0%. El porcentaje que ve se mide en una ventana de tiempo y es una medida del sistema operativo que asigna ranuras de tiempo a su proceso para ejecutar.
Tenga en cuenta que su proceso no contribuirá a esto si está accediendo a E / S. Entonces, si está haciendo un gran cálculo, registrará el 100% (suponiendo que no se ejecute nada más). Si luego espera un paquete de red / acceso al disco, etc., la cifra de su CPU disminuirá, a pesar de que su proceso todavía se está ejecutando.
fuente
En un nivel muy bajo, básicamente tienes razón. En cualquier instante dado, el procesador está ejecutando una instrucción para un proceso determinado o no lo está.
Pero su sistema operativo se encuentra entre sus procesos y el procesador, lo que hace que compartan tiempo. El porcentaje que ve es el porcentaje de tiempo de procesamiento reciente que el sistema operativo ha otorgado a ese proceso.
fuente
Se basa en el tiempo promedio. A pesar de que todos los subprocesos pueden tener la misma parcela de tiempo de CPU (según la prioridad), los subprocesos solo pueden decir "gracias pero estoy inactivo" y pasar su turno al siguiente subproceso. Es por eso que los programas no siempre usan el mismo% de tiempo, y la mayoría de los programas consumen 0% de CPU, y los programas que realmente necesitan CPU pueden tomar cerca del 100% de tiempo por sí mismos.
¿Por qué tiene un límite del 50%? Probablemente tenga dos núcleos de CPU, y está usando solo uno.
O, como se sugirió, está usando hyperthreading, pero no sé cómo se comporta exactamente.
fuente
Su programa podría estar haciendo muchas E / S (lecturas / escrituras en disco o red). Eso mantendría el programa ocupado pero necesitaría poco o nada de tiempo de CPU.
fuente
La utilización del sistema se muestrea y promedia, lo cual es lo único sensato que hacer.
Por ejemplo, se mantiene un registro de cuánto tiempo se ejecutó un proceso / subproceso durante 1 segundo. Si pasó 1 segundo en la CPU, eso es 100% de CPU (o 50% si tiene 2 CPU, etc.), si pasó 100 ms, eso es 10% de utilización de CPU.
fuente