import java.util.Map;
import org.hyperic.sigar.Cpu;
import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.NetInfo;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarException;

public class CPUUsage {

    public static void main(String[] args) throws SigarException {
        Sigar sigar = new Sigar();
        NetInfo netInfo = sigar.getNetInfo();
        System.out.println("網路資訊:");
        System.out.println("Gateway:" + netInfo.getDefaultGateway());
        System.out.println("Domain name:" + netInfo.getDomainName());
        System.out.println("Primary dns:" + netInfo.getPrimaryDns());
        System.out.println("--------------------------------------");

        System.out.println("PID:" + sigar.getPid()); // 輸出當前 Java 進程 的 PID
        Map map = sigar.getProcEnv(sigar.getPid()); // 進程環境
        System.out.println("--------------------------------------");

        System.out.println("CPU :");
        Cpu cpu = sigar.getCpu();
        System.out.println("Idle: " + cpu.getIdle()); // 取得系統 CPU 空閒時間
        System.out.println("Irq: " + cpu.getIrq());
        System.out.println("Nice: " + cpu.getNice());
        System.out.println("Soft irq: " + cpu.getSoftIrq());
        System.out.println("Stolen: " + cpu.getStolen());
        System.out.println("Sys: " + cpu.getSys());
        System.out.println("Total: " + cpu.getTotal());
        System.out.println("User: " + cpu.getUser());
        System.out.println();

        //------------------------------------------
        new Thread(() -> {
            while (true) {
                try {
                    System.out.println("--------------------------------------");
                    CpuPerc perc = sigar.getCpuPerc();
                    System.out.println("整體 CPU 使用率:");
                    System.out.print("閒置:" + (int) (perc.getIdle() * 100) + " %");
                    System.out.print("\t");
                    System.out.println("使用:" + (int) (perc.getCombined() * 100) + " %");
                    System.out.println("----------");

                    CpuPerc[] cpuPercs = sigar.getCpuPercList();
                    System.out.println("所有 CPU 使用率:");
                    for (CpuPerc cpuPerc : cpuPercs) {
                        System.out.print("閒置:" + (int) (cpuPerc.getIdle() * 100) + " %");
                        System.out.print("\t");
                        System.out.println("使用:" + (int) (cpuPerc.getCombined() * 100) + " %");
                    }
                    Thread.sleep(1000);
                } catch (Exception e) {
                }
            }
        }).start();
    }
}

輸出結果:

網路資訊:
Gateway:0.0.0.0
Domain name:
Primary dns:192.168.1.1
--------------------------------------
PID:1732
--------------------------------------
CPU :
Idle: 29208608
Irq: 91062
Nice: 0
Soft irq: 0
Stolen: 0
Sys: 1969232
Total: 85056364
User: 2844405

--------------------------------------
整體 CPU 使用率:
閒置:74 % 使用:24 %
----------
所有 CPU 使用率:
閒置:90 % 使用:9 %
閒置:100 % 使用:0 %
閒置:93 % 使用:6 %
閒置:100 % 使用:0 %
--------------------------------------
整體 CPU 使用率:
閒置:96 % 使用:3 %
----------
所有 CPU 使用率:
閒置:96 % 使用:3 %
閒置:92 % 使用:7 %
閒置:100 % 使用:0 %
閒置:100 % 使用:0 %
--------------------------------------
整體 CPU 使用率:
閒置:97 % 使用:2 %
----------
所有 CPU 使用率:
閒置:95 % 使用:4 %
閒置:95 % 使用:4 %
閒置:98 % 使用:1 %
閒置:100 % 使用:0 %








創作者介紹
創作者 黃彥霖 的頭像
黃彥霖

彥霖 實驗筆記

黃彥霖 發表在 痞客邦 留言(0) 人氣()