Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>answering my own question ;P some code i have written...</p> <p>NetworkData:</p> <pre><code>public class NetworkData { static Map&lt;String, Long&gt; rxCurrentMap = new HashMap&lt;String, Long&gt;(); static Map&lt;String, List&lt;Long&gt;&gt; rxChangeMap = new HashMap&lt;String, List&lt;Long&gt;&gt;(); static Map&lt;String, Long&gt; txCurrentMap = new HashMap&lt;String, Long&gt;(); static Map&lt;String, List&lt;Long&gt;&gt; txChangeMap = new HashMap&lt;String, List&lt;Long&gt;&gt;(); private static Sigar sigar; /** * @throws InterruptedException * @throws SigarException * */ public NetworkData(Sigar s) throws SigarException, InterruptedException { sigar = s; getMetric(); System.out.println(networkInfo()); Thread.sleep(1000); } public static void main(String[] args) throws SigarException, InterruptedException { new NetworkData(new Sigar()); NetworkData.startMetricTest(); } public static String networkInfo() throws SigarException { String info = sigar.getNetInfo().toString(); info += "\n"+ sigar.getNetInterfaceConfig().toString(); return info; } public static String getDefaultGateway() throws SigarException { return sigar.getNetInfo().getDefaultGateway(); } public static void startMetricTest() throws SigarException, InterruptedException { while (true) { Long[] m = getMetric(); long totalrx = m[0]; long totaltx = m[1]; System.out.print("totalrx(download): "); System.out.println("\t" + Sigar.formatSize(totalrx)); System.out.print("totaltx(upload): "); System.out.println("\t" + Sigar.formatSize(totaltx)); System.out.println("-----------------------------------"); Thread.sleep(1000); } } public static Long[] getMetric() throws SigarException { for (String ni : sigar.getNetInterfaceList()) { // System.out.println(ni); NetInterfaceStat netStat = sigar.getNetInterfaceStat(ni); NetInterfaceConfig ifConfig = sigar.getNetInterfaceConfig(ni); String hwaddr = null; if (!NetFlags.NULL_HWADDR.equals(ifConfig.getHwaddr())) { hwaddr = ifConfig.getHwaddr(); } if (hwaddr != null) { long rxCurrenttmp = netStat.getRxBytes(); saveChange(rxCurrentMap, rxChangeMap, hwaddr, rxCurrenttmp, ni); long txCurrenttmp = netStat.getTxBytes(); saveChange(txCurrentMap, txChangeMap, hwaddr, txCurrenttmp, ni); } } long totalrxDown = getMetricData(rxChangeMap); long totaltxUp = getMetricData(txChangeMap); for (List&lt;Long&gt; l : rxChangeMap.values()) l.clear(); for (List&lt;Long&gt; l : txChangeMap.values()) l.clear(); return new Long[] { totalrxDown, totaltxUp }; } private static long getMetricData(Map&lt;String, List&lt;Long&gt;&gt; rxChangeMap) { long total = 0; for (Entry&lt;String, List&lt;Long&gt;&gt; entry : rxChangeMap.entrySet()) { int average = 0; for (Long l : entry.getValue()) { average += l; } total += average / entry.getValue().size(); } return total; } private static void saveChange(Map&lt;String, Long&gt; currentMap, Map&lt;String, List&lt;Long&gt;&gt; changeMap, String hwaddr, long current, String ni) { Long oldCurrent = currentMap.get(ni); if (oldCurrent != null) { List&lt;Long&gt; list = changeMap.get(hwaddr); if (list == null) { list = new LinkedList&lt;Long&gt;(); changeMap.put(hwaddr, list); } list.add((current - oldCurrent)); } currentMap.put(ni, current); } } </code></pre> <p>CPU-Data:</p> <pre><code>public class CpuData { private static Sigar sigar; public CpuData(Sigar s) throws SigarException { sigar = s; System.out.println(cpuInfo()); } public static void main(String[] args) throws InterruptedException, SigarException { new CpuData(new Sigar()); CpuData.startMetricTest(); } private static void startMetricTest() throws InterruptedException, SigarException { new Thread() { public void run() { while(true) BigInteger.probablePrime(MAX_PRIORITY, new Random()); }; }.start(); while(true) { String pid = ""+sigar.getPid(); System.out.print(getMetric(pid)); for(Double d:getMetric()){ System.out.print("\t"+d); } System.out.println(); Thread.sleep(1000); } } public String cpuInfo() throws SigarException { CpuInfo[] infos = sigar.getCpuInfoList(); CpuInfo info = infos[0]; String infoString = info.toString(); if ((info.getTotalCores() != info.getTotalSockets()) || (info.getCoresPerSocket() &gt; info.getTotalCores())) { infoString+=" Physical CPUs: " + info.getTotalSockets(); infoString+=" Cores per CPU: " + info.getCoresPerSocket(); } long cacheSize = info.getCacheSize(); if (cacheSize != Sigar.FIELD_NOTIMPL) { infoString+="Cache size...." + cacheSize; } return infoString; } public static Double[] getMetric() throws SigarException { CpuPerc cpu = sigar.getCpuPerc(); double system = cpu.getSys(); double user = cpu.getUser(); double idle = cpu.getIdle(); // System.out.println("idle: " +CpuPerc.format(idle) +", system: "+CpuPerc.format(system)+ ", user: "+CpuPerc.format(user)); return new Double[] {system, user, idle}; } public static double getMetric(String pid) throws SigarException { ProcCpu cpu = sigar.getProcCpu(pid); // System.out.println(sigar.getProcFd(pid)); // System.err.println(cpu.toString()); return cpu.getPercent(); } } </code></pre> <p>RAM-Data:</p> <pre><code>public class RamData { private static Sigar sigar; private static Map&lt;String, Long&gt; pageFoults; public RamData(Sigar s) throws SigarException { sigar = s; System.out.println(getMetric().toString()); } public static void main(String[] args) throws SigarException, InterruptedException { new RamData(new Sigar()); RamData.startMetricTest(); } public static void startMetricTest() throws SigarException, InterruptedException { while (true) { Map&lt;String, String&gt; map = RamData.getMetric("" + sigar.getPid()); System.out.println("Resident: \t\t" + Sigar.formatSize(Long.valueOf(map.get("Resident")))); System.out.println("PageFaults: \t\t" + map.get("PageFaults")); System.out.println("PageFaultsTotal:\t" + map.get("PageFaultsTotal")); System.out.println("Size: \t\t" + Sigar.formatSize(Long.valueOf(map.get("Size")))); Map&lt;String, String&gt; map2 = getMetric(); for (Entry&lt;String, String&gt; e : map2.entrySet()) { String s; try { s = Sigar.formatSize(Long.valueOf(e.getValue())); } catch (NumberFormatException ex) { s = ((int) (double) Double.valueOf(e.getValue())) + "%"; } System.out.print(" " + e.getKey() + ": " + s); } System.out.println("\n------------------"); Thread.sleep(1000); } } public static Map&lt;String, String&gt; getMetric() throws SigarException { Mem mem = sigar.getMem(); return (Map&lt;String, String&gt;) mem.toMap(); } public static Map&lt;String, String&gt; getMetric(String pid) throws SigarException { if (pageFoults == null) pageFoults = new HashMap&lt;String, Long&gt;(); ProcMem state = sigar.getProcMem(pid); Map&lt;String, String&gt; map = new TreeMap&lt;String, String&gt;(state.toMap()); if (!pageFoults.containsKey(pid)) pageFoults.put(pid, state.getPageFaults()); map.put("PageFaults", "" + (state.getPageFaults() - pageFoults.get(pid))); map.put("PageFaultsTotal", ""+state.getPageFaults()); return map; } } </code></pre> <p>PROCES-Data:</p> <pre><code>public class ProcessData { private static Sigar sigar; public ProcessData(Sigar s) throws SigarException { this.sigar = s; System.out.println(getMetric().toString()); System.out.println(getMetric(getPidString()).toString()); } public static void main(String[] args) throws SigarException { new ProcessData(new Sigar()); System.out.println(ProcessData.getMetric()); System.out.println(ProcessData.getMetric(getPidString())); } public static Map&lt;String, String&gt; getMetric() throws SigarException { ProcStat state = sigar.getProcStat(); return (Map&lt;String, String&gt;) state.toMap(); } public static Map&lt;String, String&gt; getMetric(String pid) throws SigarException { ProcState state = sigar.getProcState(pid); return (Map&lt;String, String&gt;) state.toMap(); } public static long getPid() { return sigar.getPid(); } public static String getPidString() { return ""+sigar.getPid(); } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload