2012-11-09 6 views
11

Na poniższej wersji Java: WersjaCo oznaczają słowa "rzeczywisty", "użytkownik" i "sys" w dzienniku CMC java CMS?

OpenJDK "1.6.0"
OpenJDK Runtime Environment (build 1.6.0-b23)
OpenJDK 64-bitowy serwer VM (build 20.0-b11, tryb mieszany)

z folllowing flagi GC

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

Dostajemy wiersze dziennika lubię:

2012-11-09T16: 46: 53.438-0100: [CMS-współbieżne znak: 4,039 /4.060 sek] [razy: user = 4,09 sys = 35.05, prawdziwe = 4,06 sek]

początkowe „4,039/4.060 sek” należy według https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs oznacza, że ​​jednoczesne oznakowanie trwało całkowitą 4,039 sekundy i czas procesora 4.060 sekund czas ściany (który obejmuje wydajność do othe r wątki również).

Co oznaczają wartości user, sys i real?

+2

Wystarczy popatrzeć na http://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1 –

+1

Tak, ale że to klasyczne znaczenie unixu: Real to zegar ścienny, Użytkownik to ilość czasu procesora, Sys to ilość czasu procesora spędzanego w jądrze w procesie. Naprawdę nie widzę, jak te definicje mają sens w tym kontekście gc ... – fornwall

Odpowiedz

4
  1. Sys i użytkownik to wyłącznie czasy procesora. W związku z tym nie uwzględniają czasu, w którym proces jest blokowany dla procesora lub wykonuje operacje wejścia/wyjścia itp.

  2. Czas GC powinien być na ogół podobny do sys + czas użytkownika, ale jeśli proces jest zablokowany lub czeka, to byłaby wyższa. Jest tak w przypadku kolektora szeregowego i pojedynczego procesora. Jednak w środowiskach wieloprocesorowych (z równoległymi kolektorami) czas GC byłby mniejszy niż czas sys + użytkownika, ponieważ istnieje wiele procesorów.

  3. Czas rzeczywisty będzie podobny do czasu GC.

Powiązane problemy