lib Java pour connaitre la charge du CPU

lib Java pour connaitre la charge du CPU - Java - Programmation

Marsh Posté le 22-04-2009 à 18:02:28    

Bonjour,
 
Je souhaiterais pouvoir connaitre pendant l'exécution de mon programme:
-la charge du CPU totale.
-le % de CPU que prend ma JVM.
 
J'ai cherché sur le net et je suis tombé sur des méthodes en JNI assez compliquées et pour lesquelles il y a facilement moyen de se tromper.
Un autre moyen était de lancer des commandes sur la ligne de commande, de récupérer les résultats et de s'en servir, mais sous windows, j'ai pas trouvé de commande retournant d'information utile sur l'utilisation du proc pour un processus donné.
 
Connaissez vous une librairie toute faite svp? (quitte à être dépendant de l'OS, sachant que je tourne sous Windows)

Reply

Marsh Posté le 22-04-2009 à 18:02:28   

Reply

Marsh Posté le 16-06-2009 à 16:28:51    

j'ai laissé la question de coté pendant quasiment 1 mois, j'ai enfin trouvé une librarie qui me semble efficace: Sigar.
 
Je décris la manière dont je m'y prends:
 
1- obtenir le PID de ma JVM:
 
pour l'instant, rien à voir avec Sigar:
 
RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
 
//mx.getName() retourne   "[pid]@nomDeLaMachine"
String name = mx.getName();
 
//on fait un split sur le nom pour extraire le pid et on parse en int
int pid = Integer.parseInt(name.split("@" )[0]);
 
2-On se sert de Sigar pour obtenir l'utilisation du proc pour ce pid:
 
//on cree une instance d'objet ProcCpu (un objet de la librairie Sigar)
ProcCpu procCpu =new ProcCpu();
 
//on cree une instance d'objet Sigar
Sigar sigar= new Sigar();
 
//on affiche ensuite périodiquement l'utilisation du cpu par ce processus
 
while(true){
 Thread.sleep(1000);
 procCpu.gather(sigar, pid);
 System.out.println(procCpu.getSys());     //charge CPU system
 System.out.println(procCpu.getTotal());   //charge CPU totale
 System.out.println(procCpu.getPercent());//pourcentage de charge
}
 
Pour vérifier que ça me fournit bien des chiffres cohérents, j'ai utilisé Process Explorer (un utilitaire Windows qui permet d'avoir un aperçu détaillé de la charge du processeur). J'ai ensuite comparé les chiffres donnés par Process Explorer et les chiffres donnés par ce bout de code.
Au lieu de tracer sur le pid de la jvm courante, j'ai tracé sur le pid de mon firefox et j'ai pu constater que les résultats étaient fortement corrélés (ils ne peuvent pas être égaux étant donnés que les points de mesure ne peuvent pas se faire exactement au même moment)


Message édité par liouan le 16-06-2009 à 17:37:33
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed