Estoy construyendo un monitor de recursos basado en web para Linux.
Por ahora estoy deseando usar:
df
para leer el estado de uso del disco duro/proc/meminfo
(a través del gato) para leer el estado de RAMmpstat
(del paquete sysstat) para leer el uso de la CPU
Mientras que la df
y /proc/meminfo
devuelve los datos casi al instante, mpstat
retrasos para el intervalo que especifico, con el valor mínimo aceptado de 1 (en segundos).
¿Hay un lector de uso de la CPU en tiempo real, o hay una manera de hacer mpstat
volver "al instante"?
salida de mpstat:
[psycketom@stone ~]# mpstat -P ALL 1 1
Linux 3.5.4-1-ARCH (stone) 03/05/2013 _x86_64_ (1 CPU)
11:33:15 AM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
11:33:16 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
11:33:16 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
Average: all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
Average: 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
linux
arch-linux
resource-monitor
joltmode
fuente
fuente
top
¿No es adecuado para sus propósitos por alguna razón?STDOUT
, que podría grep.top
Encuestas continuamente.Respuestas:
Puedes usar
top
En modo batch y una única iteración:Yo también usaría
free
en lugar de analizarmeminfo
.Otra forma es usar
ps
, agregue el% de CPU de cada proceso y divida por la cantidad de núcleos que tiene su máquina:Si su sistema tiene solo un núcleo, la secuencia de comandos anterior fallará, produciendo:
Para hacerlo funcionar, cambiar.
k/(cores * cpus)
ak/(cores==""?1:cores * cpus)
. Esto comprobará si elcores
La variable no está vacía, si lo está,1
será utilizado en su lugar.fuente
free
punta, y parece que voy a seguir contop
entonces. ¡Aceptado!top
No refleja el uso real. Realicé alrededor de 60 solicitudes web al servidor, y todas se mantuvieron en 97.7% de inactividad, aunque la tabla mostró un uso de 5.8% paratop
. Quiero decir, mostró 97.7% en el encabezado.%Cpu(s): 1.5 us, 0.6 sy, 0.1 ni, 97.7 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
. ¿Tengo que leer el uso total de otra parte o debo calcular mi final?5.8%
uso de un soltero núcleo para la parte superior. Los porcentajes son para cada núcleo individual. Así que sifoo
está tomando el 40% de un solo núcleo de una máquina de 2 núcleos,top
Mostrará40%
parafoo
no20%
como se podría esperar. También vea mi respuesta actualizada para otra forma de obtener el uso real.k/(cores==""?1:cores * cpus)
arreglado el problema