Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 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 "content/browser/memory/swap_metrics_observer_linux.h" | |
| 6 | |
| 7 #include "base/metrics/histogram_macros.h" | |
| 8 #include "base/process/process_metrics.h" | |
| 9 | |
| 10 namespace content { | |
| 11 | |
| 12 // static | |
| 13 SwapMetricsObserver* SwapMetricsObserver::GetInstance() { | |
| 14 return SwapMetricsObserverLinux::GetInstance(); | |
| 15 } | |
| 16 | |
| 17 // static | |
| 18 SwapMetricsObserverLinux* SwapMetricsObserverLinux::GetInstance() { | |
| 19 return base::Singleton< | |
|
Primiano Tucci (use gerrit)
2017/04/27 10:01:20
IWYU (+base/singleton.h).
BTW these days you can j
bashi
2017/04/28 02:05:35
Changed to use static local. Thanks for the info!
| |
| 20 SwapMetricsObserverLinux, | |
| 21 base::LeakySingletonTraits<SwapMetricsObserverLinux>>::get(); | |
| 22 } | |
| 23 | |
| 24 SwapMetricsObserverLinux::SwapMetricsObserverLinux() {} | |
| 25 | |
| 26 SwapMetricsObserverLinux::~SwapMetricsObserverLinux() {} | |
| 27 | |
| 28 void SwapMetricsObserverLinux::UpdateMetricsInternal(base::TimeDelta interval) { | |
| 29 base::SystemMemoryInfoKB memory_info; | |
| 30 if (!base::GetSystemMemoryInfo(&memory_info)) | |
| 31 return; | |
| 32 | |
| 33 // Don't record metrics when the system doesn't seem to have swap. | |
| 34 if (memory_info.pswpin == 0) | |
| 35 return; | |
|
Primiano Tucci (use gerrit)
2017/04/27 10:01:20
maybe also stop the timer in these failure cases?
bashi
2017/04/28 02:05:35
Yes. Probably we shouldn't start the timer in the
| |
| 36 | |
| 37 double in_counts = memory_info.pswpin - last_pswpin_; | |
| 38 double out_counts = memory_info.pswpout - last_pswpout_; | |
| 39 last_pswpin_ = memory_info.pswpin; | |
| 40 last_pswpout_ = memory_info.pswpout; | |
| 41 | |
| 42 if (interval.is_zero()) | |
| 43 return; | |
| 44 | |
| 45 UMA_HISTOGRAM_COUNTS_10000("Memory.Experimental.SwapInPerSecond", | |
| 46 in_counts / interval.InSecondsF()); | |
| 47 UMA_HISTOGRAM_COUNTS_10000("Memory.Experimental.SwapOutPerSecond", | |
| 48 out_counts / interval.InSecondsF()); | |
| 49 } | |
| 50 | |
| 51 } // namespace content | |
| OLD | NEW |