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