diff --git a/web/public/locales/en/views/system.json b/web/public/locales/en/views/system.json index 1357000c9..2732112cd 100644 --- a/web/public/locales/en/views/system.json +++ b/web/public/locales/en/views/system.json @@ -162,7 +162,8 @@ "reindexingEmbeddings": "Reindexing embeddings ({{processed}}% complete)", "cameraIsOffline": "{{camera}} is offline", "detectIsSlow": "{{detect}} is slow ({{speed}} ms)", - "detectIsVerySlow": "{{detect}} is very slow ({{speed}} ms)" + "detectIsVerySlow": "{{detect}} is very slow ({{speed}} ms)", + "shmTooLow": "/dev/shm allocation ({{total}} MB) should be increased to at least {{min}} MB." }, "enrichments": { "title": "Enrichments", diff --git a/web/src/hooks/use-stats.ts b/web/src/hooks/use-stats.ts index 566020b05..040dd7b1a 100644 --- a/web/src/hooks/use-stats.ts +++ b/web/src/hooks/use-stats.ts @@ -32,6 +32,19 @@ export default function useStats(stats: FrigateStats | undefined) { return problems; } + // check shm level + const shm = memoizedStats.service.storage["/dev/shm"]; + if (shm?.total && shm?.min_shm && shm.total < shm.min_shm) { + problems.push({ + text: t("stats.shmTooLow", { + total: shm.total, + min: shm.min_shm, + }), + color: "text-danger", + relevantLink: "/system#storage", + }); + } + // check detectors for high inference speeds Object.entries(memoizedStats["detectors"]).forEach(([key, det]) => { if (det["inference_speed"] > InferenceThreshold.error) {