web-dev-qa-db-fra.com

Comment obtenir le pourcentage d'utilisation du processeur du système d'exploitation à partir de java

Je veux calculer le pourcentage d'utilisation du processeur du système d'exploitation à partir de Java.

  1. Il existe plusieurs façons de le trouver par la commande unix [par exemple en utilisant mpstat, /proc/stat etc ...] et utilisez-le depuis Runtime.getRuntime().exec

Mais je ne veux pas utiliser les appels système.

J'ai essayé ManagementFactory.getOperatingSystemMXBean()

OperatingSystemMXBean osBean =
         (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(osBean.getSystemLoadAverage());

Mais cela donne la charge du processeur mais pas l'utilisation du processeur. Est-il possible de trouver le pourcentage d'utilisation?

25
G.S

Dans Java 7 vous pouvez l'obtenir comme ceci:

public static double getProcessCpuLoad() throws Exception {

    MBeanServer mbs    = ManagementFactory.getPlatformMBeanServer();
    ObjectName name    = ObjectName.getInstance("Java.lang:type=OperatingSystem");
    AttributeList list = mbs.getAttributes(name, new String[]{ "ProcessCpuLoad" });

    if (list.isEmpty())     return Double.NaN;

    Attribute att = (Attribute)list.get(0);
    Double value  = (Double)att.getValue();

    // usually takes a couple of seconds before we get real values
    if (value == -1.0)      return Double.NaN;
    // returns a percentage value with 1 decimal point precision
    return ((int)(value * 1000) / 10.0);
}
37
isapir

Vous pouvez utiliser SIGAR API . Il est multiplateforme (mais je ne l'utilise que sur Windows).

Le Javadoc est disponible ici et les binaires sont ici

Il est sous licence selon les termes de la licence Apache 2.0.

0
Julien