1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/process/process_metrics.h" 6 7 #include "base/values.h" 8 9 namespace base { 10 11 SystemMetrics::SystemMetrics() { 12 committed_memory_ = 0; 13 } 14 15 SystemMetrics SystemMetrics::Sample() { 16 SystemMetrics system_metrics; 17 18 system_metrics.committed_memory_ = GetSystemCommitCharge(); 19 #if defined(OS_LINUX) || defined(OS_ANDROID) 20 GetSystemMemoryInfo(&system_metrics.memory_info_); 21 GetSystemDiskInfo(&system_metrics.disk_info_); 22 #endif 23 #if defined(OS_CHROMEOS) 24 GetSwapInfo(&system_metrics.swap_info_); 25 #endif 26 27 return system_metrics; 28 } 29 30 scoped_ptr<Value> SystemMetrics::ToValue() const { 31 scoped_ptr<DictionaryValue> res(new DictionaryValue()); 32 33 res->SetInteger("committed_memory", static_cast<int>(committed_memory_)); 34 #if defined(OS_LINUX) || defined(OS_ANDROID) 35 res->Set("meminfo", memory_info_.ToValue().release()); 36 res->Set("diskinfo", disk_info_.ToValue().release()); 37 #endif 38 #if defined(OS_CHROMEOS) 39 res->Set("swapinfo", swap_info_.ToValue().release()); 40 #endif 41 42 return res.PassAs<Value>(); 43 } 44 45 double ProcessMetrics::GetPlatformIndependentCPUUsage() { 46 #if defined(OS_WIN) 47 return GetCPUUsage() * processor_count_; 48 #else 49 return GetCPUUsage(); 50 #endif 51 } 52 53 } // namespace base 54