[DTrace-devel] semantics of "timestamp"
Eugene Loh
eugene.loh at oracle.com
Thu Jul 16 12:57:17 PDT 2020
What are the semantics of the built-in variable "timestamp"?
Specifically, does it record a fresh time stamp each time it is called?
Or it is measured once upon probe (or clause) entry and then reused?
The documentation isn't real specific, but it seems to imply a fresh
time on each call. Meanwhile, DTv1 seems to get a fresh call for each
clause and then reuse that value during that clause. In contrast, DTv2
seems to get a fresh value with each clause. Is the change from DTv1 to
DTv2 intentional? Should the legacy behavior be preserved?
FWIW, here are some experiments:
+-------------------------------------+---------------------------+
| BEGIN {trace(timestamp); | BEGIN {trace(timestamp);} |
| trace(timestamp); | BEGIN {trace(timestamp);} |
| trace(timestamp); | BEGIN {trace(timestamp);} |
| trace(timestamp); | BEGIN {trace(timestamp);} |
| trace(timestamp); | BEGIN {trace(timestamp);} |
| trace(timestamp); | BEGIN {trace(timestamp); |
| exit(0) | exit(0) |
| } | } |
+-------------------------------------+---------------------------+
| DTv1: DTv2: | DTv1: |
| 3823194824541746 1645711727876826 | 3823604430297094 |
| 3823194824541746 1645711727876873 | 3823604430297975 |
| 3823194824541746 1645711727876917 | 3823604430298302 |
| 3823194824541746 1645711727876950 | 3823604430298700 |
| 3823194824541746 1645711727876982 | 3823604430299590 |
| 3823194824541746 1645711727877017 | 3823604430300004 |
+-------------------------------------+---------------------------+
More information about the DTrace-devel
mailing list