| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/process/process_metrics.h" | 5 #include "base/process/process_metrics.h" |
| 6 | 6 |
| 7 #include <dirent.h> | 7 #include <dirent.h> |
| 8 #include <fcntl.h> | 8 #include <fcntl.h> |
| 9 #include <sys/stat.h> | 9 #include <sys/stat.h> |
| 10 #include <sys/time.h> | 10 #include <sys/time.h> |
| (...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 res->SetInteger("pswpin", pswpin); | 517 res->SetInteger("pswpin", pswpin); |
| 518 res->SetInteger("pswpout", pswpout); | 518 res->SetInteger("pswpout", pswpout); |
| 519 res->SetInteger("pgmajfault", pgmajfault); | 519 res->SetInteger("pgmajfault", pgmajfault); |
| 520 #ifdef OS_CHROMEOS | 520 #ifdef OS_CHROMEOS |
| 521 res->SetInteger("shmem", shmem); | 521 res->SetInteger("shmem", shmem); |
| 522 res->SetInteger("slab", slab); | 522 res->SetInteger("slab", slab); |
| 523 res->SetInteger("gem_objects", gem_objects); | 523 res->SetInteger("gem_objects", gem_objects); |
| 524 res->SetInteger("gem_size", gem_size); | 524 res->SetInteger("gem_size", gem_size); |
| 525 #endif | 525 #endif |
| 526 | 526 |
| 527 return res.PassAs<Value>(); | 527 return res.Pass(); |
| 528 } | 528 } |
| 529 | 529 |
| 530 // exposed for testing | 530 // exposed for testing |
| 531 bool ParseProcMeminfo(const std::string& meminfo_data, | 531 bool ParseProcMeminfo(const std::string& meminfo_data, |
| 532 SystemMemoryInfoKB* meminfo) { | 532 SystemMemoryInfoKB* meminfo) { |
| 533 // The format of /proc/meminfo is: | 533 // The format of /proc/meminfo is: |
| 534 // | 534 // |
| 535 // MemTotal: 8235324 kB | 535 // MemTotal: 8235324 kB |
| 536 // MemFree: 1628304 kB | 536 // MemFree: 1628304 kB |
| 537 // Buffers: 429596 kB | 537 // Buffers: 429596 kB |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 724 res->SetDouble("sectors_read", static_cast<double>(sectors_read)); | 724 res->SetDouble("sectors_read", static_cast<double>(sectors_read)); |
| 725 res->SetDouble("read_time", static_cast<double>(read_time)); | 725 res->SetDouble("read_time", static_cast<double>(read_time)); |
| 726 res->SetDouble("writes", static_cast<double>(writes)); | 726 res->SetDouble("writes", static_cast<double>(writes)); |
| 727 res->SetDouble("writes_merged", static_cast<double>(writes_merged)); | 727 res->SetDouble("writes_merged", static_cast<double>(writes_merged)); |
| 728 res->SetDouble("sectors_written", static_cast<double>(sectors_written)); | 728 res->SetDouble("sectors_written", static_cast<double>(sectors_written)); |
| 729 res->SetDouble("write_time", static_cast<double>(write_time)); | 729 res->SetDouble("write_time", static_cast<double>(write_time)); |
| 730 res->SetDouble("io", static_cast<double>(io)); | 730 res->SetDouble("io", static_cast<double>(io)); |
| 731 res->SetDouble("io_time", static_cast<double>(io_time)); | 731 res->SetDouble("io_time", static_cast<double>(io_time)); |
| 732 res->SetDouble("weighted_io_time", static_cast<double>(weighted_io_time)); | 732 res->SetDouble("weighted_io_time", static_cast<double>(weighted_io_time)); |
| 733 | 733 |
| 734 return res.PassAs<Value>(); | 734 return res.Pass(); |
| 735 } | 735 } |
| 736 | 736 |
| 737 bool IsValidDiskName(const std::string& candidate) { | 737 bool IsValidDiskName(const std::string& candidate) { |
| 738 if (candidate.length() < 3) | 738 if (candidate.length() < 3) |
| 739 return false; | 739 return false; |
| 740 if (candidate[1] == 'd' && | 740 if (candidate[1] == 'd' && |
| 741 (candidate[0] == 'h' || candidate[0] == 's' || candidate[0] == 'v')) { | 741 (candidate[0] == 'h' || candidate[0] == 's' || candidate[0] == 'v')) { |
| 742 // [hsv]d[a-z]+ case | 742 // [hsv]d[a-z]+ case |
| 743 for (size_t i = 2; i < candidate.length(); ++i) { | 743 for (size_t i = 2; i < candidate.length(); ++i) { |
| 744 if (!islower(candidate[i])) | 744 if (!islower(candidate[i])) |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 849 res->SetDouble("num_writes", static_cast<double>(num_writes)); | 849 res->SetDouble("num_writes", static_cast<double>(num_writes)); |
| 850 res->SetDouble("orig_data_size", static_cast<double>(orig_data_size)); | 850 res->SetDouble("orig_data_size", static_cast<double>(orig_data_size)); |
| 851 res->SetDouble("compr_data_size", static_cast<double>(compr_data_size)); | 851 res->SetDouble("compr_data_size", static_cast<double>(compr_data_size)); |
| 852 res->SetDouble("mem_used_total", static_cast<double>(mem_used_total)); | 852 res->SetDouble("mem_used_total", static_cast<double>(mem_used_total)); |
| 853 if (compr_data_size > 0) | 853 if (compr_data_size > 0) |
| 854 res->SetDouble("compression_ratio", static_cast<double>(orig_data_size) / | 854 res->SetDouble("compression_ratio", static_cast<double>(orig_data_size) / |
| 855 static_cast<double>(compr_data_size)); | 855 static_cast<double>(compr_data_size)); |
| 856 else | 856 else |
| 857 res->SetDouble("compression_ratio", 0); | 857 res->SetDouble("compression_ratio", 0); |
| 858 | 858 |
| 859 return res.PassAs<Value>(); | 859 return res.Pass(); |
| 860 } | 860 } |
| 861 | 861 |
| 862 void GetSwapInfo(SwapInfo* swap_info) { | 862 void GetSwapInfo(SwapInfo* swap_info) { |
| 863 // Synchronously reading files in /sys/block/zram0 does not hit the disk. | 863 // Synchronously reading files in /sys/block/zram0 does not hit the disk. |
| 864 ThreadRestrictions::ScopedAllowIO allow_io; | 864 ThreadRestrictions::ScopedAllowIO allow_io; |
| 865 | 865 |
| 866 FilePath zram_path("/sys/block/zram0"); | 866 FilePath zram_path("/sys/block/zram0"); |
| 867 uint64 orig_data_size = ReadFileToUint64(zram_path.Append("orig_data_size")); | 867 uint64 orig_data_size = ReadFileToUint64(zram_path.Append("orig_data_size")); |
| 868 if (orig_data_size <= 4096) { | 868 if (orig_data_size <= 4096) { |
| 869 // A single page is compressed at startup, and has a high compression | 869 // A single page is compressed at startup, and has a high compression |
| (...skipping 18 matching lines...) Expand all Loading... |
| 888 #if defined(OS_LINUX) | 888 #if defined(OS_LINUX) |
| 889 int ProcessMetrics::GetIdleWakeupsPerSecond() { | 889 int ProcessMetrics::GetIdleWakeupsPerSecond() { |
| 890 uint64 wake_ups; | 890 uint64 wake_ups; |
| 891 const char kWakeupStat[] = "se.statistics.nr_wakeups"; | 891 const char kWakeupStat[] = "se.statistics.nr_wakeups"; |
| 892 return ReadProcSchedAndGetFieldAsUint64(process_, kWakeupStat, &wake_ups) ? | 892 return ReadProcSchedAndGetFieldAsUint64(process_, kWakeupStat, &wake_ups) ? |
| 893 CalculateIdleWakeupsPerSecond(wake_ups) : 0; | 893 CalculateIdleWakeupsPerSecond(wake_ups) : 0; |
| 894 } | 894 } |
| 895 #endif // defined(OS_LINUX) | 895 #endif // defined(OS_LINUX) |
| 896 | 896 |
| 897 } // namespace base | 897 } // namespace base |
| OLD | NEW |