Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1232 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  lib Java pour connaitre la charge du CPU

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lib Java pour connaitre la charge du CPU

n°1876390
liouan
Posté le 22-04-2009 à 18:02:28  profilanswer
 

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)

mood
Publicité
Posté le 22-04-2009 à 18:02:28  profilanswer
 

n°1895793
liouan
Posté le 16-06-2009 à 16:28:51  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  lib Java pour connaitre la charge du CPU

 

Sujets relatifs
Chat Java Open source[java] Une string en arraylist ?
Cherche Développeur Java J2EE et/ou .NETComment rendre un projet java simple, sous forme d'un plugin eclipse?
Environnement Java en dev professionnel ?Java, servlet et IPv6
Script java & scriptaculousexecution externe en java
urgent programmation javaProbléme avec java.lang.Runtime
Plus de sujets relatifs à : lib Java pour connaitre la charge du CPU


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR