add thread cpu usage percent
This commit is contained in:
parent
fb98889e17
commit
60c864fd55
|
@ -28,6 +28,7 @@ public class CpuTimer implements CpuTimerMBean {
|
||||||
private long cpuTotal;
|
private long cpuTotal;
|
||||||
private long cpuUser;
|
private long cpuUser;
|
||||||
private long cpuSys;
|
private long cpuSys;
|
||||||
|
private double cpuPercent;
|
||||||
|
|
||||||
private ThreadCpu cpu = new ThreadCpu();
|
private ThreadCpu cpu = new ThreadCpu();
|
||||||
|
|
||||||
|
@ -47,6 +48,7 @@ public class CpuTimer implements CpuTimerMBean {
|
||||||
this.cpuTotal = 0;
|
this.cpuTotal = 0;
|
||||||
this.cpuUser = 0;
|
this.cpuUser = 0;
|
||||||
this.cpuSys = 0;
|
this.cpuSys = 0;
|
||||||
|
this.cpuPercent = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(CpuTimer timer) {
|
public void add(CpuTimer timer) {
|
||||||
|
@ -81,11 +83,13 @@ public class CpuTimer implements CpuTimerMBean {
|
||||||
this.cpuUser += diff.user;
|
this.cpuUser += diff.user;
|
||||||
this.cpuSys += diff.sys;
|
this.cpuSys += diff.sys;
|
||||||
|
|
||||||
long stopTime = System.currentTimeMillis();
|
long timeNow = System.currentTimeMillis();
|
||||||
|
|
||||||
long time = stopTime - this.startTime;
|
double timeDiff = timeNow - this.startTime;
|
||||||
|
|
||||||
this.totalTime += time;
|
this.totalTime += timeDiff;
|
||||||
|
|
||||||
|
this.cpuPercent = toMillis(diff.total) / timeDiff;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ThreadCpu getDiff() {
|
public ThreadCpu getDiff() {
|
||||||
|
@ -116,16 +120,24 @@ public class CpuTimer implements CpuTimerMBean {
|
||||||
return this.totalTime;
|
return this.totalTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private long toMillis(long ns) {
|
||||||
|
return ns / 1000000; //convert nanos to millis
|
||||||
|
}
|
||||||
|
|
||||||
public long getCpuTotal() {
|
public long getCpuTotal() {
|
||||||
return this.cpuTotal / 1000000; //convert nanos to millis
|
return toMillis(this.cpuTotal);
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getCpuUser() {
|
public long getCpuUser() {
|
||||||
return this.cpuUser / 1000000; //convert nanos to millis
|
return toMillis(this.cpuUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getCpuSys() {
|
public long getCpuSys() {
|
||||||
return this.cpuSys / 1000000; //convert nanos to millis
|
return toMillis(this.cpuSys / 1000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getCpuUsage() {
|
||||||
|
return this.cpuPercent;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String format(long elap) {
|
public String format(long elap) {
|
||||||
|
@ -148,5 +160,6 @@ public class CpuTimer implements CpuTimerMBean {
|
||||||
format(getTotalTime()));
|
format(getTotalTime()));
|
||||||
out.println("user....." + format(getCpuUser()));
|
out.println("user....." + format(getCpuUser()));
|
||||||
out.println("sys......" + format(getCpuSys()));
|
out.println("sys......" + format(getCpuSys()));
|
||||||
|
out.println("usage...." + CpuPerc.format(getCpuUsage()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,5 +26,7 @@ public interface CpuTimerMBean {
|
||||||
|
|
||||||
public long getCpuSys();
|
public long getCpuSys();
|
||||||
|
|
||||||
|
public double getCpuUsage();
|
||||||
|
|
||||||
public long getTotalTime();
|
public long getTotalTime();
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
package org.hyperic.sigar.test;
|
package org.hyperic.sigar.test;
|
||||||
|
|
||||||
|
import org.hyperic.sigar.CpuPerc;
|
||||||
import org.hyperic.sigar.CpuTimer;
|
import org.hyperic.sigar.CpuTimer;
|
||||||
import org.hyperic.sigar.Sigar;
|
import org.hyperic.sigar.Sigar;
|
||||||
import org.hyperic.sigar.SigarNotImplementedException;
|
import org.hyperic.sigar.SigarNotImplementedException;
|
||||||
|
@ -46,19 +47,29 @@ public class TestThreadCpu extends SigarTestCase {
|
||||||
assertGtEqZeroTrace("Total", cpu.getTotal());
|
assertGtEqZeroTrace("Total", cpu.getTotal());
|
||||||
|
|
||||||
CpuTimer timer = new CpuTimer(sigar);
|
CpuTimer timer = new CpuTimer(sigar);
|
||||||
|
timer.start();
|
||||||
|
|
||||||
for (int i=0; i<1000000; i++) {
|
for (int i=0; i<1000000; i++) {
|
||||||
System.getProperty("java.home");
|
System.getProperty("java.home");
|
||||||
}
|
}
|
||||||
|
|
||||||
traceln("\nDiff...\n");
|
String sleepTime =
|
||||||
|
System.getProperty("sigar.testThreadCpu.sleep");
|
||||||
|
if (sleepTime != null) {
|
||||||
|
Thread.sleep(Integer.parseInt(sleepTime) * 1000);
|
||||||
|
}
|
||||||
|
timer.stop();
|
||||||
|
|
||||||
ThreadCpu diff = timer.getDiff();
|
traceln("\nUsage...\n");
|
||||||
|
|
||||||
assertGtEqZeroTrace("User", diff.getUser());
|
assertGtEqZeroTrace("User", timer.getCpuUser());
|
||||||
|
|
||||||
assertGtEqZeroTrace("Sys", diff.getSys());
|
assertGtEqZeroTrace("Sys", timer.getCpuSys());
|
||||||
|
|
||||||
assertGtEqZeroTrace("Total", diff.getTotal());
|
assertGtEqZeroTrace("Total", timer.getCpuTotal());
|
||||||
|
|
||||||
|
assertGtEqZeroTrace("Real Time", timer.getTotalTime());
|
||||||
|
|
||||||
|
traceln("Cpu Percent=" + CpuPerc.format(timer.getCpuUsage()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue