2012-11-09 12 views
11

Per la seguente versione di Java: VersioneCosa significano "reale", "utente" e "sys" nel log gc java CMS?

OpenJDK "1.6.0"
OpenJDK Runtime Environment (build 1.6.0-B23)
OpenJDK a 64 bit di server VM (build 20.0-b11, modalità mista)

Con le bandiere folllowing GC:

-verbose: gc
-XX: + UseConcMarkSweepGC
-XX: + CMSClassUnloadingEnabled
-XX: + PrintGCDetails
-XX: + PrintGCDateStamps

Otteniamo registriamo linee come:

2012-11-09T16: 46: 53,438-0100: [CMS-concurrent-mark: 4.039 /4.060 sec] [tempi: user = 4.09 sys = 35.05, veri = 4.06 secs]

l'iniziale "4.039/4.060 sec" dovrebbe secondo https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs significano che in concomitanza marcatura ha preso 4.039 secondi il tempo totale di CPU e 4.060 tempo di muro dei secondi (che include la resa ad altri) r discussioni anche).

Ma cosa significano qui utente, sys e valori reali?

+2

Dai un'occhiata alla http://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1 –

+1

Sì, ma che è il classico significato di unix: Real è il tempo di wall clock, User è la quantità di tempo della CPU, Sys è la quantità di tempo CPU trascorso nel kernel all'interno del processo. Non vedo davvero come queste definizioni abbiano senso in questo contesto gc ... – fornwall

risposta

4
  1. Il sistema e l'utente sono esclusivamente tempi CPU. Di conseguenza non includono il tempo in cui il processo è bloccato per la CPU o esegue I/O, ecc.

  2. L'orario del GC dovrebbe essere generalmente simile all'ora utente sys + ma se il processo è bloccato o in attesa, allora sarebbe più alto Questo sarebbe vero per un collector seriale e un box a processore singolo. Tuttavia, negli ambienti multiprocessore (con collettori paralleli), il tempo di GC sarebbe inferiore al tempo dell'utente sys + poiché ci sono più CPU.

  3. Il tempo reale sarebbe simile al tempo di GC.

Problemi correlati