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.

Reply via email to