Mal wieder fiel sofort auf, als ich einmal mehr strace bemühen mußte um festzustellen,
was genau das von Java aus gestartete Bashscript so treibt.
Dabei weckten wieder diese Zeilen meine Aufmerksamkeit:
[pid 3488] gettimeofday({1371633845, 44988}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 45163}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 45283}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 45401}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 45648}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 45776}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 45917}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 46044}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 46156}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 46286}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 46509}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 46629}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 46746}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 46857}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 46967}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 47120}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 47231}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 47343}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 47465}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 47612}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 47750}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 47870}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 48008}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 48121}, NULL) = 0 [pid 3488] gettimeofday({1371633845, 48232}, NULL) = 0
Wie man leicht erkennen kann, finden diese Zugriffe im Milli- bis Microsekundentakt statt.
Wenn man sich das strace log vornimmt, kommt das dabei raus:
[root]# wc --lines /tmp/log 38896 /tmp/log [root]# grep -c gettimeofday /tmp/log 25366
Also rund 2/3 aller Logzeilen entfallen nur auf gettimeofday() . Auch wenn der Aufruf an sich nur wenige Takte der CPU benötigen sollte, die Masse der Aufrüfe an sich stellt ein nicht zu verachtendes Problem dar. Vermutlich ist das völlig unnötig. Mal sehen, ob sich Oracle der Meinung anschliesst.
Im Einsatz war Java 6 latest.