Status: New
Owner: ----
New issue 3874 by [email protected]: Wall clock time profiling in heap.cc
and gc-tracer.cc is expensive
https://code.google.com/p/v8/issues/detail?id=3874
On systems where it's not cheap to obtain the current time - e.g. on
virtualized systems where the host has the emulate the system clock - I
observe that many io.js benchmarks are dominated by the amount of time
spent inside __vdso_gettimeofday.
Almost all of those calls can be traced back to the wall clock profiling in
Heap::PerformGarbageCollection(). When I remove the
OS::TimeCurrentMillis() calls, __vdso_gettimeofday disappears completely.
Example:
50.13%
iojs [vdso] [.] __vdso_gettimeofday
31.39%
__vdso_gettimeofday
v8::base::Time::Now()
v8::base::OS::TimeCurrentMillis()
v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector,
v8::GCCallbackFlags)
v8::internal::Heap::CollectGarbage(v8::internal::GarbageCollector, char
const*, char const*, v8::GCCallbackFlags)
v8::internal::Factory::NewUninitializedFixedArray(int)
v8::internal::Factory::NewJSArrayStorage(v8::internal::Handle<v8::internal::JSArray>,
int, int, v8::internal::ArrayStorageAllocationMode)
v8::internal::Factory::NewJSArray(v8::internal::ElementsKind, int, int,
v8::internal::ArrayStorageAllocationMode, v8::internal::PretenureFlag)
v8::internal::Builtin_ArraySlice(int,
v8::internal::Object**, v8::internal::Isolate*)
Stub:CEntryStub
LazyCompile:*main
/home/bnoordhuis/src/v1.x/benchmark/events/ee-listeners-many.js:6
LazyCompile:~Benchmark._run
/home/bnoordhuis/src/v1.x/benchmark/common.js:116
LazyCompile:~
/home/bnoordhuis/src/v1.x/benchmark/common.js:74
LazyCompile:_tickCallback node.js:327
LazyCompile:~Module.runMain module.js:485
LazyCompile:~startup node.js:12
Function:~ node.js:9
Builtin:JSEntryTrampoline
Stub:JSEntryStub
v8::internal::Execution::Call(v8::internal::Isolate*,
v8::internal::Handle<v8::internal::Object>,
v8::internal::Handle<v8::internal::Object>, int, v8::internal::H
v8::Function::Call(v8::Handle<v8::Value>, int,
v8::Handle<v8::Value>*)
node::LoadEnvironment(node::Environment*)
node::Start(int, char**)
__libc_start_main
0xa99e258d4c544155
13.86%
__vdso_gettimeofday
v8::base::Time::Now()
v8::base::OS::TimeCurrentMillis()
v8::internal::GCTracer::Start(v8::internal::GarbageCollector, char const*,
char const*)
v8::internal::Heap::CollectGarbage(v8::internal::GarbageCollector, char
const*, char const*, v8::GCCallbackFlags)
v8::internal::Factory::NewUninitializedFixedArray(int)
v8::internal::Factory::NewJSArrayStorage(v8::internal::Handle<v8::internal::JSArray>,
int, int, v8::internal::ArrayStorageAllocationMode)
v8::internal::Factory::NewJSArray(v8::internal::ElementsKind, int, int,
v8::internal::ArrayStorageAllocationMode, v8::internal::PretenureFlag)
v8::internal::Builtin_ArraySlice(int,
v8::internal::Object**, v8::internal::Isolate*)
Stub:CEntryStub
LazyCompile:*main
/home/bnoordhuis/src/v1.x/benchmark/events/ee-listeners-many.js:6
LazyCompile:~Benchmark._run
/home/bnoordhuis/src/v1.x/benchmark/common.js:116
LazyCompile:~
/home/bnoordhuis/src/v1.x/benchmark/common.js:74
LazyCompile:_tickCallback node.js:327
LazyCompile:~Module.runMain module.js:485
LazyCompile:~startup node.js:12
Function:~ node.js:9
Builtin:JSEntryTrampoline
Stub:JSEntryStub
v8::internal::Execution::Call(v8::internal::Isolate*,
v8::internal::Handle<v8::internal::Object>,
v8::internal::Handle<v8::internal::Object>, int, v8::internal::H
v8::Function::Call(v8::Handle<v8::Value>, int,
v8::Handle<v8::Value>*)
node::LoadEnvironment(node::Environment*)
node::Start(int, char**)
__libc_start_main
0xa99e258d4c544155
4.18%
__vdso_gettimeofday
v8::base::Time::Now()
v8::base::OS::TimeCurrentMillis()
v8::internal::GCTracer::Stop(v8::internal::GarbageCollector)
v8::internal::Heap::CollectGarbage(v8::internal::GarbageCollector, char
const*, char const*, v8::GCCallbackFlags)
v8::internal::Factory::NewUninitializedFixedArray(int)
v8::internal::Factory::NewJSArrayStorage(v8::internal::Handle<v8::internal::JSArray>,
int, int, v8::internal::ArrayStorageAllocationMode)
v8::internal::Factory::NewJSArray(v8::internal::ElementsKind, int, int,
v8::internal::ArrayStorageAllocationMode, v8::internal::PretenureFlag)
v8::internal::Builtin_ArraySlice(int,
v8::internal::Object**, v8::internal::Isolate*)
Stub:CEntryStub
LazyCompile:*main
/home/bnoordhuis/src/v1.x/benchmark/events/ee-listeners-many.js:6
LazyCompile:~Benchmark._run
/home/bnoordhuis/src/v1.x/benchmark/common.js:116
LazyCompile:~
/home/bnoordhuis/src/v1.x/benchmark/common.js:74
LazyCompile:_tickCallback node.js:327
LazyCompile:~Module.runMain module.js:485
LazyCompile:~startup node.js:12
Function:~ node.js:9
Builtin:JSEntryTrampoline
Stub:JSEntryStub
v8::internal::Execution::Call(v8::internal::Isolate*,
v8::internal::Handle<v8::internal::Object>,
v8::internal::Handle<v8::internal::Object>, int, v8::internal::H
v8::Function::Call(v8::Handle<v8::Value>, int,
v8::Handle<v8::Value>*)
node::LoadEnvironment(node::Environment*)
node::Start(int, char**)
__libc_start_main
0xa99e258d4c544155
--
You received this message because this project is configured to send all
issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.