[eside-ghost] Medición del uso de cpu
Alfredo Beaumont
alfredo.beaumont en gmail.com
Mar Abr 1 01:01:38 CEST 2008
Al, 2008eko Marren 31a(e)an, STenyaK (Bruno Gonzalez)(e)k idatzi zuen:
> Puedo ejecutarlo con un numero cualquiera de threads, con lo que el tiempo
> "user" a veces es mayor que el tiempo "real". Se supone que eso solo ocurre
> porque tengo un dual core, o directamente el user time no sirve para
> programas multihilo?
Si tienes un programa multihilo y más de un core puedes tener más user time
que el tiempo real, lógicamente. Si no no.
> Por ultimo, está sys, que la verdad no sé muy bien qué significa. Dicen que
> es tiempo de kernel, pero no sé qué significa exactamente. Mis hilos llevan
> un bucle casi vacío, en el que se ejecuta un cout y algunos time() de <
> time.h>. Ambas líneas forman parte del supuesto kernel time? O solamente el
> tiempo que se tarda en leer/escribir datos en/del hardware? O tb mete una
> parte proporcional del tiempo usado en el scheduler y cosas así (que se
> supone son tarea del kernel)?
Efectivamente, sys es el tiempo del kernel, asociado al proceso (se queda
fuera el tiempo del scheduler y demás). Dentro estaría la llamada al sistema
time(), y de los cout, las llamadas al sistema a write(). Puedes usar strace,
y básicamente todo lo que veas ahí va a sys.
> Lo único que quiero saber es el % de cpu q usa el programa. Es decir, si el
> programa estuviera él solito en el ordenador, cuánta cpu usaria de media en
> esos 10 segundos.
>
> ¿Cómo puedo medirlo con precisión?
Pues la forma más simple es usar el comando time, como dices que utilizas.
Para obtener información de diferente fuente habría que complicar bastante el
tema, ya que tanto top, como la información que puedes encontrar
en /proc/PID/stat y la del comando time viene del mismo sitio. Una
posibilidad es utilizar registros específicos de CPU para benchmarking y otra
utilizar algún profiler como gprof u oprofile.
Saludos
--
Alfredo Beaumont Sainz
http://www.alfredobeaumont.org/blog.cgi
Más información sobre la lista de distribución eside-ghost