Vedere quali job consumano più CPU

Accedi per salvare
SELECT JOB_NAME, AUTHORIZATION_NAME, SUBSYSTEM,
       ELAPSED_CPU_PERCENTAGE, CPU_TIME, FUNCTION
  FROM TABLE(QSYS2.ACTIVE_JOB_INFO(RESET_STATISTICS => 'YES'))
 WHERE JOB_TYPE <> 'SYS'
 ORDER BY ELAPSED_CPU_PERCENTAGE DESC
 FETCH FIRST 15 ROWS ONLY

Per guardare un solo sottosistema:

SELECT JOB_NAME, ELAPSED_CPU_PERCENTAGE, FUNCTION
  FROM TABLE(QSYS2.ACTIVE_JOB_INFO(SUBSYSTEM_LIST_FILTER => 'QBATCH'))
 ORDER BY ELAPSED_CPU_PERCENTAGE DESC

Esempio: «ieri alle tre era lentissimo»

È la segnalazione che arriva sempre il giorno dopo, quando non c'è più niente da guardare. WRKACTJOB mostra adesso; il problema era ieri.

Un job schedulato ogni cinque minuti che scrive i primi cinque consumatori risolve la categoria intera. La tabella si crea dalla query stessa, così nomi e tipi delle colonne li decide il servizio e non vanno indovinati:

CREATE TABLE MIALIB/STORCPU AS (
  SELECT CURRENT TIMESTAMP AS RILEVATO, JOB_NAME,
         AUTHORIZATION_NAME, ELAPSED_CPU_PERCENTAGE, FUNCTION
    FROM TABLE(QSYS2.ACTIVE_JOB_INFO())
) WITH NO DATA

Poi il CL da schedulare:

RUNSQL SQL('INSERT INTO MIALIB/STORCPU                       +
            SELECT CURRENT TIMESTAMP AS RILEVATO, JOB_NAME,   +
                   AUTHORIZATION_NAME, ELAPSED_CPU_PERCENTAGE, FUNCTION +
              FROM TABLE(QSYS2.ACTIVE_JOB_INFO())            +
             WHERE JOB_TYPE <> ''SYS''                       +
             ORDER BY ELAPSED_CPU_PERCENTAGE DESC            +
             FETCH FIRST 5 ROWS ONLY') COMMIT(*NONE)

Il giorno dopo la domanda ha una risposta:

SELECT * FROM MIALIB/STORCPU
 WHERE RILEVATO BETWEEN '2026-08-25 14:30:00' AND '2026-08-25 15:30:00'
 ORDER BY RILEVATO, ELAPSED_CPU_PERCENTAGE DESC

Una riga ogni cinque minuti per cinque job occupa pochissimo, e trasforma una lamentela in un nome di programma.

Nota

ELAPSED_CPU_PERCENTAGE è la percentuale nell'intervallo trascorso dall'ultimo azzeramento, non da quando il job è partito. Con RESET_STATISTICS => 'YES' si azzera e si riesegue la query dopo qualche secondo: è così che si vede chi sta consumando adesso, invece di chi ha consumato in totale.

Suggerimento

la colonna FUNCTION dice a che punto è il job; quale programma o quale comando sta eseguendo. Su un job fermo è spesso l'unica informazione che serve.


Rilasci. QSYS2.ACTIVE_JOB_INFO è disponibile dal 7.1, ma i parametri con nome sono stati aggiunti nel tempo: RESET_STATISTICS e SUBSYSTEM_LIST_FILTER non ci sono sui rilasci più vecchi. Se la chiamata viene rifiutata, si esegue la funzione senza parametri (TABLE(QSYS2.ACTIVE_JOB_INFO())) e si filtra nel WHERE.

← Torna al blog

Commenti

Nessun commento ancora. Sii il primo a commentare!

Devi avere un account per commentare. Accedi · Registrati