Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(653)

Unified Diff: content/browser/memory/swap_metrics_observer_mac.cc

Issue 2852033002: Add SwapMetricsObserverMac (Closed)
Patch Set: kern_return_t Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/memory/swap_metrics_observer_mac.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/memory/swap_metrics_observer_mac.cc
diff --git a/content/browser/memory/swap_metrics_observer_mac.cc b/content/browser/memory/swap_metrics_observer_mac.cc
index d44b50fe543b11a7d633a3ed138595239157e837..65f5bdab95f95ec1b7e19ee93fbb333f808c21b1 100644
--- a/content/browser/memory/swap_metrics_observer_mac.cc
+++ b/content/browser/memory/swap_metrics_observer_mac.cc
@@ -2,14 +2,59 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "content/browser/memory/swap_metrics_observer.h"
+#include "content/browser/memory/swap_metrics_observer_mac.h"
+
+#include <mach/mach.h>
+#include <mach/mach_vm.h>
+
+#include "base/mac/mach_logging.h"
+#include "base/metrics/histogram_macros.h"
namespace content {
// static
SwapMetricsObserver* SwapMetricsObserver::GetInstance() {
- // TODO(bashi): Implement SwapMetricsObserver for macOS.
- return nullptr;
+ static SwapMetricsObserverMac* instance = new SwapMetricsObserverMac();
+ return instance;
+}
+
+SwapMetricsObserverMac::SwapMetricsObserverMac() : host_(mach_host_self()) {}
+
+SwapMetricsObserverMac::~SwapMetricsObserverMac() {}
+
+void SwapMetricsObserverMac::UpdateMetricsInternal(base::TimeDelta interval) {
+ vm_statistics64_data_t statistics;
+ mach_msg_type_number_t count = HOST_VM_INFO64_COUNT;
+ kern_return_t result =
+ host_statistics64(host_.get(), HOST_VM_INFO64,
+ reinterpret_cast<host_info64_t>(&statistics), &count);
+ if (result != KERN_SUCCESS) {
+ MACH_DLOG(WARNING, result) << "host_statistics64";
+ Stop();
+ return;
+ }
+ DCHECK_EQ(HOST_VM_INFO64_COUNT, count);
+
+ double swapins = statistics.swapins - last_swapins_;
+ double swapouts = statistics.swapouts - last_swapouts_;
+ double decompressions = statistics.decompressions - last_decompressions_;
+ double compressions = statistics.compressions - last_compressions_;
+ last_swapins_ = statistics.swapins;
+ last_swapouts_ = statistics.swapouts;
+ last_decompressions_ = statistics.decompressions;
+ last_compressions_ = statistics.compressions;
+
+ if (interval.is_zero())
+ return;
+
+ UMA_HISTOGRAM_COUNTS_10000("Memory.Experimental.SwapInPerSecond",
+ swapins / interval.InSecondsF());
+ UMA_HISTOGRAM_COUNTS_10000("Memory.Experimental.SwapOutPerSecond",
+ swapouts / interval.InSecondsF());
+ UMA_HISTOGRAM_COUNTS_10000("Memory.Experimental.DecompressedPagesPerSecond",
+ decompressions / interval.InSecondsF());
+ UMA_HISTOGRAM_COUNTS_10000("Memory.Experimental.CompressedPagesPerSecond",
+ compressions / interval.InSecondsF());
}
} // namespace content
« no previous file with comments | « content/browser/memory/swap_metrics_observer_mac.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698