Significado de %CPU reportado por top

Horst H. von Brand vonbrand en inf.utfsm.cl
Mar Feb 10 22:20:57 CLST 2009


Aldrin Martoq <amartoq en dcc.uchile.cl> wrote:
> On Thu, 2009-02-05 at 13:06 +0100, Miguel Oyarzo O. wrote:
> > Alejandro Weinstein escribió:
> > > Ahora estoy confundido otra vez. La siguiente es una captura de top,
> > > en una maquina con UNA cpu:
> > > Tasks:  61 total,   2 running,  59 sleeping,   0 stopped,   0 zombie
> > > Cpu0  :  0.3%us,  0.2%sy,  0.0%ni, 99.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
> > > Mem:    507380k total,    87544k used,   419836k free,     5084k buffers
> > > Swap:   385520k total,        0k used,   385520k free,    34484k cached
> > >   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
> > >  4370 ajw       20   0  102m 9.9m 4200 S 23.7  2.0   0:47.09 python
> > >  4341 ajw       20   0 14996 4296 2300 S  1.7  0.8   0:03.99 python
> > >     1 root      20   0  2844 1696  548 S  0.0  0.3   0:01.57 init
> > > Tengo Cpu0: 0.3%. y uno de los procesos python usando 23.7%.
> > > Como cuadran estos numeros? Significa que el proceso uso el 23.7% del 0.3%?

> No cuadran porque los contadores se sacan de _distintas partes_ y en
> _distintos instantes_,

No.

>                        ni siquiera la linea de arriba te da 100%:
> 0.3%user + 0.2%sys +99.4%idle == 99.9%.

Se conoce como "error de redondeo"...

> Todo es calculado separadamente (global y por proceso) y debes tomarlo
> de esa forma. Un ejemplo es compilar el kernel:

Se calcula por proceso (tarea), y se suma para obtener el total. O algo
equivalente.

> top - 14:25:42 up  3:26,  9 users,  load average: 2.45, 2.07, 1.24
> Tasks: 207 total,   4 running, 202 sleeping,   0 stopped,   1 zombie
> Cpu0  : 52.9%us, 15.6%sy,  0.0%ni,  0.0%id, 30.9%wa,  0.3%hi,  0.3%si,  0.0%st
> Mem:   2007220k total,  1821260k used,   185960k free,    52756k buffers
> Swap:  2112536k total,     5156k used,  2107380k free,   962488k cached
>   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                   
> 12729 amartoq   20   0 19024  11m 3368 R  5.3  0.6   0:00.16 cc1                                                       
> 12234 root      10 -10  493m 253m 244m S  2.0 12.9   3:39.70 vmware-vmx                                                
> 11437 amartoq   20   0  242m  96m  26m S  1.7  4.9   1:46.67 firefox                                                   
>  6528 root      20   0  255m  88m  26m S  1.3  4.5   7:52.91 Xorg     
> 
> La CPU estuvo al 100% durante el intervalo (5 secs), pero si miras la
> lista de procesos no supera el 10% de cpu . En este caso es porque los
> programas que utilizaron CPU ya no estan corriendo; pero todo esta
> correcto dentro de su contexto ("4 running" tampoco cuadra y asi ...).

No. La CPU estuvo en uso 52,9 + 15,6 = 68,5% del tiempo, las _pocas_ tareas
listadas suman algo de 10% de eso (== 7%).
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                    Fono: +56 32 2654431
Universidad Tecnica Federico Santa Maria             +56 32 2654239
Casilla 110-V, Valparaiso, Chile 2340000       Fax:  +56 32 2797513


Más información sobre la lista de distribución Linux