trả lời câu hỏi của riêng tôi, P một số mã tôi đã viết ...
.210
NetworkData:
public class NetworkData {
static Map<String, Long> rxCurrentMap = new HashMap<String, Long>();
static Map<String, List<Long>> rxChangeMap = new HashMap<String, List<Long>>();
static Map<String, Long> txCurrentMap = new HashMap<String, Long>();
static Map<String, List<Long>> txChangeMap = new HashMap<String, List<Long>>();
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<Long> l : rxChangeMap.values())
l.clear();
for (List<Long> l : txChangeMap.values())
l.clear();
return new Long[] { totalrxDown, totaltxUp };
}
private static long getMetricData(Map<String, List<Long>> rxChangeMap) {
long total = 0;
for (Entry<String, List<Long>> 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<String, Long> currentMap,
Map<String, List<Long>> changeMap, String hwaddr, long current,
String ni) {
Long oldCurrent = currentMap.get(ni);
if (oldCurrent != null) {
List<Long> list = changeMap.get(hwaddr);
if (list == null) {
list = new LinkedList<Long>();
changeMap.put(hwaddr, list);
}
list.add((current - oldCurrent));
}
currentMap.put(ni, current);
}
}
CPU-Data:
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() > 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();
}
}
RAM dữ liệu:
public class RamData {
private static Sigar sigar;
private static Map<String, Long> 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<String, String> 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<String, String> map2 = getMetric();
for (Entry<String, String> 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<String, String> getMetric() throws SigarException {
Mem mem = sigar.getMem();
return (Map<String, String>) mem.toMap();
}
public static Map<String, String> getMetric(String pid)
throws SigarException {
if (pageFoults == null)
pageFoults = new HashMap<String, Long>();
ProcMem state = sigar.getProcMem(pid);
Map<String, String> map = new TreeMap<String, String>(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;
}
}
PROCES-Data:
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<String, String> getMetric() throws SigarException {
ProcStat state = sigar.getProcStat();
return (Map<String, String>) state.toMap();
}
public static Map<String, String> getMetric(String pid) throws SigarException {
ProcState state = sigar.getProcState(pid);
return (Map<String, String>) state.toMap();
}
public static long getPid() {
return sigar.getPid();
}
public static String getPidString() {
return ""+sigar.getPid();
}
}
Xin chào Tôi đang cố gắng lấy RamDATA bằng cách sử dụng ma cua ban. Vui lòng giải thích sự khác biệt giữa cư dân và kích thước của bộ nhớ –