[ agent ] [ status ] - accomplish agent status - 7
This commit is contained in:
@@ -3,6 +3,7 @@ package io.wdd.common.beans.status;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.experimental.SuperBuilder;
|
||||||
import oshi.hardware.CentralProcessor;
|
import oshi.hardware.CentralProcessor;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
@@ -19,10 +20,10 @@ public class CpuInfo {
|
|||||||
* CPU总线程
|
* CPU总线程
|
||||||
*/
|
*/
|
||||||
private Integer cpuTotal;
|
private Integer cpuTotal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CPU核心数
|
* CPU核心数
|
||||||
* */
|
*/
|
||||||
private Integer coreTotal;
|
private Integer coreTotal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,58 +54,16 @@ public class CpuInfo {
|
|||||||
/**
|
/**
|
||||||
* CPU型号信息
|
* CPU型号信息
|
||||||
*/
|
*/
|
||||||
private CentralProcessor.ProcessorIdentifier cpuModel;
|
private CpuModel cpuModel;
|
||||||
|
|
||||||
private double[] cpuLoadAverage;
|
private double[] cpuLoadAverage;
|
||||||
|
|
||||||
private double[] systemLoadAverage;
|
private double[] systemLoadAverage;
|
||||||
|
|
||||||
/**
|
public CpuInfo(CentralProcessor processor, long waitingTime) {
|
||||||
* CPU型号信息
|
|
||||||
*/
|
|
||||||
//private CpuTicks ticks;
|
|
||||||
|
|
||||||
|
|
||||||
public CpuInfo(CentralProcessor processor, long waitingTime){
|
|
||||||
this.init(processor, waitingTime);
|
this.init(processor, waitingTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取指定等待时间内系统CPU 系统使用率、用户使用率、利用率等等 相关信息
|
|
||||||
*
|
|
||||||
* @param processor {@link CentralProcessor}
|
|
||||||
* @param waitingTime 设置等待时间,单位毫秒
|
|
||||||
* @since 5.7.12
|
|
||||||
*/
|
|
||||||
private void init(CentralProcessor processor, long waitingTime) {
|
|
||||||
|
|
||||||
final CpuTicks ticks = new CpuTicks(processor, waitingTime);
|
|
||||||
//this.ticks = ticks;
|
|
||||||
|
|
||||||
this.cpuTotal = processor.getLogicalProcessorCount();
|
|
||||||
this.coreTotal = processor.getPhysicalProcessorCount();
|
|
||||||
|
|
||||||
this.cpuModel = processor.getProcessorIdentifier();
|
|
||||||
|
|
||||||
final long totalCpu = ticks.totalCpu();
|
|
||||||
this.cpuUsageTotol = totalCpu;
|
|
||||||
|
|
||||||
this.systemCpuUsage = formatDouble(ticks.cSys, totalCpu);
|
|
||||||
this.userCpuUsage = formatDouble(ticks.user, totalCpu);
|
|
||||||
|
|
||||||
this.wait = formatDouble(ticks.ioWait, totalCpu);
|
|
||||||
this.free = formatDouble(ticks.idle, totalCpu);
|
|
||||||
|
|
||||||
|
|
||||||
// system load average
|
|
||||||
this.systemLoadAverage = processor.getSystemLoadAverage(3);
|
|
||||||
|
|
||||||
// cpu load average
|
|
||||||
this.cpuLoadAverage = formatCpuLoadAverage(processor.getProcessorCpuLoad(waitingTime));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取每个CPU核心的tick,计算方式为 100 * tick / totalCpu
|
* 获取每个CPU核心的tick,计算方式为 100 * tick / totalCpu
|
||||||
*
|
*
|
||||||
@@ -125,7 +84,7 @@ public class CpuInfo {
|
|||||||
return Double.parseDouble(LOAD_FORMAT.format(doubleNum));
|
return Double.parseDouble(LOAD_FORMAT.format(doubleNum));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static double[] formatCpuLoadAverage(double[] cpuLoadAverage){
|
private static double[] formatCpuLoadAverage(double[] cpuLoadAverage) {
|
||||||
double[] result = new double[cpuLoadAverage.length];
|
double[] result = new double[cpuLoadAverage.length];
|
||||||
|
|
||||||
for (int i = 0; i < cpuLoadAverage.length; i++) {
|
for (int i = 0; i < cpuLoadAverage.length; i++) {
|
||||||
@@ -135,4 +94,71 @@ public class CpuInfo {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指定等待时间内系统CPU 系统使用率、用户使用率、利用率等等 相关信息
|
||||||
|
*
|
||||||
|
* @param processor {@link CentralProcessor}
|
||||||
|
* @param waitingTime 设置等待时间,单位毫秒
|
||||||
|
* @since 5.7.12
|
||||||
|
*/
|
||||||
|
private void init(CentralProcessor processor, long waitingTime) {
|
||||||
|
|
||||||
|
final CpuTicks ticks = new CpuTicks(processor, waitingTime);
|
||||||
|
//this.ticks = ticks;
|
||||||
|
|
||||||
|
this.cpuTotal = processor.getLogicalProcessorCount();
|
||||||
|
this.coreTotal = processor.getPhysicalProcessorCount();
|
||||||
|
|
||||||
|
this.cpuModel = mapFromProcessorIdentifier(processor.getProcessorIdentifier());
|
||||||
|
|
||||||
|
final long totalCpu = ticks.totalCpu();
|
||||||
|
this.cpuUsageTotol = totalCpu;
|
||||||
|
|
||||||
|
this.systemCpuUsage = formatDouble(ticks.cSys, totalCpu);
|
||||||
|
this.userCpuUsage = formatDouble(ticks.user, totalCpu);
|
||||||
|
|
||||||
|
this.wait = formatDouble(ticks.ioWait, totalCpu);
|
||||||
|
this.free = formatDouble(ticks.idle, totalCpu);
|
||||||
|
|
||||||
|
|
||||||
|
// system load average
|
||||||
|
this.systemLoadAverage = processor.getSystemLoadAverage(3);
|
||||||
|
|
||||||
|
// cpu load average
|
||||||
|
this.cpuLoadAverage = formatCpuLoadAverage(processor.getProcessorCpuLoad(waitingTime));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private CpuModel mapFromProcessorIdentifier(CentralProcessor.ProcessorIdentifier id) {
|
||||||
|
|
||||||
|
return CpuModel.builder()
|
||||||
|
.cpu64bit(id.isCpu64bit())
|
||||||
|
.name(id.getName())
|
||||||
|
.identifier(id.getIdentifier())
|
||||||
|
.microArch(id.getMicroarchitecture())
|
||||||
|
.vendor(id.getVendor())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CPU型号信息
|
||||||
|
*/
|
||||||
|
//private CpuTicks ticks;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@SuperBuilder(toBuilder = true)
|
||||||
|
private static class CpuModel {
|
||||||
|
String name;
|
||||||
|
|
||||||
|
String vendor;
|
||||||
|
|
||||||
|
String microArch;
|
||||||
|
|
||||||
|
boolean cpu64bit;
|
||||||
|
|
||||||
|
String identifier;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user