diff --git a/photon-client/src/views/SettingsViews/General.vue b/photon-client/src/views/SettingsViews/General.vue index a6d2cd8b5..412bbc380 100644 --- a/photon-client/src/views/SettingsViews/General.vue +++ b/photon-client/src/views/SettingsViews/General.vue @@ -49,22 +49,46 @@ Disk Usage + + + + + Current or Previous Reason for the cpu being held back from maximum performance. + + + + + CPU Uptime + - {{ metrics.cpuUtil.replace(" ", "") }}% + {{ metrics.cpuUtil }}% {{ parseInt(metrics.cpuTemp) }}° C - {{ metrics.ramUtil.replace(" ", "") }}MB of {{ metrics.cpuMem }}MB + {{ metrics.ramUtil }}MB of {{ metrics.cpuMem }}MB - {{ metrics.gpuMemUtil.replace(" ", "") }}MB of {{ metrics.gpuMem }}MB + {{ metrics.gpuMemUtil }}MB of {{ metrics.gpuMem }}MB - {{ metrics.diskUtilPct.replace(" ", "") }} + {{ metrics.diskUtilPct }} + + + {{ metrics.cpuThr }} + + + {{ metrics.cpuUptime }} @@ -83,6 +107,12 @@ --- + + --- + + + --- + diff --git a/photon-core/src/main/java/org/photonvision/common/configuration/HardwareConfig.java b/photon-core/src/main/java/org/photonvision/common/configuration/HardwareConfig.java index dd31a3872..7060e6307 100644 --- a/photon-core/src/main/java/org/photonvision/common/configuration/HardwareConfig.java +++ b/photon-core/src/main/java/org/photonvision/common/configuration/HardwareConfig.java @@ -41,6 +41,8 @@ public class HardwareConfig { public final String cpuTempCommand; public final String cpuMemoryCommand; public final String cpuUtilCommand; + public final String cpuThrottleReasonCmd; + public final String cpuUptimeCommand; public final String gpuMemoryCommand; public final String ramUtilCommand; public final String gpuMemUsageCommand; @@ -65,6 +67,8 @@ public class HardwareConfig { cpuTempCommand = ""; cpuMemoryCommand = ""; cpuUtilCommand = ""; + cpuThrottleReasonCmd = ""; + cpuUptimeCommand = ""; gpuMemoryCommand = ""; ramUtilCommand = ""; ledBlinkCommand = ""; @@ -91,6 +95,8 @@ public class HardwareConfig { String cpuTempCommand, String cpuMemoryCommand, String cpuUtilCommand, + String cpuThrottleReasonCmd, + String cpuUptimeCommand, String gpuMemoryCommand, String ramUtilCommand, String gpuMemUsageCommand, @@ -111,6 +117,8 @@ public class HardwareConfig { this.cpuTempCommand = cpuTempCommand; this.cpuMemoryCommand = cpuMemoryCommand; this.cpuUtilCommand = cpuUtilCommand; + this.cpuThrottleReasonCmd = cpuThrottleReasonCmd; + this.cpuUptimeCommand = cpuUptimeCommand; this.gpuMemoryCommand = gpuMemoryCommand; this.ramUtilCommand = ramUtilCommand; this.gpuMemUsageCommand = gpuMemUsageCommand; diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/CPUMetrics.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/CPUMetrics.java index 4de85f0c2..36cb023a4 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/CPUMetrics.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/CPUMetrics.java @@ -40,4 +40,12 @@ public class CPUMetrics extends MetricsBase { public String getUtilization() { return execute(cpuUtilizationCommand); } + + public String getUptime() { + return execute(cpuUptimeCommand); + } + + public String getThrottleReason() { + return execute(cpuThrottleReasonCmd); + } } diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsBase.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsBase.java index 192d76f61..ef19a2b6a 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsBase.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsBase.java @@ -26,7 +26,7 @@ import org.photonvision.common.logging.Logger; import org.photonvision.common.util.ShellExec; public abstract class MetricsBase { - private static final Logger logger = new Logger(MetricsBase.class, LogGroup.General); + static final Logger logger = new Logger(MetricsBase.class, LogGroup.General); // CPU public static String cpuMemoryCommand = "vcgencmd get_mem arm | grep -Eo '[0-9]+'"; public static String cpuTemperatureCommand = @@ -34,6 +34,15 @@ public abstract class MetricsBase { public static String cpuUtilizationCommand = "top -bn1 | grep \"Cpu(s)\" | sed \"s/.*, *\\([0-9.]*\\)%* id.*/\\1/\" | awk '{print 100 - $1}'"; + public static String cpuThrottleReasonCmd = + "if (( $(( $(vcgencmd get_throttled | grep -Eo 0x[0-9a-fA-F]*) & 0x01 )) != 0x00 )); then echo \"LOW VOLTAGE\"; " + + "elif (( $(( $(vcgencmd get_throttled | grep -Eo 0x[0-9a-fA-F]*) & 0x08 )) != 0x00 )); then echo \"HIGH TEMP\"; " + + "elif (( $(( $(vcgencmd get_throttled | grep -Eo 0x[0-9a-fA-F]*) & 0x10000 )) != 0x00 )); then echo \"Prev. Low Voltage\"; " + + "elif (( $(( $(vcgencmd get_throttled | grep -Eo 0x[0-9a-fA-F]*) & 0x80000 )) != 0x00 )); then echo \"Prev. High Temp\"; " + + " else echo \"None\"; fi"; + + public static String cpuUptimeCommand = "uptime -p | cut -c 4-"; + // GPU public static String gpuMemoryCommand = "vcgencmd get_mem gpu | grep -Eo '[0-9]+'"; public static String gpuMemUsageCommand = "vcgencmd get_mem malloc | grep -Eo '[0-9]+'"; @@ -51,6 +60,8 @@ public abstract class MetricsBase { cpuMemoryCommand = config.cpuMemoryCommand; cpuTemperatureCommand = config.cpuTempCommand; cpuUtilizationCommand = config.cpuUtilCommand; + cpuThrottleReasonCmd = config.cpuThrottleReasonCmd; + cpuUptimeCommand = config.cpuUptimeCommand; gpuMemoryCommand = config.gpuMemoryCommand; gpuMemUsageCommand = config.gpuMemUsageCommand; diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsPublisher.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsPublisher.java index f28d082a3..1d58c3af9 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsPublisher.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsPublisher.java @@ -60,6 +60,8 @@ public class MetricsPublisher { metrics.put("cpuTemp", cpuMetrics.getTemp()); metrics.put("cpuUtil", cpuMetrics.getUtilization()); metrics.put("cpuMem", cpuMetrics.getMemory()); + metrics.put("cpuThr", cpuMetrics.getThrottleReason()); + metrics.put("cpuUptime", cpuMetrics.getUptime()); metrics.put("gpuMem", gpuMetrics.getGPUMemorySplit()); metrics.put("ramUtil", ramMetrics.getUsedRam()); metrics.put("gpuMemUtil", gpuMetrics.getMallocedMemory()); diff --git a/photon-server/src/main/resources/web/index.html b/photon-server/src/main/resources/web/index.html index e0cf11547..451a1614c 100644 --- a/photon-server/src/main/resources/web/index.html +++ b/photon-server/src/main/resources/web/index.html @@ -1 +1 @@ -PhotonVision
\ No newline at end of file +PhotonVision
\ No newline at end of file