Hallo zusammen,

bei Performance Analysen verwende ich teilweise auch den Disk Watcher (STRDW), um zu prüfen, welcher Job via Plattenzugriffe auf welche Objekte lesend oder schreibend zugreift.

Hier die zugehörigen Befehle:
Code:
ADDDWDFN DFN(MAT_DW1) TEXT('Disk Watcher - 1 Minute') COLITV(1) TYPE(*TRACE) OBJINF(*ALL)

SBMJOB CMD(STRDW DFN(MAT_DW1) COL(MAT_DW1) LIB(PEXLIB) RPLDTA(*YES)) JOB(MAT_DW1) JOBQ(QUSRNOMAX)

Um dann die I/Os pro Job und Objekt auszuwerten, verwende ich folgendes SQL:
Code:
SELECT TRTDENAME, TRCURRUSER, OROBJNAME,                  
       SUBSTR(ORCONTEXT, 1, 10) LIB, TCIOTYPE, TCPOOLNUM,        
       hex(OROBJTYPE||OROBJSTYPE) typ, COUNT(*) AS IOCOUNT        
FROM PEXLIB/QAPYDWTRC, PEXLIB/QAPYDWTDER, PEXLIB/QAPYDWOBJR
WHERE TCTASKCNT = TSKCNT AND TCSEGKEY = SEGKEY            
GROUP BY TRTDENAME, TRCURRUSER, OROBJNAME, ORCONTEXT,      
         TCIOTYPE, TCPOOLNUM, OROBJTYPE, OROBJSTYPE                
ORDER BY IOCOUNT DESC
Bei der Ausgabe wundere ich mich, dass ein Job sowohl in Memory Pool 2 (*BASE) als auch in Memory Pool 3 (*INTERACT) Daten einliest, obwohl dieser Jobs (z.B. ODBC QZDASOINIT) nur in *BASE läuft.

Bisher dachte ich, dass ein Job neue Daten nur in den Memory Pool einlesen kann, in dem er selbst aktiv ist.

Kennt jemand den Grund dafür oder scheint es eher ein Problem des Disk Watcher zu sein?

Viele Grüße
Matthias