[ agent ] [ status ] - accomplish agent status - 7

This commit is contained in:
zeaslity
2023-01-05 16:01:10 +08:00
parent 143b3b44ef
commit 4fe56fc35f

View File

@@ -3,6 +3,7 @@ package io.wdd.common.beans.status;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import oshi.hardware.CentralProcessor;
import java.text.DecimalFormat;
@@ -22,7 +23,7 @@ public class CpuInfo {
/**
* CPU核心数
* */
*/
private Integer coreTotal;
/**
@@ -53,58 +54,16 @@ public class CpuInfo {
/**
* CPU型号信息
*/
private CentralProcessor.ProcessorIdentifier cpuModel;
private CpuModel cpuModel;
private double[] cpuLoadAverage;
private double[] systemLoadAverage;
/**
* CPU型号信息
*/
//private CpuTicks ticks;
public CpuInfo(CentralProcessor processor, long waitingTime){
public CpuInfo(CentralProcessor processor, long 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
*
@@ -125,7 +84,7 @@ public class CpuInfo {
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];
for (int i = 0; i < cpuLoadAverage.length; i++) {
@@ -135,4 +94,71 @@ public class CpuInfo {
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;
}
}