2012-11-09 3 views
11

Für die folgende Java-Version:Was bedeuten "real", "user" und "sys" im Java CMS GC Log?

OpenJDK-Version "1.6.0"
OpenJDK Runtime Environment (Build 1.6.0-b23)
OpenJDK 64-Bit Server VM (Build 20.0-b11, mixed mode)

Mit folgenden GC Fahnen:

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

Wir Linien erhalten einloggen mögen:-XX: + PrintGCDetails
-XX

2012-11-09T16: 46: 53,438 bis 0100: [CMS-Concurrent-Zeichen: 4.039 /4.060 sec] [Zeiten: user = 4,09 sys = 35.05, real = 4,06 sec]

Die ersten "4.039/4.060 Sekunden" sollte nach https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs bedeuten, dass die gleichzeitige insgesamt 4,039 Sekunden CPU-Zeit nahm Kennzeichnung und 4.060 Sekunden Mauerzeit (das schließt den Ertrag zu othe ein r Threads auch).

Aber was bedeuten der Benutzer, sys und reale Werte hier?

+2

Werfen Sie einen Blick auf http://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1 –

+1

Ja, aber das ist die klassische Unix-Bedeutung: Real ist die Wanduhrzeit, User ist die Menge an CPU-Zeit, Sys ist die Menge an CPU-Zeit, die im Kernel innerhalb des Prozesses verbraucht wird. Ich sehe nicht wirklich, wie diese Definitionen in diesem Kontext sinnvoll sind ... – fornwall

Antwort

4
  1. Das System und der Benutzer sind ausschließlich CPU-Zeiten. Folglich enthalten sie nicht die Zeit, in der der Prozess für die CPU blockiert ist oder E/A usw. ausführt.

  2. Die GC-Zeit sollte im Allgemeinen der sys + -Benutzerzeit ähneln, aber wenn der Prozess blockiert ist oder wartet, dann ist es wäre höher. Dies trifft auf einen seriellen Kollektor und eine einzelne Prozessorbox zu. In den Multiprozessorumgebungen (mit parallelen Kollektoren) wäre die GC-Zeit jedoch geringer als die sys + -Benutzerzeit, da mehrere CPUs vorhanden sind.

  3. Die Echtzeit entspricht der GC-Zeit.

Verwandte Themen