Add support for rockchip GPU stats (#17812)

* Set rockchip GPU name

* Add support for calculating rockchip GPU load

* Format consistently

* Fix access error
This commit is contained in:
Nicolas Mowen 2025-04-19 15:34:05 -06:00 committed by GitHub
parent 80a13e43e9
commit 38ffe21b69
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 35 additions and 2 deletions

View File

@ -175,6 +175,7 @@ class HailoAsyncInference:
return self.hef.get_input_vstream_infos()[0].shape
def run(self) -> None:
job = None
with self.infer_model.configure() as configured_infer_model:
while True:
batch_data = self.input_store.get()
@ -202,7 +203,9 @@ class HailoAsyncInference:
bindings_list=bindings_list,
),
)
job.wait(100)
if job is not None:
job.wait(100)
# ----------------- HailoDetector Class ----------------- #

View File

@ -24,6 +24,7 @@ from frigate.util.services import (
get_intel_gpu_stats,
get_jetson_stats,
get_nvidia_gpu_stats,
get_rockchip_gpu_stats,
get_rockchip_npu_stats,
is_vaapi_amd_driver,
)
@ -232,6 +233,11 @@ async def set_gpu_stats(
else:
stats["intel-vaapi"] = {"gpu": "", "mem": ""}
hwaccel_errors.append(args)
elif "preset-rk" in args:
rga_usage = get_rockchip_gpu_stats()
if rga_usage:
stats["rockchip"] = rga_usage
elif "v4l2m2m" in args or "rpi" in args:
# RPi v4l2m2m is currently not able to get usage stats
stats["rpi-v4l2m2m"] = {"gpu": "", "mem": ""}

View File

@ -382,8 +382,29 @@ def get_intel_gpu_stats(sriov: bool) -> dict[str, str]:
return results
def get_rockchip_gpu_stats() -> dict[str, str]:
"""Get GPU stats using rk."""
try:
with open("/sys/kernel/debug/rkrga/load", "r") as f:
content = f.read()
except FileNotFoundError:
return None
load_values = []
for line in content.splitlines():
match = re.search(r"load = (\d+)%", line)
if match:
load_values.append(int(match.group(1)))
if not load_values:
return None
average_load = f"{round(sum(load_values) / len(load_values), 2)}%"
return {"gpu": average_load, "mem": "-"}
def get_rockchip_npu_stats() -> dict[str, str]:
"""Get stats using rk."""
"""Get NPU stats using rk."""
try:
with open("/sys/kernel/debug/rknpu/load", "r") as f:
npu_output = f.read()

View File

@ -101,6 +101,9 @@ export default function Statusbar() {
case "intel-qsv":
gpuTitle = "Intel GPU";
break;
case "rockchip":
gpuTitle = "Rockchip GPU";
break;
default:
gpuTitle = name;
break;