diff --git a/photon-client/src/components/settings/MetricsCard.vue b/photon-client/src/components/settings/MetricsCard.vue index e79b3f031..53e14d22d 100644 --- a/photon-client/src/components/settings/MetricsCard.vue +++ b/photon-client/src/components/settings/MetricsCard.vue @@ -27,42 +27,54 @@ const generalMetrics = computed(() => [ value: useSettingsStore().general.gpuAcceleration || "Unknown" } ]); -const platformMetrics = computed(() => [ - { - header: "CPU Temp", - value: useSettingsStore().metrics.cpuTemp === undefined ? "Unknown" : `${useSettingsStore().metrics.cpuTemp}°C` - }, - { - header: "CPU Usage", - value: useSettingsStore().metrics.cpuUtil === undefined ? "Unknown" : `${useSettingsStore().metrics.cpuUtil}%` - }, - { - header: "CPU Memory Usage", - value: - useSettingsStore().metrics.ramUtil === undefined || useSettingsStore().metrics.cpuMem === undefined - ? "Unknown" - : `${useSettingsStore().metrics.ramUtil || "Unknown"}MB of ${useSettingsStore().metrics.cpuMem}MB` - }, - { - header: "GPU Memory Usage", - value: - useSettingsStore().metrics.gpuMemUtil === undefined || useSettingsStore().metrics.gpuMem === undefined - ? "Unknown" - : `${useSettingsStore().metrics.gpuMemUtil}MB of ${useSettingsStore().metrics.gpuMem}MB` - }, - { - header: "CPU Throttling", - value: useSettingsStore().metrics.cpuThr || "Unknown" - }, - { - header: "CPU Uptime", - value: useSettingsStore().metrics.cpuUptime || "Unknown" - }, - { - header: "Disk Usage", - value: useSettingsStore().metrics.diskUtilPct || "Unknown" + +const platformMetrics = computed(() => { + const stats = [ + { + header: "CPU Temp", + value: useSettingsStore().metrics.cpuTemp === undefined ? "Unknown" : `${useSettingsStore().metrics.cpuTemp}°C` + }, + { + header: "CPU Usage", + value: useSettingsStore().metrics.cpuUtil === undefined ? "Unknown" : `${useSettingsStore().metrics.cpuUtil}%` + }, + { + header: "CPU Memory Usage", + value: + useSettingsStore().metrics.ramUtil === undefined || useSettingsStore().metrics.cpuMem === undefined + ? "Unknown" + : `${useSettingsStore().metrics.ramUtil || "Unknown"}MB of ${useSettingsStore().metrics.cpuMem}MB` + }, + { + header: "GPU Memory Usage", + value: + useSettingsStore().metrics.gpuMemUtil === undefined || useSettingsStore().metrics.gpuMem === undefined + ? "Unknown" + : `${useSettingsStore().metrics.gpuMemUtil}MB of ${useSettingsStore().metrics.gpuMem}MB` + }, + { + header: "CPU Throttling", + value: useSettingsStore().metrics.cpuThr || "Unknown" + }, + { + header: "CPU Uptime", + value: useSettingsStore().metrics.cpuUptime || "Unknown" + }, + { + header: "Disk Usage", + value: useSettingsStore().metrics.diskUtilPct || "Unknown" + } + ]; + + if (useSettingsStore().metrics.npuUsage) { + stats.push({ + header: "NPU Usage", + value: useSettingsStore().metrics.npuUsage || "Unknown" + }); } -]); + + return stats; +}); const metricsLastFetched = ref("Never"); const fetchMetrics = () => { diff --git a/photon-client/src/stores/settings/GeneralSettingsStore.ts b/photon-client/src/stores/settings/GeneralSettingsStore.ts index 54b41a58b..c525b8b0b 100644 --- a/photon-client/src/stores/settings/GeneralSettingsStore.ts +++ b/photon-client/src/stores/settings/GeneralSettingsStore.ts @@ -59,7 +59,8 @@ export const useSettingsStore = defineStore("settings", { gpuMemUtil: undefined, cpuThr: undefined, cpuUptime: undefined, - diskUtilPct: undefined + diskUtilPct: undefined, + npuUsage: undefined }, currentFieldLayout: { field: { @@ -91,7 +92,8 @@ export const useSettingsStore = defineStore("settings", { gpuMemUtil: data.gpuMemUtil || undefined, cpuThr: data.cpuThr || undefined, cpuUptime: data.cpuUptime || undefined, - diskUtilPct: data.diskUtilPct || undefined + diskUtilPct: data.diskUtilPct || undefined, + npuUsage: data.npuUsage || undefined }; }, updateGeneralSettingsFromWebsocket(data: WebsocketSettingsUpdate) { diff --git a/photon-client/src/types/SettingTypes.ts b/photon-client/src/types/SettingTypes.ts index 69cf439bb..4c4cd7226 100644 --- a/photon-client/src/types/SettingTypes.ts +++ b/photon-client/src/types/SettingTypes.ts @@ -20,6 +20,7 @@ export interface MetricData { cpuThr?: string; cpuUptime?: string; diskUtilPct?: string; + npuUsage?: string; } export enum NetworkConnectionType { diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java index 266ea0b46..c51729a08 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/MetricsManager.java @@ -92,6 +92,10 @@ public class MetricsManager { return safeExecute(cmds.cpuThrottleReasonCmd); } + public String getNpuUsage() { + return safeExecute(cmds.npuUsageCommand); + } + private String gpuMemSave = null; public String getGPUMemorySplit() { @@ -128,6 +132,7 @@ public class MetricsManager { metrics.put("ramUtil", this.getUsedRam()); metrics.put("gpuMemUtil", this.getMallocedMemory()); metrics.put("diskUtilPct", this.getUsedDiskPct()); + metrics.put("npuUsage", this.getNpuUsage()); DataChangeService.getInstance().publishEvent(OutgoingUIEvent.wrappedOf("metrics", metrics)); } diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/cmds/CmdBase.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/cmds/CmdBase.java index 69473ad9e..1580b5d66 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/cmds/CmdBase.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/cmds/CmdBase.java @@ -29,6 +29,8 @@ public class CmdBase { // GPU public String gpuMemoryCommand = ""; public String gpuMemUsageCommand = ""; + // NPU + public String npuUsageCommand = ""; // RAM public String ramUsageCommand = ""; // Disk diff --git a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/cmds/RK3588Cmds.java b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/cmds/RK3588Cmds.java index 586ec9e98..c7b06d599 100644 --- a/photon-core/src/main/java/org/photonvision/common/hardware/metrics/cmds/RK3588Cmds.java +++ b/photon-core/src/main/java/org/photonvision/common/hardware/metrics/cmds/RK3588Cmds.java @@ -44,5 +44,7 @@ public class RK3588Cmds extends LinuxCmds { */ cpuTemperatureCommand = "cat /sys/class/thermal/thermal_zone1/temp | awk '{printf \"%.1f\", $1/1000}'"; + + npuUsageCommand = "cat /sys/kernel/debug/rknpu/load | sed 's/NPU load://; s/^ *//; s/ *$//'"; } }