From 98d9540dd7a7aa2e612f16caeea6e57d56ed9f12 Mon Sep 17 00:00:00 2001 From: Ali Ijaz Sheikh <ofrobots@google.com> Date: Tue, 16 Jan 2018 17:13:36 -0800 Subject: [PATCH] src: use uv_hrtime as tracing timestamp Override the V8 TracingController to provide uv_hrtime based timestamps. This allows tracing timestamps to be comparable with process.hrtime timestamps. Fixes: https://github.com/nodejs/node/issues/17349 PR-URL: https://github.com/nodejs/node/pull/18196 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Andreas Madsen <amwebdk@gmail.com> --- doc/api/tracing.md | 4 ++++ src/tracing/agent.h | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/api/tracing.md b/doc/api/tracing.md index e03477b1adf20c..fbfa2941eff9ed 100644 --- a/doc/api/tracing.md +++ b/doc/api/tracing.md @@ -19,3 +19,7 @@ node --trace-events-enabled --trace-event-categories v8,node,node.async_hooks se Running Node.js with tracing enabled will produce log files that can be opened in the [`chrome://tracing`](https://www.chromium.org/developers/how-tos/trace-event-profiling-tool) tab of Chrome. + +Starting with Node 10.0.0, the tracing system uses the same time source as the +one used by `process.hrtime()` however the trace-event timestamps are expressed +in microseconds, unlike `process.hrtime()` which returns nanoseconds. diff --git a/src/tracing/agent.h b/src/tracing/agent.h index bd8e90004b015c..203f53be7eaecc 100644 --- a/src/tracing/agent.h +++ b/src/tracing/agent.h @@ -8,7 +8,14 @@ namespace node { namespace tracing { -using v8::platform::tracing::TracingController; +class TracingController : public v8::platform::tracing::TracingController { + public: + TracingController() : v8::platform::tracing::TracingController() {} + + int64_t CurrentTimestampMicroseconds() override { + return uv_hrtime() / 1000; + } +}; class Agent { public: