1+ -- patch to be used to upgrade from version 0.0.30
2+ -- =========================
3+ -- Table: WORKER_NODE_QUEUE
4+ -- =========================
5+ CREATE TABLE IF NOT EXISTS doma_panda .worker_node_queue (
6+ site VARCHAR (128 ),
7+ host_name VARCHAR (128 ),
8+ panda_queue VARCHAR (128 ),
9+ last_seen timestamp ,
10+ CONSTRAINT pk_worker_node_queue PRIMARY KEY (site, host_name, panda_queue)
11+ );
12+
13+ -- ===========================================
14+ -- MV: MV_WORKER_NODE_SUMMARY (partition = pq)
15+ -- ===========================================
16+ CREATE MATERIALIZED VIEW IF NOT EXISTS doma_panda .mv_worker_node_summary AS
17+ SELECT
18+ wn .site ,
19+ wnq .panda_queue ,
20+ wn .cpu_architecture_level ,
21+ SUM (wn .n_logical_cpus ) AS total_logical_cpus,
22+ ROUND(
23+ (SUM (wn .n_logical_cpus )::numeric * 100 )
24+ / NULLIF(SUM (SUM (wn .n_logical_cpus )) OVER (PARTITION BY wnq .panda_queue ), 0 )::numeric
25+ , 2 ) AS pct_within_pq
26+ FROM doma_panda .worker_node AS wn,
27+ doma_panda .worker_node_queue AS wnq
28+ WHERE wnq .last_seen > (CURRENT_TIMESTAMP - INTERVAL ' 1 month' )
29+ AND wn .site = wnq .site
30+ AND wn .host_name = wnq .host_name
31+ GROUP BY wn .site , wnq .panda_queue , wn .cpu_architecture_level
32+ WITH NO DATA;
33+
34+ CREATE UNIQUE INDEX IF NOT EXISTS ux_mv_wn_summary
35+ ON doma_panda .mv_worker_node_summary (site, panda_queue, cpu_architecture_level);
36+
37+ -- ===============================================
38+ -- MV: MV_WORKER_NODE_GPU_SUMMARY (per-host config)
39+ -- ===============================================
40+ CREATE MATERIALIZED VIEW IF NOT EXISTS doma_panda .mv_worker_node_gpu_summary AS
41+ SELECT
42+ wng .site ,
43+ wnq .panda_queue ,
44+ wng .vendor ,
45+ wng .model ,
46+ wng .vram ,
47+ wng .framework ,
48+ wng .framework_version ,
49+ wng .count AS gpus_per_host,
50+ COUNT (* ) AS host_count
51+ FROM doma_panda .worker_node_gpus AS wng,
52+ doma_panda .worker_node_queue AS wnq
53+ WHERE wnq .last_seen > (CURRENT_TIMESTAMP - INTERVAL ' 1 month' )
54+ AND wng .site = wnq .site
55+ AND wng .host_name = wnq .host_name
56+ GROUP BY
57+ wng .site ,
58+ wnq .panda_queue ,
59+ wng .vendor ,
60+ wng .model ,
61+ wng .vram ,
62+ wng .framework ,
63+ wng .framework_version ,
64+ wng .count
65+ WITH NO DATA;
66+
67+ CREATE UNIQUE INDEX IF NOT EXISTS ux_mv_wn_gpu_summary
68+ ON doma_panda .mv_worker_node_gpu_summary
69+ (site, panda_queue, vendor, model, vram, framework, framework_version, gpus_per_host);
70+
71+ -- ===================
72+ -- Initial population (must be non-concurrent the first time)
73+ -- ===================
74+ REFRESH MATERIALIZED VIEW doma_panda .mv_worker_node_summary ;
75+ REFRESH MATERIALIZED VIEW doma_panda .mv_worker_node_gpu_summary ;
76+
77+ -- Update schema version
78+ UPDATE doma_panda .pandadb_version
79+ SET major = 0 , minor = 0 , patch = 31
80+ WHERE component = ' PanDA' ;
81+ commit ;
0 commit comments