¿Hay alguna forma de medir el uso de CPU de un proceso específico por núcleos?
Sé que top es bueno para medir el uso de CPU de todo el sistema por núcleos y el conjunto de tareas puede proporcionar información sobre qué núcleo de CPU está permitido para que se ejecute el proceso.
Pero, ¿cómo mido el uso de CPU de un proceso específico por núcleos de CPU?
I
para alternar el modo Irix (a diferencia del modo Solaris ). Cuandoon
, el porcentaje que se muestra en la lista de procesos es relativo a un subproceso de la CPU . Cuandooff
, dicho porcentaje se muestra en relación con la capacidad total de la CPU (es decir, TODOS los subprocesos , también conocidos como todos los núcleos).top
,man
dice la página,top -1
pero se queja? Sería buenotop -1 -n 1
obtener una sola iteración detop
pero con un uso de CPU separado mostrado.Puedes usar:
Muestra cuánto está ocupado cada núcleo y se actualiza automáticamente cada segundo. La salida sería algo como esto (en un procesador de cuatro núcleos):
Este comando no responde a la pregunta original, es decir, no muestra el uso del núcleo de la CPU para un proceso específico.
fuente
puede utilizar
ps
.por ejemplo, tener un proceso de Python con dos subprocesos ocupados en la CPU de doble núcleo:
(PSR es el ID de CPU al que está asignado el hilo)
ve que los subprocesos se ejecutan en el mismo núcleo de la CPU (debido a GIL)
ejecutando el mismo script de Python en jython, vemos que el script está utilizando ambos núcleos (y hay muchos otros servicios o cualquier subproceso, que están casi inactivos):
puede procesar la salida y calcular la CPU total para cada núcleo de CPU.
Desafortunadamente, este enfoque no parece ser 100% confiable, a veces veo que en el primer caso, se informa que los dos subprocesos de trabajo están separados para cada núcleo de la CPU, o en el último caso, se informa que los dos subprocesos están en el mismo núcleo ..
fuente
htop
ofrece una buena descripción general del uso del núcleo individualfuente
La
ps
solución fue casi lo que necesitaba y, con algo de bash, hace exactamente lo que pedía la pregunta original: ver el uso por núcleo de procesos específicosEsto también muestra el uso por núcleo de procesos multiproceso .
Utilice como: cpustat `pgrep nombre de proceso`` pgrep otro nombre de proceso` ...
Nota: Estas estadísticas se basan en la vida útil del proceso , no en los últimos X segundos, por lo que deberá reiniciar el proceso para restablecer el contador.
fuente
También le dará el uso de CPU de los primeros 4 núcleos. Por supuesto, si tiene 32 núcleos, este comando se alarga un poco, pero es útil si solo le interesan unos pocos núcleos.
Por ejemplo, si solo te interesan los núcleos 3 y 7, puedes hacer
fuente
Solo tuve este problema y encontré una respuesta similar aquí .
El método es configurarlo de
top
la manera que desee y luego presionarW
(W mayúscula). Esto guardatop
el diseño actual en un archivo de configuración en $ HOME / .toprcAunque esto podría no funcionar si desea ejecutar varios
top
con diferentes configuraciones.Entonces, a través de lo que considero una solución alternativa, puede escribir en diferentes archivos de configuración / usar diferentes archivos de configuración haciendo uno de los siguientes ...
1) Cambiar el nombre del binario
Ahora
.top2rc
se escribirá en su $ HOME2) Establezca $ HOME en una ruta alternativa, ya que escribirá su archivo de configuración en el archivo $ HOME / .binary-name.rc
Ahora
.toprc
se escribirá en la carpeta actual.Mediante el uso de los comentarios de otras personas para agregar las diversas cuentas de uso en la parte superior, puede crear una salida por lotes para esa información y luego fusiona la información a través de un script. Tal vez no sea tan simple como su script, pero encontré que top me proporciona TODOS los procesos para que luego pueda recapitular y capturar un estado durante una ejecución larga que podría haber perdido de otra manera (uso repentino inexplicable de la CPU debido a procesos perdidos)
fuente
Pensé que
perf stat
es lo que necesitas.Muestra un uso específico de un proceso cuando especifica una
--cpu=list
opción. A continuación, se muestra un ejemplo de cómo monitorear el uso de la CPU al construir un proyecto usandoperf stat --cpu=0-7 --no-aggr -- make all -j
command. La salida es:La columna de la izquierda es el índice de CPU específico y la columna más a la derecha es el uso de la CPU. Si no especifica la
--no-aggr
opción, el resultado se agregará. La--pid=pid
opción le ayudará si desea monitorear un proceso en ejecución.Prueba
-a --per-core
o-a perf-socket
también, que presentará información más clasificada.Se
perf stat
puede ver más sobre el uso de en este tutorial: perf cpu statistic , tambiénperf help stat
ayudará en el significado de las opciones.fuente