`
wangrui
  • 浏览: 189563 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Sigar使用之:取得系统CPU的基本信息和使用率

阅读更多
我们经常有这样的需求,想得到系统CPU的基本信息、使用率等等。使用Sigar可以很好的完成这一需求。

通过Sigar我们可以获得CPU的基本信息有:vendor、model、mhz、cacheSize;CPU的统计信息有:user进程占用的百分比、sys进程占用的百分比、nice进程占用的百分比、idle进程占用的百分比、wait进程占用的百分比。

下面通过例子说明用法:

package lab.sigar;

import org.hyperic.sigar.Cpu;
import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

import com.thoughtworks.xstream.XStream;

/**
 * Cpu数据
 * 
 * 使用Sigar获得CPU的基本信息、使用百分比、使用时间
 * 
 */
public class CpuData {
	private CpuInfo info;
	private CpuPerc perc;
	private Cpu timer;

	public CpuData() {
	}

	public void populate(Sigar sigar) throws SigarException {
		info = sigar.getCpuInfoList()[0];
		perc = sigar.getCpuPerc();
		timer = sigar.getCpu();
	}

	public static CpuData gather(Sigar sigar) throws SigarException {
		CpuData data = new CpuData();
		data.populate(sigar);
		return data;
	}

	public static void main(String[] args) throws Exception {
		Sigar sigar = new Sigar();
		CpuData cpuData = CpuData.gather(sigar);
		XStream xstream = new XStream();
		xstream.alias("CpuData", CpuData.class);
		System.out.println(xstream.toXML(cpuData));
	}

}


输出:
<CpuData>
  <info>
    <vendor>Intel</vendor>
    <model>Pentium M</model>
    <mhz>1862</mhz>
    <cacheSize>-1</cacheSize>
  </info>
  <perc>
    <user>0.12574850299401197</user>
    <sys>0.031936127744510975</sys>
    <nice>0.0</nice>
    <idle>0.8423153692614771</idle>
    <wait>0.0</wait>
  </perc>
  <timer>
    <user>932250</user>
    <sys>520375</sys>
    <nice>0</nice>
    <idle>6366031</idle>
    <wait>0</wait>
    <total>7818656</total>
  </timer>
</CpuData>


2
0
分享到:
评论
2 楼 evangelionxb 2011-05-12  
import org.hyperic.sigar.CpuInfo;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.SigarException;

public class CpuState extends AppBase{

public CpuState(SigarBase sigarBase) {
super(sigarBase);
// TODO Auto-generated constructor stub
}

public CpuState(){
super();
}

private void output(CpuPerc cpuPerc){
        System.out.println("User Time....." + CpuPerc.format(cpuPerc.getUser()));
        System.out.println("Sys Time......" + CpuPerc.format(cpuPerc.getSys()));
        System.out.println("Idle Time....." + CpuPerc.format(cpuPerc.getIdle()));
        System.out.println("Wait Time....." + CpuPerc.format(cpuPerc.getWait()));
        System.out.println("Nice Time....." + CpuPerc.format(cpuPerc.getNice()));
        System.out.println("Combined......" + CpuPerc.format(cpuPerc.getCombined()));
        System.out.println("Irq Time......" + CpuPerc.format(cpuPerc.getIrq()));
       
        System.out.println("");
}


public void print(){
try {
CpuInfo[] cpuInfos = this.sigarProxy.getCpuInfoList();

System.out.println("Model: " + cpuInfos[0].getModel());
System.out.println("Vendor: " + cpuInfos[0].getVendor());
System.out.println("Mhz: " + cpuInfos[0].getMhz());
System.out.println();

CpuPerc[] cpuPercs = this.sigarProxy.getCpuPercList();
for(int i=0;i<cpuPercs.length;i++){
System.out.println("CPU "+(i+1));
output(cpuPercs[i]);
}

} catch (SigarException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static void main(String[] args) {
new CpuState().print();

}

}

楼主有机会交流下
1 楼 banditgao 2008-12-08  


楼主我看了这个项目了,代码确实好使,这个项目也确实不错。

但是我发现在ECLIPSE 里 RUN 带MAIN的能出结果,但是在WEB中,在ECLIPSE RCP中调用始终找不到类,报这个错误:

java.lang.NoClassDefFoundError: org/hyperic/sigar/Sigar

这个怎么办啊?试了好多办法都不行,楼主能否写个小小的例子工程,在GUI界面或者JSP调用SIGAR获得硬件信息啊?

如果可能请留个MSN啊。我邮箱sc-gameboy@163.com,谢谢楼主啊

相关推荐

    Sigar使用之:取得系统内存的数据

    程序用到的jar 博文链接:https://wangrui.iteye.com/blog/153002

    系统信息监控sigar

    SIGAR是由Hadoop项目的主要贡献者之一——Yammer(现为微软一部分)开发的,它提供了丰富的API,使得开发者能够轻松地在不同操作系统上收集系统级的数据,如CPU使用率、内存状态、网络流量、磁盘I/O等。 SIGAR库的...

    sigar读取系统信息.rar

    Sigar(System Information Gatherer and Reporter)是一款跨平台的开源库,它允许程序开发者轻松地获取操作系统和网络设备的各种信息,如CPU使用率、内存使用情况、网络接口统计、进程列表等。在"sigar读取系统信息...

    如何借助Sigar API获取CPU相关信息

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,它提供了一种简单的方法来获取操作系统级别的信息,包括CPU、内存、网络、磁盘和其他资源的状态。本项目将详细介绍如何利用...

    Sigar包相关

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,它提供了一种简单、统一的方式来获取操作系统的基本信息,包括但不限于内存状态、CPU使用率、进程信息、网络状态、磁盘I/O等...

    Sigar 使用详解

    Sigar(System Information Gatherer And Reporter),是一个开源的工具,提供了跨平台的系统信息收集的API,核心由C语言实现的。 Sigar资料地址:https://support.hyperic.com/display/SIGAR/Home Sigar提供了一...

    java使用sigar检测CPU占用率

    它用来从许多平台收集系统和处理信息. 这些平台包括:Linux, Windows, Solaris, AIX, HP-UX, FreeBSD and Mac OSX. Sigar有C,C#,Java和Perl API,java版的API为sigar.jar sigar.jar的底层是用C语言编写的,它通过...

    sigar的jar包及dll文件

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统度量工具,它允许开发者获取各种操作系统级别的信息,包括但不限于CPU使用率、内存状态、网络连接、文件系统统计等。这个压缩包包含了运行...

    hyperic-sigar-1.6.4相关文件

    SIGAR提供了一致的接口来获取各种操作系统的信息,如CPU使用率、内存状态、网络配置、进程信息等。 描述中提到的错误可能是在尝试使用SIGAR库时,由于缺少必要的库文件或者配置,导致程序无法正常运行。解决方法是...

    sigar 获取系统信息

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集库,它允许开发者以一致的方式获取多种操作系统上的系统状态信息,包括但不限于CPU使用率、内存利用率、磁盘使用情况等。...

    sigar 获取OS系统信息

    Sigar(System Information Gatherer and Reporter)是由Hyperic公司开发的一款跨平台的系统监控库,它提供了丰富的API,可以方便地获取操作系统级别的信息,包括CPU、内存、进程、磁盘等资源的使用情况。...

    hyperic-sigar-1.6.4完整源码

    CPU信息:包括基本信息(vendor、model、mhz、cacheSize)和统计信息(user、sys、idle、nice、wait) 文件系统信息:包括Filesystem、Size、Used、Avail、Use%、Type 事件信息:类似Service Control Manager 内存...

    使用sigar获取系统信息,内存,磁盘,jvm虚拟机等

    本项目主要关注如何使用Sigar库在Java环境下获取系统信息,特别是内存、磁盘和JVM虚拟机的相关数据。 一、获取系统内存信息 在Java中使用Sigar库获取系统内存信息,主要涉及以下几个方面: 1. **总内存**:通过`...

    sigar兼容linux和windows

    Sigar(System Information Gatherer and Reporter)是一款跨平台的系统信息收集库,它为开发者提供了一种简单的方式来获取操作系统及硬件的各种信息。Sigar库由Hypertable项目开发并维护,现在已成为Apache软件基金...

    sigar读取服务器CPU内存数据.zip

    Sigar(System Information Gatherer and Reporter)是一款强大的跨平台系统信息收集工具,它提供了一种简单的方法来获取操作系统的关键信息,如CPU使用率、内存使用情况、网络流量、磁盘I/O等。在Java中使用Sigar库...

    sigar使用教程

    - `sigar.getCpuPerc()` 或 `sigar.getCpuPercList()` 可以获取CPU使用率,包括用户使用量、系统使用量、空闲量和总使用量。 2. **内存信息获取**: - `sigar.getMem()` 可以获取物理内存的总量、已使用量和剩余...

    sigar-amd64-winnt.dllt实现windows操作系统CPU、内存等系统资源监控

    1. **CPU监控**:通过`sigar`库,开发者可以获取CPU的整体利用率、每个核心的利用率、用户模式和内核模式的CPU时间等数据。这对于分析系统负载、识别CPU瓶颈以及优化进程调度具有重要意义。 2. **内存管理**:`...

    基于java通过第三方jar包sigar的支持,完成对服务器系统的参数监控,包括CPU、内存、硬盘以及网络流量的实时监控.zip

    对于CPU监控,Sigar库允许我们获取系统整体CPU利用率,以及每个进程的CPU使用情况。这包括用户CPU时间、系统CPU时间、空闲时间和等待I/O的时间。通过这些数据,我们可以分析出服务器是否受到CPU瓶颈的影响,或者哪个...

Global site tag (gtag.js) - Google Analytics