我们经常有这样的需求,想得到系统CPU的基本信息、使用率等等。使用Sigar可以很好的完成这一需求。
通过Sigar我们可以获得CPU的基本信息有:vendor、model、mhz、cacheSize;CPU的统计信息有:user进程占用的百分比、sys进程占用的百分比、nice进程占用的百分比、idle进程占用的百分比、wait进程占用的百分比。
下面通过例子说明用法:
1.package lab.sigar;
2.
3.import org.hyperic.sigar.Cpu;
4.import org.hyperic.sigar.CpuInfo;
5.import org.hyperic.sigar.CpuPerc;
6.import org.hyperic.sigar.Sigar;
7.import org.hyperic.sigar.SigarException;
8.
9.import com.thoughtworks.xstream.XStream;
10.
11./**
12. * Cpu数据
13. *
14. * 使用Sigar获得CPU的基本信息、使用百分比、使用时间
15. *
16. */
17.public class CpuData {
18. private CpuInfo info;
19. private CpuPerc perc;
20. private Cpu timer;
21.
22. public CpuData() {
23. }
24.
25. public void populate(Sigar sigar) throws SigarException {
26. info = sigar.getCpuInfoList()[0];
27. perc = sigar.getCpuPerc();
28. timer = sigar.getCpu();
29. }
30.
31. public static CpuData gather(Sigar sigar) throws SigarException {
32. CpuData data = new CpuData();
33. data.populate(sigar);
34. return data;
35. }
36.
37. public static void main(String[] args) throws Exception {
38. Sigar sigar = new Sigar();
39. CpuData cpuData = CpuData.gather(sigar);
40. XStream xstream = new XStream();
41. xstream.alias("CpuData", CpuData.class);
42. System.out.println(xstream.toXML(cpuData));
43. }
44.
45.}
输出:
1.<CpuData> 2. <info> 3. <vendor>Intel</vendor> 4. <model>Pentium M</model> 5. <mhz>1862</mhz> 6. <cacheSize>-1</cacheSize> 7. </info> 8. <perc> 9. <user>0.12574850299401197</user> 10. <sys>0.031936127744510975</sys> 11. <nice>0.0</nice> 12. <idle>0.8423153692614771</idle> 13. <wait>0.0</wait> 14. </perc> 15. <timer> 16. <user>932250</user> 17. <sys>520375</sys> 18. <nice>0</nice> 19. <idle>6366031</idle> 20. <wait>0</wait> 21. <total>7818656</total> 22. </timer> 23.</CpuData>