PDA

Ver la versión completa : Como averiguar el uso de CPU en C



Estopero
08/06/2007, 19:39
Hola tios, me gustaria ver el consumo que hace mi juego cuando se esta ejecutando en la negrita, tanto por curiosidad como por ver hasta donde puedo ir añadiendo cosas o si los cambios que voy haciendo consumen mas o menos.. etc. asi que os pregunto lo siguiente =)

¿Hay alguna forma en C de calcular el uso q se esta haciendo de la cpu? nose si habra forma de acceder a algun servicio del sistema operativo y que te de la informacion, o si hay que calcularlo por separado... o como va :D. A ver si me podeis echar un cable, mientras tanto googleare un poco =)

Un saludo!

JoJo_ReloadeD
08/06/2007, 19:54
Hola tios, me gustaria ver el consumo que hace mi juego cuando se esta ejecutando en la negrita, tanto por curiosidad como por ver hasta donde puedo ir añadiendo cosas o si los cambios que voy haciendo consumen mas o menos.. etc. asi que os pregunto lo siguiente =)

¿Hay alguna forma en C de calcular el uso q se esta haciendo de la cpu? nose si habra forma de acceder a algun servicio del sistema operativo y que te de la informacion, o si hay que calcularlo por separado... o como va :D. A ver si me podeis echar un cable, mientras tanto googleare un poco =)

Un saludo!

Desde consola:


top -p pid_proceso -b -n 1 | grep "nombre_proceso" | tr -s " " | cut -d " " -f9


Eso te devuelve el dato que tu quieres ;)

KOLALOKA
08/06/2007, 20:08
usa lo ke te han dihco desde la consola, haciendo una llamada al execute, redirige el resultado de la llamada a un fichero y leelo.

Salud2

Estopero
08/06/2007, 20:09
Desde consola:


top -p pid_proceso -b -n 1 | grep "nombre_proceso" | tr -s " " | cut -d " " -f9


Eso te devuelve el dato que tu quieres ;)

gracias tio! ahora encontrar la forma de integrar eso dentro del juego para que salga en forma de contador o algo asi xD


usa lo ke te han dihco desde la consola, haciendo una llamada al execute, redirige el resultado de la llamada a un fichero y leelo.

Salud2

gracias por la idea :D, no hay alguna forma de no tener q andar escribiendo y leyengo en la sd? :S

^MiSaTo^
08/06/2007, 20:22
No hay manera de redirigir la salida del top a la pantalla de algun modo? en plan con un echo o algo así?

Estopero
08/06/2007, 20:46
No hay manera de redirigir la salida del top a la pantalla de algun modo? en plan con un echo o algo así?

echo? eso es de php xD, a una variable no estaria mal xD

^MiSaTo^
08/06/2007, 20:48
echo? eso es de php xD, a una variable no estaria mal xD
prueba a poner en una shell de linux $echo hola a ver que sale....
El echo no es solo de PHP so cenutrio xD
Las salidas de los comandos las puedes redirigir con un ">" si no recuerdo mal
La idea es que redirigas la salida del top a la pantalla, como si haces un "echo" pero no al terminal en plan algo asi:

top -p pid_proceso -b -n 1 | grep "nombre_proceso" | tr -s " " | cut -d " " -f9 > pantalla

Puck2099
08/06/2007, 20:50
Se supone que en el directorio /proc/<pid> (donde <pid> es el número de pid del proceso) hay información sobre el proceso en cuestión.

Al menos están los archivos que tiene abiertos, uso de memoria (que por cierto, podría usar yo para el Fenix...) y el status, pero es posible que haya info relativa al uso de CPU.

Así que si localizas el dato ya solo tendrías que leerlo desde tu programa.

Aiken
08/06/2007, 20:54
gracias por la idea :D, no hay alguna forma de no tener q andar escribiendo y leyengo en la sd? :S


en linux (no soy muy experto) pero creo que todas estas cosas las puedes leer del directorio /proc (y creo que esta mapeado en memoria asi que no leerias realmente de la sd)

haz un ls de /proc y mira si hay algo alli ;)

Aiken

Darumo
08/06/2007, 21:27
por lo visto debes encontrar cual es el PID de tu programa y dentro de /proc/"PID"/stat deberia estar la info que quieres, al menos eso he leido por algunos foros de linux.

Aiken
08/06/2007, 23:23
tambien hay que decir que el /proc que que no es obligatorio que este en todos las maquinas que corren linux, puede estar desactivado o no tener soporte, pero vamos con hacer un ls del /proc y ver si hay algun dato lo sabras.

Aiken