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 <stddef.h> | 9 #include <stddef.h> |
10 #include <stdint.h> | 10 #include <stdint.h> |
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 const size_t kDiskWrites = 7; | 525 const size_t kDiskWrites = 7; |
526 const size_t kDiskWritesMerged = 8; | 526 const size_t kDiskWritesMerged = 8; |
527 const size_t kDiskSectorsWritten = 9; | 527 const size_t kDiskSectorsWritten = 9; |
528 const size_t kDiskWriteTime = 10; | 528 const size_t kDiskWriteTime = 10; |
529 const size_t kDiskIO = 11; | 529 const size_t kDiskIO = 11; |
530 const size_t kDiskIOTime = 12; | 530 const size_t kDiskIOTime = 12; |
531 const size_t kDiskWeightedIOTime = 13; | 531 const size_t kDiskWeightedIOTime = 13; |
532 | 532 |
533 } // namespace | 533 } // namespace |
534 | 534 |
| 535 SystemMemoryInfoKB::SystemMemoryInfoKB() { |
| 536 total = 0; |
| 537 free = 0; |
| 538 #if defined(OS_LINUX) |
| 539 available = 0; |
| 540 #endif |
| 541 buffers = 0; |
| 542 cached = 0; |
| 543 active_anon = 0; |
| 544 inactive_anon = 0; |
| 545 active_file = 0; |
| 546 inactive_file = 0; |
| 547 swap_total = 0; |
| 548 swap_free = 0; |
| 549 dirty = 0; |
| 550 |
| 551 pswpin = 0; |
| 552 pswpout = 0; |
| 553 pgmajfault = 0; |
| 554 |
| 555 #ifdef OS_CHROMEOS |
| 556 shmem = 0; |
| 557 slab = 0; |
| 558 gem_objects = -1; |
| 559 gem_size = -1; |
| 560 #endif |
| 561 } |
| 562 |
| 563 SystemMemoryInfoKB::SystemMemoryInfoKB(const SystemMemoryInfoKB& other) = |
| 564 default; |
| 565 |
535 std::unique_ptr<Value> SystemMemoryInfoKB::ToValue() const { | 566 std::unique_ptr<Value> SystemMemoryInfoKB::ToValue() const { |
536 std::unique_ptr<DictionaryValue> res(new DictionaryValue()); | 567 std::unique_ptr<DictionaryValue> res(new DictionaryValue()); |
537 | 568 |
538 res->SetInteger("total", total); | 569 res->SetInteger("total", total); |
539 res->SetInteger("free", free); | 570 res->SetInteger("free", free); |
| 571 #if defined(OS_LINUX) |
540 res->SetInteger("available", available); | 572 res->SetInteger("available", available); |
| 573 #endif |
541 res->SetInteger("buffers", buffers); | 574 res->SetInteger("buffers", buffers); |
542 res->SetInteger("cached", cached); | 575 res->SetInteger("cached", cached); |
543 res->SetInteger("active_anon", active_anon); | 576 res->SetInteger("active_anon", active_anon); |
544 res->SetInteger("inactive_anon", inactive_anon); | 577 res->SetInteger("inactive_anon", inactive_anon); |
545 res->SetInteger("active_file", active_file); | 578 res->SetInteger("active_file", active_file); |
546 res->SetInteger("inactive_file", inactive_file); | 579 res->SetInteger("inactive_file", inactive_file); |
547 res->SetInteger("swap_total", swap_total); | 580 res->SetInteger("swap_total", swap_total); |
548 res->SetInteger("swap_free", swap_free); | 581 res->SetInteger("swap_free", swap_free); |
549 res->SetInteger("swap_used", swap_total - swap_free); | 582 res->SetInteger("swap_used", swap_total - swap_free); |
550 res->SetInteger("dirty", dirty); | 583 res->SetInteger("dirty", dirty); |
551 res->SetInteger("reclaimable", reclaimable); | |
552 res->SetInteger("pswpin", pswpin); | 584 res->SetInteger("pswpin", pswpin); |
553 res->SetInteger("pswpout", pswpout); | 585 res->SetInteger("pswpout", pswpout); |
554 res->SetInteger("pgmajfault", pgmajfault); | 586 res->SetInteger("pgmajfault", pgmajfault); |
555 #ifdef OS_CHROMEOS | 587 #ifdef OS_CHROMEOS |
556 res->SetInteger("shmem", shmem); | 588 res->SetInteger("shmem", shmem); |
557 res->SetInteger("slab", slab); | 589 res->SetInteger("slab", slab); |
558 res->SetInteger("gem_objects", gem_objects); | 590 res->SetInteger("gem_objects", gem_objects); |
559 res->SetInteger("gem_size", gem_size); | 591 res->SetInteger("gem_size", gem_size); |
560 #endif | 592 #endif |
561 | 593 |
(...skipping 27 matching lines...) Expand all Loading... |
589 DLOG(WARNING) << "meminfo: tokens: " << tokens.size() | 621 DLOG(WARNING) << "meminfo: tokens: " << tokens.size() |
590 << " malformed line: " << line.as_string(); | 622 << " malformed line: " << line.as_string(); |
591 continue; | 623 continue; |
592 } | 624 } |
593 | 625 |
594 int* target = NULL; | 626 int* target = NULL; |
595 if (tokens[0] == "MemTotal:") | 627 if (tokens[0] == "MemTotal:") |
596 target = &meminfo->total; | 628 target = &meminfo->total; |
597 else if (tokens[0] == "MemFree:") | 629 else if (tokens[0] == "MemFree:") |
598 target = &meminfo->free; | 630 target = &meminfo->free; |
| 631 #if defined(OS_LINUX) |
599 else if (tokens[0] == "MemAvailable:") | 632 else if (tokens[0] == "MemAvailable:") |
600 target = &meminfo->available; | 633 target = &meminfo->available; |
| 634 #endif |
601 else if (tokens[0] == "Buffers:") | 635 else if (tokens[0] == "Buffers:") |
602 target = &meminfo->buffers; | 636 target = &meminfo->buffers; |
603 else if (tokens[0] == "Cached:") | 637 else if (tokens[0] == "Cached:") |
604 target = &meminfo->cached; | 638 target = &meminfo->cached; |
605 else if (tokens[0] == "Active(anon):") | 639 else if (tokens[0] == "Active(anon):") |
606 target = &meminfo->active_anon; | 640 target = &meminfo->active_anon; |
607 else if (tokens[0] == "Inactive(anon):") | 641 else if (tokens[0] == "Inactive(anon):") |
608 target = &meminfo->inactive_anon; | 642 target = &meminfo->inactive_anon; |
609 else if (tokens[0] == "Active(file):") | 643 else if (tokens[0] == "Active(file):") |
610 target = &meminfo->active_file; | 644 target = &meminfo->active_file; |
611 else if (tokens[0] == "Inactive(file):") | 645 else if (tokens[0] == "Inactive(file):") |
612 target = &meminfo->inactive_file; | 646 target = &meminfo->inactive_file; |
613 else if (tokens[0] == "SwapTotal:") | 647 else if (tokens[0] == "SwapTotal:") |
614 target = &meminfo->swap_total; | 648 target = &meminfo->swap_total; |
615 else if (tokens[0] == "SwapFree:") | 649 else if (tokens[0] == "SwapFree:") |
616 target = &meminfo->swap_free; | 650 target = &meminfo->swap_free; |
617 else if (tokens[0] == "Dirty:") | 651 else if (tokens[0] == "Dirty:") |
618 target = &meminfo->dirty; | 652 target = &meminfo->dirty; |
619 else if (tokens[0] == "SReclaimable:") | |
620 target = &meminfo->reclaimable; | |
621 #if defined(OS_CHROMEOS) | 653 #if defined(OS_CHROMEOS) |
622 // Chrome OS has a tweaked kernel that allows us to query Shmem, which is | 654 // Chrome OS has a tweaked kernel that allows us to query Shmem, which is |
623 // usually video memory otherwise invisible to the OS. | 655 // usually video memory otherwise invisible to the OS. |
624 else if (tokens[0] == "Shmem:") | 656 else if (tokens[0] == "Shmem:") |
625 target = &meminfo->shmem; | 657 target = &meminfo->shmem; |
626 else if (tokens[0] == "Slab:") | 658 else if (tokens[0] == "Slab:") |
627 target = &meminfo->slab; | 659 target = &meminfo->slab; |
628 #endif | 660 #endif |
629 if (target) | 661 if (target) |
630 StringToInt(tokens[1], target); | 662 StringToInt(tokens[1], target); |
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
934 #if defined(OS_LINUX) | 966 #if defined(OS_LINUX) |
935 int ProcessMetrics::GetIdleWakeupsPerSecond() { | 967 int ProcessMetrics::GetIdleWakeupsPerSecond() { |
936 uint64_t wake_ups; | 968 uint64_t wake_ups; |
937 const char kWakeupStat[] = "se.statistics.nr_wakeups"; | 969 const char kWakeupStat[] = "se.statistics.nr_wakeups"; |
938 return ReadProcSchedAndGetFieldAsUint64(process_, kWakeupStat, &wake_ups) ? | 970 return ReadProcSchedAndGetFieldAsUint64(process_, kWakeupStat, &wake_ups) ? |
939 CalculateIdleWakeupsPerSecond(wake_ups) : 0; | 971 CalculateIdleWakeupsPerSecond(wake_ups) : 0; |
940 } | 972 } |
941 #endif // defined(OS_LINUX) | 973 #endif // defined(OS_LINUX) |
942 | 974 |
943 } // namespace base | 975 } // namespace base |
OLD | NEW |