forked from wrenn/wrenn
Fix metrics correctness, redesign stats page
- Replace stale snapshot read (GetCurrentMetrics) with live query (GetLiveMetrics) against sandboxes table — always returns correct zeros when no capsules are running - Fix CPU reserved formula: running + starting only; paused VMs no longer contribute vCPUs (RAM reservation for paused unchanged) - Merge top cards into 3 paired Now/Peak cards with colored accent borders (green/blue/amber matching chart colors) - Move Live badge from Running Capsules card to page-level header - Add colored category dots to card and chart headers - Charts stacked vertically, flex-1 to fill remaining page height - vCPUs chart color changed to blue (#5a9fd4), RAM stays amber
This commit is contained in:
@ -2,12 +2,17 @@
|
||||
INSERT INTO sandbox_metrics_snapshots (team_id, running_count, vcpus_reserved, memory_mb_reserved)
|
||||
VALUES ($1, $2, $3, $4);
|
||||
|
||||
-- name: GetCurrentMetrics :one
|
||||
SELECT running_count, vcpus_reserved, memory_mb_reserved, sampled_at
|
||||
FROM sandbox_metrics_snapshots
|
||||
WHERE team_id = $1
|
||||
ORDER BY sampled_at DESC
|
||||
LIMIT 1;
|
||||
-- name: GetLiveMetrics :one
|
||||
-- Reads directly from sandboxes for accurate real-time current values.
|
||||
-- CPU reserved = running + starting only (paused VMs release CPU).
|
||||
-- RAM reserved = running + starting + ceil(paused/2) (capacity held for resume).
|
||||
SELECT
|
||||
(COUNT(*) FILTER (WHERE status IN ('running', 'starting')))::INTEGER AS running_count,
|
||||
(COALESCE(SUM(vcpus) FILTER (WHERE status IN ('running', 'starting')), 0))::INTEGER AS vcpus_reserved,
|
||||
(COALESCE(SUM(memory_mb) FILTER (WHERE status IN ('running', 'starting')), 0)
|
||||
+ CEIL(COALESCE(SUM(memory_mb) FILTER (WHERE status = 'paused'), 0)::NUMERIC / 2))::INTEGER AS memory_mb_reserved
|
||||
FROM sandboxes
|
||||
WHERE team_id = $1;
|
||||
|
||||
-- name: GetPeakMetrics :one
|
||||
SELECT
|
||||
@ -24,12 +29,12 @@ WHERE sampled_at < NOW() - INTERVAL '60 days';
|
||||
|
||||
-- name: SampleSandboxMetrics :many
|
||||
-- Aggregates per-team resource usage from the live sandboxes table.
|
||||
-- paused sandboxes count at 50% (ceil) for capacity reservation.
|
||||
-- CPU reserved = running + starting only (paused VMs release CPU).
|
||||
-- RAM reserved = running + starting + ceil(paused/2) (capacity held for resume).
|
||||
SELECT
|
||||
team_id,
|
||||
(COUNT(*) FILTER (WHERE status IN ('running', 'starting')))::INTEGER AS running_count,
|
||||
(COALESCE(SUM(vcpus) FILTER (WHERE status IN ('running', 'starting')), 0)
|
||||
+ CEIL(COALESCE(SUM(vcpus) FILTER (WHERE status = 'paused'), 0)::NUMERIC / 2))::INTEGER AS vcpus_reserved,
|
||||
(COALESCE(SUM(vcpus) FILTER (WHERE status IN ('running', 'starting')), 0))::INTEGER AS vcpus_reserved,
|
||||
(COALESCE(SUM(memory_mb) FILTER (WHERE status IN ('running', 'starting')), 0)
|
||||
+ CEIL(COALESCE(SUM(memory_mb) FILTER (WHERE status = 'paused'), 0)::NUMERIC / 2))::INTEGER AS memory_mb_reserved
|
||||
FROM sandboxes
|
||||
|
||||
Reference in New Issue
Block a user