| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "components/startup_metric_utils/browser/startup_metric_utils.h" | 5 #include "components/startup_metric_utils/browser/startup_metric_utils.h" |
| 6 | 6 |
| 7 #include "base/containers/hash_tables.h" | 7 #include "base/containers/hash_tables.h" |
| 8 #include "base/environment.h" | 8 #include "base/environment.h" |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 341 | 341 |
| 342 const base::Time& process_creation_time = g_process_creation_time.Get(); | 342 const base::Time& process_creation_time = g_process_creation_time.Get(); |
| 343 if (!is_first_run && !process_creation_time.is_null()) { | 343 if (!is_first_run && !process_creation_time.is_null()) { |
| 344 UMA_HISTOGRAM_AND_TRACE_WITH_STARTUP_TEMPERATURE( | 344 UMA_HISTOGRAM_AND_TRACE_WITH_STARTUP_TEMPERATURE( |
| 345 UMA_HISTOGRAM_LONG_TIMES_100, "Startup.BrowserMessageLoopStartTime", | 345 UMA_HISTOGRAM_LONG_TIMES_100, "Startup.BrowserMessageLoopStartTime", |
| 346 process_creation_time, time); | 346 process_creation_time, time); |
| 347 } | 347 } |
| 348 | 348 |
| 349 // Bail if uptime < 7 minutes, to filter out cases where Chrome may have been | 349 // Bail if uptime < 7 minutes, to filter out cases where Chrome may have been |
| 350 // autostarted and the machine is under io pressure. | 350 // autostarted and the machine is under io pressure. |
| 351 const int64 kSevenMinutesInMilliseconds = | 351 if (base::SysInfo::Uptime() < base::TimeDelta::FromMinutes(7)) |
| 352 base::TimeDelta::FromMinutes(7).InMilliseconds(); | |
| 353 if (base::SysInfo::Uptime() < kSevenMinutesInMilliseconds) | |
| 354 return; | 352 return; |
| 355 | 353 |
| 356 // The Startup.BrowserMessageLoopStartTime histogram exhibits instability in | 354 // The Startup.BrowserMessageLoopStartTime histogram exhibits instability in |
| 357 // the field which limits its usefulness in all scenarios except when we have | 355 // the field which limits its usefulness in all scenarios except when we have |
| 358 // a very large sample size. Attempt to mitigate this with a new metric: | 356 // a very large sample size. Attempt to mitigate this with a new metric: |
| 359 // * Measure time from main entry rather than the OS' notion of process start. | 357 // * Measure time from main entry rather than the OS' notion of process start. |
| 360 // * Only measure launches that occur 7 minutes after boot to try to avoid | 358 // * Only measure launches that occur 7 minutes after boot to try to avoid |
| 361 // cases where Chrome is auto-started and IO is heavily loaded. | 359 // cases where Chrome is auto-started and IO is heavily loaded. |
| 362 const base::Time dll_main_time = MainEntryPointTime(); | 360 const base::Time dll_main_time = MainEntryPointTime(); |
| 363 if (is_first_run) { | 361 if (is_first_run) { |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 | 499 |
| 502 base::Time MainEntryPointTime() { | 500 base::Time MainEntryPointTime() { |
| 503 return g_main_entry_point_time.Get(); | 501 return g_main_entry_point_time.Get(); |
| 504 } | 502 } |
| 505 | 503 |
| 506 StartupTemperature GetStartupTemperature() { | 504 StartupTemperature GetStartupTemperature() { |
| 507 return g_startup_temperature; | 505 return g_startup_temperature; |
| 508 } | 506 } |
| 509 | 507 |
| 510 } // namespace startup_metric_utils | 508 } // namespace startup_metric_utils |
| OLD | NEW |