@@ -6350,221 +6350,6 @@ end;
63506350--------------------------------------------------------
63516351set define off;
63526352
6353-
6354-
6355- PanDAWMS
6356-
6357- panda-server
6358-
6359- Code
6360- Issues 1
6361- Pull requests
6362- Actions
6363- Projects
6364- Wiki
6365- Security
6366- Insights
6367-
6368- Settings
6369-
6370- DB upgrade scripts
6371- Edward Karavakis edited this page Mar 24, 2025 · 59 revisions
6372- 24 February 2025 (DB version 0.0.25): add worker node map and cpu benchmarks
6373-
6374- CREATE TABLE "ATLAS_PANDA"."WORKER_NODE"(
6375- "SITE" varchar2(128),
6376- "HOST_NAME" varchar2(128),
6377- "CPU_MODEL" varchar(128),
6378- "N_LOGICAL_CPUS" number(9,0),
6379- "N_SOCKETS" number(9,0),
6380- "CORES_PER_SOCKET" number(9,0),
6381- "THREADS_PER_CORE" number(9,0),
6382- "CPU_ARCHITECTURE" varchar2(20),
6383- "CPU_ARCHITECTURE_LEVEL" varchar2(20),
6384- "CLOCK_SPEED" number(9,2),
6385- "TOTAL_MEMORY" number(9,0),
6386- "LAST_SEEN" date,
6387- CONSTRAINT PK_WORKER_NODE PRIMARY KEY ("SITE", "HOST_NAME", "CPU_MODEL")
6388- )ORGANIZATION INDEX COMPRESS 1;
6389-
6390- CREATE INDEX IDX_WORKER_NODE_LAST_SEEN ON "ATLAS_PANDA"."WORKER_NODE"("LAST_SEEN");
6391-
6392- -- Table Comment
6393- COMMENT ON TABLE "ATLAS_PANDA"."WORKER_NODE" IS 'Stores information about worker nodes seen by PanDA pilots';
6394-
6395- -- Column Comments
6396- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."SITE" IS 'The name of the site (not PanDA queue) where the worker node is located.';
6397- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."HOST_NAME" IS 'The hostname of the worker node.';
6398- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."CPU_MODEL" IS 'The specific model of the CPU.';
6399- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."N_LOGICAL_CPUS" IS 'Total number of logical CPUs (calculated as sockets * cores per socket * threads per core).';
6400- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."N_SOCKETS" IS 'Number of physical CPU sockets.';
6401- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."CORES_PER_SOCKET" IS 'Number of CPU cores per physical socket.';
6402- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."THREADS_PER_CORE" IS 'Number of threads per CPU core.';
6403- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."CPU_ARCHITECTURE" IS 'The CPU architecture (e.g., x86_64, ARM).';
6404- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."CPU_ARCHITECTURE_LEVEL" IS 'The specific level/version of the CPU architecture.';
6405- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."CLOCK_SPEED" IS 'Clock speed of the CPU in GHz.';
6406- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."TOTAL_MEMORY" IS 'Total amount of RAM in MB.';
6407- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE"."LAST_SEEN" IS 'Timestamp of the last time the worker node was active.';
6408-
6409- CREATE TABLE "ATLAS_PANDA"."CPU_BENCHMARKS" (
6410- "CPU_TYPE" VARCHAR2(128),
6411- "SMT_ENABLED" NUMBER(1), -- 0 or 1
6412- "SOCKETS" NUMBER(2),
6413- "CORES_PER_SOCKET" NUMBER(9),
6414- "NCORES" NUMBER(9),
6415- "SITE" VARCHAR2(128),
6416- "SCORE_PER_CORE" NUMBER(10,2),
6417- "TIMESTAMP" DATE,
6418- "SOURCE" VARCHAR2(256)
6419- );
6420-
6421- CREATE TABLE "ATLAS_PANDA"."WORKER_NODE_MAP"(
6422- "ATLAS_SITE" varchar2(128),
6423- "WORKER_NODE" varchar2(128),
6424- "CPU_TYPE" varchar(128),
6425- "LAST_SEEN" date,
6426- "CORES" number(9,0),
6427- "ARCHITECTURE_LEVEL" varchar2(20),
6428- CONSTRAINT PK_WORKER_NODE_MAP PRIMARY KEY ("ATLAS_SITE", "WORKER_NODE")
6429- );
6430-
6431-
6432- create or replace PROCEDURE UPDATE_WORKER_NODE_MAP
6433- AS
6434- BEGIN
6435-
6436- -- 2025 02 24, ver 1.0
6437- -- to easy identify the session and better view on resource usage by setting a dedicated module for the PanDA jobs
6438- DBMS_APPLICATION_INFO.SET_MODULE( module_name => 'PanDA scheduler job', action_name => 'Updates worker node map with last days job data');
6439- DBMS_APPLICATION_INFO.SET_CLIENT_INFO ( client_info => sys_context('userenv', 'host') || ' ( ' || sys_context('userenv', 'ip_address') || ' )' );
6440-
6441- MERGE INTO ATLAS_PANDA.WORKER_NODE_MAP WNM
6442- USING (
6443- WITH sc_slimmed AS (
6444- SELECT
6445- panda_queue,
6446- scj.data.atlas_site AS atlas_site
6447- FROM
6448- atlas_panda.schedconfig_json scj
6449- )
6450- SELECT
6451- DISTINCT
6452- sc_slimmed.atlas_site,
6453- CASE
6454- WHEN INSTR(jobsarchived4.modificationhost, '@') > 0
6455- THEN REGEXP_SUBSTR(jobsarchived4.modificationhost, '@(.+)', 1, 1, NULL, 1)
6456- ELSE jobsarchived4.modificationhost
6457- END AS WORKERNODE,
6458- REGEXP_SUBSTR(
6459- cpuconsumptionunit,
6460- 's?\+?(.+?)\s\d+-Core',
6461- 1, 1, NULL, 1
6462- ) AS CPU_TYPE,
6463- MAX(
6464- CASE
6465- WHEN cpuconsumptionunit IS NULL OR TRIM(cpuconsumptionunit) = ''
6466- THEN 0
6467- WHEN cpuconsumptionunit NOT LIKE '%-Core%'
6468- THEN 0
6469- ELSE
6470- TO_NUMBER(NVL(REGEXP_SUBSTR(cpuconsumptionunit, '(\d+)-Core', 1, 1, NULL, 1), -1))
6471- END
6472- ) AS NUM_CORE,
6473- CPU_ARCHITECTURE_LEVEL
6474- FROM
6475- atlas_panda.jobsarchived4
6476- JOIN
6477- sc_slimmed
6478- ON jobsarchived4.computingsite = sc_slimmed.panda_queue
6479- WHERE
6480- endtime > sysdate - interval '1' day
6481- AND jobstatus IN ('finished', 'failed')
6482- AND modificationhost NOT LIKE 'aipanda%'
6483- AND CPU_ARCHITECTURE_LEVEL IS NOT NULL
6484- AND REGEXP_SUBSTR(
6485- cpuconsumptionunit,
6486- 's?\+?(.+?)\s\d+-Core',
6487- 1, 1, NULL, 1
6488- ) IS NOT NULL
6489- GROUP BY
6490- sc_slimmed.atlas_site,
6491- CASE
6492- WHEN INSTR(jobsarchived4.modificationhost, '@') > 0
6493- THEN REGEXP_SUBSTR(jobsarchived4.modificationhost, '@(.+)', 1, 1, NULL, 1)
6494- ELSE jobsarchived4.modificationhost
6495- END,
6496- REGEXP_SUBSTR(
6497- cpuconsumptionunit,
6498- 's?\+?(.+?)\s\d+-Core',
6499- 1, 1, NULL, 1
6500- ),
6501- CPU_ARCHITECTURE_LEVEL
6502- ) source
6503- ON (
6504- source.ATLAS_SITE = WNM.ATLAS_SITE
6505- AND source.WORKERNODE = WNM.WORKER_NODE
6506- AND source.CPU_TYPE = WNM.CPU_TYPE
6507- )
6508- WHEN MATCHED THEN
6509- UPDATE SET
6510- WNM.LAST_SEEN = SYSDATE
6511- WHEN NOT MATCHED THEN
6512- INSERT (
6513- ATLAS_SITE, WORKER_NODE, CPU_TYPE, CORES, ARCHITECTURE_LEVEL, LAST_SEEN
6514- )
6515- VALUES (
6516- source.ATLAS_SITE, source.WORKERNODE, source.CPU_TYPE, source.NUM_CORE,
6517- source.CPU_ARCHITECTURE_LEVEL, SYSDATE
6518- );
6519-
6520- COMMIT;
6521-
6522- DBMS_APPLICATION_INFO.SET_MODULE( module_name => null, action_name => null);
6523- DBMS_APPLICATION_INFO.SET_CLIENT_INFO ( client_info => null);
6524-
6525- end;
6526-
6527-
6528- BEGIN
6529- dbms_scheduler.create_job(
6530- job_name => 'UPDATE_WORKER_NODE_MAP_JOB',
6531- job_type => 'PLSQL_BLOCK',
6532- job_action => 'BEGIN ATLAS_PANDA.UPDATE_WORKER_NODE_MAP; END;',
6533- start_date => SYSTIMESTAMP,
6534- repeat_interval => 'FREQ=DAILY; BYHOUR=8; BYMINUTE=0; BYSECOND=0;',
6535- auto_drop => FALSE,
6536- enabled => TRUE,
6537- comments => 'Runs every day at 8 AM to refresh WORKER_NODE_MAP data.'
6538- );
6539- END;
6540- /
6541-
6542- CREATE TABLE "ATLAS_PANDA"."WORKER_NODE_METRICS"(
6543- "SITE" varchar2(128),
6544- "HOST_NAME" varchar2(128),
6545- "TIMESTAMP" TIMESTAMP DEFAULT SYSTIMESTAMP AT TIME ZONE 'UTC',
6546- "KEY" varchar2(20),
6547- "STATISTICS" varchar2(500),
6548- CONSTRAINT wn_metrics_json CHECK ("STATISTICS" IS JSON) ENABLE
6549- )
6550- PARTITION BY RANGE ("TIMESTAMP")
6551- INTERVAL (NUMTOYMINTERVAL(1, 'MONTH')) (
6552- PARTITION "WN_METRICS_BASE" VALUES LESS THAN (TO_DATE('2025-03-01', 'YYYY-MM-DD'))
6553- );
6554-
6555- CREATE INDEX mn_metrics_idx ON "ATLAS_PANDA"."WORKER_NODE_METRICS"("SITE", "HOST_NAME", "TIMESTAMP");
6556-
6557- -- Table Comment
6558- COMMENT ON TABLE "ATLAS_PANDA"."WORKER_NODE_METRICS" IS 'Metrics related to a worker node';
6559-
6560- -- Column Comments
6561- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE_METRICS"."SITE" IS 'The name of the site (not PanDA queue) where the worker node is located.';
6562- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE_METRICS"."HOST_NAME" IS 'The hostname of the worker node.';
6563- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE_METRICS"."TIMESTAMP" IS 'Timestamp the metrics were collected.';
6564- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE_METRICS"."KEY" IS 'Key of the metrics entry.';
6565- COMMENT ON COLUMN "ATLAS_PANDA"."WORKER_NODE_METRICS"."STATISTICS" IS 'Metrics in json format.';
6566-
6567-
65686353create or replace PROCEDURE UPDATE_WORKER_NODE_METRICS
65696354AS
65706355BEGIN
0 commit comments