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
|
+
+
+
+
+ ⓘ CPU Throttling
+
+
+
+ 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