Newsgroup: it.comp.os.linux.development
Titolo: carico cpu

Salve,
    sto sviluppando un'applicazione che deve effettuare delle operazioni in
base al carico cpu.
Non sono però riuscito a trovare un modo efficiente di avere i parametri del
carico cpu degli ultimi 1-5-15 minuti come mostrato da ps, uptime, top...
avete qualche idea?
non vorrei fare una system("uptime...") e catturare l'output per fare il
parsing e quindi leggere i 3 valori: sarebbe troppo inefficiente.
ho provato a leggere /proc/loadavg ma su 3,4 macchine provate da sempre
valori 0 0 0 più altri due valori che non mi sembrano troppo significativi
(x quanto devo fare)
Grazie!


prova un po' a vedere se con questo devel magari risolvi...
libgtop-devel
esempio per vedere i .h installati .. (se ne hai ... ma credo di si)
[root@ProXima root]# rpm -qa | grep -i gtop
gtop-1.0.13-ximian.1
libgtop-examples-1.0.12-4
libgtop-1.0.12-ximian.3
libgtop-devel-1.0.12-ximian.3
[root@ProXima root]# rpm -ql libgtop-devel-1.0.12-ximian.3
/usr/bin/libgtop-config
/usr/include/glibtop.h
/usr/include/glibtop/close.h
/usr/include/glibtop/command.h
/usr/include/glibtop/cpu.h
/usr/include/glibtop/error.h
/usr/include/glibtop/fsusage.h
/usr/include/glibtop/global.h
/usr/include/glibtop/gnuserv.h
/usr/include/glibtop/inodedb.h
/usr/include/glibtop/loadavg.h
/usr/include/glibtop/mem.h
/usr/include/glibtop/mountlist.h
/usr/include/glibtop/msg_limits.h
/usr/include/glibtop/netload.h
/usr/include/glibtop/open.h
/usr/include/glibtop/parameter.h
/usr/include/glibtop/ppp.h
/usr/include/glibtop/procargs.h
/usr/include/glibtop/prockernel.h
/usr/include/glibtop/proclist.h
/usr/include/glibtop/procmap.h
/usr/include/glibtop/procmem.h
/usr/include/glibtop/procsegment.h
/usr/include/glibtop/procsignal.h
/usr/include/glibtop/procstate.h
/usr/include/glibtop/proctime.h
/usr/include/glibtop/procuid.h
/usr/include/glibtop/read.h
/usr/include/glibtop/read_data.h
/usr/include/glibtop/sem_limits.h
/usr/include/glibtop/shm_limits.h
/usr/include/glibtop/signal.h
/usr/include/glibtop/swap.h
/usr/include/glibtop/sysdeps.h
/usr/include/glibtop/sysinfo.h
/usr/include/glibtop/types.h
/usr/include/glibtop/union.h
/usr/include/glibtop/uptime.h
/usr/include/glibtop/version.h
/usr/include/glibtop/write.h
/usr/include/glibtop/xmalloc.h
/usr/include/glibtop_machine.h
/usr/include/glibtop_server.h
/usr/lib/libgtop-features.def
/usr/lib/libgtop.a
/usr/lib/
libgtop.la
/usr/lib/libgtopConf.sh
/usr/lib/libgtop_common.a
/usr/lib/
libgtop_common.la
/usr/lib/libgtop_guile.a
/usr/lib/
libgtop_guile.la
/usr/lib/libgtop_guile_names.a
/usr/lib/
libgtop_guile_names.la
/usr/lib/libgtop_names.a
/usr/lib/
libgtop_names.la
/usr/lib/libgtop_suid_common.a
/usr/lib/
libgtop_suid_common.la
/usr/lib/libgtop_sysdeps.a
/usr/lib/
libgtop_sysdeps.la
[root@ProXima root]#
ciao.

 carico cpu degli ultimi 1-5-15 minuti come mostrato da ps, uptime, top...
cat /proc/loadavg
Non e` molto portabile perche` funziona (credo) solo sotto Linux. Per gli
altri OS dovresti trovare altri modi.
Bye.

 (x quanto devo fare)
Puoi usare sysinfo(2). Non e` portabile, ma questo newsgroup porta o no 
la parola "linux" nel nome? ;-)
Per la cronaca:
- hai visto '0 0 0' perche' le macchine erano scariche da un po' di
   tempo;
- gli altri due numeri che leggi in /proc/loadavg sono la frazione
   (numero processi running)/(numero processi totali) e l'ultimo PID
   assegnato.
Ciao
  David
-- 
<d.santinoli presso mi. flashnet. it>

 
Ciao
se ti interessa proprio il carico (ovvero il load average) devi
necessariamente leggere
/proc/loadavg (se non ti funziona, ci sono problemi di compilazione del
kernel; a me con
RH7.2 e kernel standard funziona perfettamente).
Ma se vuoi fare qualcosa di piu' raffinato (tipo considerare l'uso di
cpu in user space e 
system space devi leggere il primo e il terzo campo della prima riga del
file (/proc/stat) per kernel 2.4.x. Quei valori sono il numero di
centesimi di secondo che la cpu ha speso
 in user mode e system mode dal boot del sistema.
Leggiti molto bene la man page di proc (man proc). Io sto scrivendo
codide C per monitorare
il sistema in real time (cioe' per graficare ogni 10 secondi lo stato
della macchina) e sia
/proc/loadavg che /proc/stat (piu' tutto il resto che sta sotto /proc)
sono le uniche 
fonti di informazione che ho trovato in mesi di ricerca (a meno di non
impazzire programmando in kernel space e leggendo direttamente le sue
strutture dati che si
manifestano al mondo proprio tramite proc !)
Ciao e buon lavoro
 
	Alvise


 Non sono però riuscito a trovare un modo efficiente di avere i parametri del


 Non sono però riuscito a trovare un modo efficiente di avere i parametri del


 Non sono però riuscito a trovare un modo efficiente di avere i parametri del
