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