From 6b51c25820143ca6555f5e29030ae0fb58752525 Mon Sep 17 00:00:00 2001 From: Hari Krishna Reddy Juturu Date: Thu, 4 May 2017 14:48:37 -0700 Subject: [PATCH] Exposing cpu & io counters function similar to mem methods --- atom/common/api/atom_bindings.cc | 64 ++++++++++++++++---------------- atom/common/api/atom_bindings.h | 2 + 2 files changed, 35 insertions(+), 31 deletions(-) diff --git a/atom/common/api/atom_bindings.cc b/atom/common/api/atom_bindings.cc index a46f3bcf665a..675ec46a8c2a 100644 --- a/atom/common/api/atom_bindings.cc +++ b/atom/common/api/atom_bindings.cc @@ -24,37 +24,6 @@ namespace { // Dummy class type that used for crashing the program. struct DummyClass { bool crash; }; -v8::Local GetCPUUsage(v8::Isolate* isolate) { - std::unique_ptr metrics( - base::ProcessMetrics::CreateCurrentProcessMetrics()); - - mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate); - int processor_count = base::SysInfo::NumberOfProcessors(); - dict.Set("percentCPUUsage", - metrics->GetPlatformIndependentCPUUsage() / processor_count); - dict.Set("idleWakeupsPerSecond", metrics->GetIdleWakeupsPerSecond()); - - return dict.GetHandle(); -} - -v8::Local GetIOCounters(v8::Isolate* isolate) { - std::unique_ptr metrics( - base::ProcessMetrics::CreateCurrentProcessMetrics()); - base::IoCounters io_counters; - mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate); - - if (metrics->GetIOCounters(&io_counters)) { - dict.Set("readOperationCount", io_counters.ReadOperationCount); - dict.Set("writeOperationCount", io_counters.WriteOperationCount); - dict.Set("otherOperationCount", io_counters.OtherOperationCount); - dict.Set("readTransferCount", io_counters.ReadTransferCount); - dict.Set("writeTransferCount", io_counters.WriteTransferCount); - dict.Set("otherTransferCount", io_counters.OtherTransferCount); - } - - return dict.GetHandle(); -} - // Called when there is a fatal error in V8, we just crash the process here so // we can get the stack trace. void FatalErrorCallback(const char* location, const char* message) { @@ -205,4 +174,37 @@ v8::Local AtomBindings::GetSystemMemoryInfo(v8::Isolate* isolate, return dict.GetHandle(); } +// static +v8::Local AtomBindings::GetCPUUsage(v8::Isolate* isolate) { + std::unique_ptr metrics( + base::ProcessMetrics::CreateCurrentProcessMetrics()); + + mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate); + int processor_count = base::SysInfo::NumberOfProcessors(); + dict.Set("percentCPUUsage", + metrics->GetPlatformIndependentCPUUsage() / processor_count); + dict.Set("idleWakeupsPerSecond", metrics->GetIdleWakeupsPerSecond()); + + return dict.GetHandle(); +} + +// static +v8::Local AtomBindings::GetIOCounters(v8::Isolate* isolate) { + std::unique_ptr metrics( + base::ProcessMetrics::CreateCurrentProcessMetrics()); + base::IoCounters io_counters; + mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate); + + if (metrics->GetIOCounters(&io_counters)) { + dict.Set("readOperationCount", io_counters.ReadOperationCount); + dict.Set("writeOperationCount", io_counters.WriteOperationCount); + dict.Set("otherOperationCount", io_counters.OtherOperationCount); + dict.Set("readTransferCount", io_counters.ReadTransferCount); + dict.Set("writeTransferCount", io_counters.WriteTransferCount); + dict.Set("otherTransferCount", io_counters.OtherTransferCount); + } + + return dict.GetHandle(); +} + } // namespace atom diff --git a/atom/common/api/atom_bindings.h b/atom/common/api/atom_bindings.h index 09561b046b14..1deb50f7d0f2 100644 --- a/atom/common/api/atom_bindings.h +++ b/atom/common/api/atom_bindings.h @@ -37,6 +37,8 @@ class AtomBindings { static v8::Local GetProcessMemoryInfo(v8::Isolate* isolate); static v8::Local GetSystemMemoryInfo(v8::Isolate* isolate, mate::Arguments* args); + static v8::Local GetCPUUsage(v8::Isolate* isolate); + static v8::Local GetIOCounters(v8::Isolate* isolate); private: void ActivateUVLoop(v8::Isolate* isolate);