HANDLE_EINTR is both not safe and not useful on Linux systems.
Switch to IGNORE_EINTR like Chromium has done everywhere.
See http://crbug.com/269623 for details.
BUG=chromium:373154
TEST=`cbuildbot {arm,amd64,x86}-generic-full` passes
Change-Id: I3d99bb2376cb7961ac31ba0fa82bafc1b4c14bd9
Reviewed-on: https://chromium-review.googlesource.com/199821
Reviewed-by: Daniel Erat <derat@chromium.org>
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
Maintain separate persistent values for DailyActiveUse and
CumulativeActiveUse. The latter is used to compute crash rates
relative to active use.
BUG=chromium:364746
TEST=manual
Change-Id: I4d0485016eb49b30a77169ba1cedc1ffbff8810e
Reviewed-on: https://chromium-review.googlesource.com/195698
Reviewed-by: Daniel Erat <derat@chromium.org>
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Also log to stderr when not running as daemon.
BUG=chromium:364700
TEST=manually verified in both daemon and non-daemon modes
Change-Id: If62f70c1d327a5ecaf3075b6689b83a1494c09d5
Reviewed-on: https://chromium-review.googlesource.com/199380
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Reviewed-by: Daniel Erat <derat@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
BUG=chromium:366984
TEST=`FEATURES=test emerge-$BOARD platform2` and verify libmetrics-242728.pc is created.
Change-Id: I3cd79e7421a5f666a4bf2551c87086f779078771
Reviewed-on: https://chromium-review.googlesource.com/196974
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Ben Chan <benchan@chromium.org>
x86-generic ASAN builder unittest failed at
metrics_daemon_test.cc:33:18: error: unused variable 'kSecondsPerDay'.
Hopefully this can fix the failure.
BUG=chromium:364818
TEST=NONE
Change-Id: Icb63ed50a285e5f9a522d9dc2a7ab98f4affbf74
Reviewed-on: https://chromium-review.googlesource.com/195557
Reviewed-by: Kuang-che Wu <kcwu@chromium.org>
Commit-Queue: Wu-Cheng Li <wuchengli@chromium.org>
Tested-by: Wu-Cheng Li <wuchengli@chromium.org>
Reviewed-by: Daniel Erat <derat@chromium.org>
Stop listening for the soon-to-deleted PowerStateChanged
D-Bus signal from powerd; the code that was listening for
it had some issues (there was no guarantee that it'd run
before the system suspended, and resumes weren't handled at
all).
Also remove the session-state- and screen-lock-handling
code; it provided an inaccurate view of user activity (what
if the user is listening to music with the screen locked or
if they don't have screen-locking enabled?).
Track uptime instead via a timer that fires every five
minutes.
BUG=chromium:359619
TEST=manual: ran metrics_daemon --nodaemon and watched the
logs
Change-Id: I4ad74773daefa01afdea080d20001ff1944c2eee
Reviewed-on: https://chromium-review.googlesource.com/195491
Reviewed-by: Daniel Erat <derat@chromium.org>
Commit-Queue: Daniel Erat <derat@chromium.org>
Tested-by: Daniel Erat <derat@chromium.org>
This had been lost in the previous changes. Also, the meaning
of DailyUse changes: it is now cumulative daily use. But we should
revise these stats so I think it's OK for now.
BUG=chromium:339588
TEST=unit tests
Change-Id: I4894fef0ffb237633abcf949c01dd7ea5f5e5d6e
Reviewed-on: https://chromium-review.googlesource.com/195005
Reviewed-by: Daniel Erat <derat@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
As the subject says, I don't think this can change any of the
behavior, but the argument to Write() was ignored and merely
confusing.
BUG=chromium:339588
TEST=ran unit tests
Change-Id: Ie6d59e6879a734523978c21d66170721e0f499c7
Reviewed-on: https://chromium-review.googlesource.com/194919
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Reviewed-by: Daniel Erat <derat@chromium.org>
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
"atoi" and "atod" don't do any conversions or error checks, they
just return 0 on error. They should be illegal.
BUG=chromium:356932
TEST=checked various valid and invalid inputs
Change-Id: I53a92ccab5f44e18e8ac27154c2b2826d355a6c0
Reviewed-on: https://chromium-review.googlesource.com/191971
Reviewed-by: Darren Krahn <dkrahn@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
It looks like all the other people who made significant contributions
to this project have left the team.
BUG=none
TEST=none
Change-Id: Ie572a43e85cee565c71c4101d1474e77e51449e5
Reviewed-on: https://chromium-review.googlesource.com/192008
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Adds a few kernel crash stats which are reported daily but
are accumulated from beginning to end of a Chrome OS version.
BUG=chromium:339588
TEST=ran and checked histograms on device
BRANCH=none
Change-Id: I630c673156c28dc90ffe0c9c2df58caaada082dc
Reviewed-on: https://chromium-review.googlesource.com/190404
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
This cast the type of the paramenter of abs() to integer before
calling the abs() function.
BUG=chromium:352331
TEST=FEATURES="test" emerge-amd64-generic platform2 passes.
Change-Id: Id8b994b743345456f14194b45f3a288b7e3b74f3
Reviewed-on: https://chromium-review.googlesource.com/189849
Reviewed-by: Caroline Tice <cmtice@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Yunlian Jiang <yunlian@chromium.org>
Commit-Queue: Yunlian Jiang <yunlian@chromium.org>
The metrics daemon had counter classes that represented
persistent, tagged values, and UMA stats. To create some
derived UMA stats we need to separate persistency and UMA stats,
and the tagging doesn't help either.
This rewrite is supposed to keep the same functionality.
BUG=chromium:339588
TEST=ran and checked a few histograms
BRANCH=none
Change-Id: Ia1121ab2db391d71edffab9f52afe29ce17686ba
Reviewed-on: https://chromium-review.googlesource.com/188082
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Also add 'virtual' and 'OVERRIDE' to overridden methods.
BUG=none
TEST=did a build
Change-Id: Iec71c59853b6ada38b20cea9d0605c3d39e9353f
Reviewed-on: https://chromium-review.googlesource.com/189398
Reviewed-by: Daniel Erat <derat@chromium.org>
Commit-Queue: Daniel Erat <derat@chromium.org>
Tested-by: Daniel Erat <derat@chromium.org>
We are moving the init scripts out of chromeos-init
and into metrics/init.
BUG=chromium:346444
TEST=cbuildbot on x86-alex-paladin
CQ-DEPEND=CL:187455, CL:187470
Change-Id: If226addfaa154794361d3cf9687ca336b95b3104
Reviewed-on: https://chromium-review.googlesource.com/187456
Reviewed-by: Gaurav Shah <gauravsh@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Bertrand Simonnet <bsimonnet@chromium.org>
Tested-by: Bertrand Simonnet <bsimonnet@chromium.org>
This adds counters that accumulate some measurement across an OS version;
they are reset at version updates, but reported more frequently (for instance,
daily).
Such counts could be obtained by pseudonymous dremel queries, but this is
more convenient.
The code replaces the "tag" datum in the counters with two tags: a
"report tag" and a "reset tag". When the report
tag changes, the count is reported but not reset. When the reset tag
changes, the count is both reported and reset.
This also adds one usage of the new counter which tracks the total
number of kernel crashes since the most recent OS version update.
The state machine in counter.cc changes a bit because it's no longer
true that a counter is reset after reporting it. That logic is
still rather confusing, and could use a rewrite.
BUG=chromium:339588
TEST=ran on target under various situations
BRANCH=none
Change-Id: I5f83731e1a3d6e055b6d0f89111c9ffc60ccfcb9
Reviewed-on: https://chromium-review.googlesource.com/185081
Reviewed-by: Daniel Erat <derat@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
For security reasons, we changed the location of some flag
files to /var/run from /tmp, but we didn't update this
program to look for the files in their new location.
This corrects the problem.
BUG=chromium:200181
TEST=manually verified that kernel crash counters increase
BRANCH=none
Change-Id: I03efe6179a1ad8dfd4c8cbb1eccf24c7a8494058
Reviewed-on: https://chromium-review.googlesource.com/186692
Reviewed-by: Chris Masone <cmasone@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
metrics is now part of platform2 and built using gyp.
BUG=chromium:342154
TEST=Trybot runs on x86-mario,lumpy,daisy paladin and release builders.
Change-Id: I69c5622399cab9d8508dc75310972ae638f0cac7
Reviewed-on: https://chromium-review.googlesource.com/186194
Commit-Queue: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
This CL updates metrics to build against libchrome-242728 and also converts
libmetrics into slotted libraries (libmetrics-180609 and libmetrics-242728).
BUG=chromium:341521
BUG=chromium:342866
CQ-DEPEND=CL:186027
CQ-DEPEND=CL:186026
CQ-DEPEND=CL:186037
CQ-DEPEND=CL:186092
CQ-DEPEND=CL:186028
CQ-DEPEND=CL:186029
CQ-DEPEND=CL:186038
CQ-DEPEND=CL:186093
CQ-DEPEND=CL:186100
CQ-DEPEND=CL:186039
TEST=Trybot run on paladin, release, and chromiumos-sdk builders.
Change-Id: I09dc3d47cfe24a22864abf217658c63493b35cba
Reviewed-on: https://chromium-review.googlesource.com/185187
Reviewed-by: Ben Chan <benchan@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Ben Chan <benchan@chromium.org>
This fixes build warnings when using clang:
.../metrics/metrics_library.cc:235:30: warning: format string is not a string literal [-Wformat-nonliteral]
format, args);
^~~~~~
BUG=None
TEST=`FEATURES=test emerge-x86-alex platform2` works & doesn't warn
TEST=`FEATURES=test emerge-daisyplatform2` works & doesn't warn
TEST=`FEATURES=test emerge-lumpy platform2` works & doesn't warn
Change-Id: I03bfffe328eb1f1742de5b3fe722209e6e91f4bc
Reviewed-on: https://chromium-review.googlesource.com/180930
Reviewed-by: Chris Sosa <sosa@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
There was an out-of-bound index after something like 7.5 hours of
active use. This probably caused the metrics daemon to restart
and pollute some of the memuse statistics, the very ones
responsible for the overflow.
BUG=chromium:326824
TEST=ran manually and verified memuse is still reported
Change-Id: I70709f8cbba63ea1ca5e277b2ab58729e072e127
Reviewed-on: https://chromium-review.googlesource.com/178976
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
This fix the problem that the subscript of a global
array overflows in some cases.
BUG=chromium:326284
TEST=Unittest and suite:smoke passes.
Change-Id: I6a19d3bb18a886ee8a29b9a4df5f2b136ce57c5c
Reviewed-on: https://chromium-review.googlesource.com/178973
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Yunlian Jiang <yunlian@chromium.org>
Tested-by: Yunlian Jiang <yunlian@chromium.org>
We want to be able to control the inclusion of the metrics_daemon,
which passively gathers power stats and the like and sends them
through the UMA pipeline iff the user has opted-in to metrics
collection.
CQ-DEPEND=CL:177244, CL:177291
BUG=None
TEST=emerge platform2 with USE='-passive_metrics' on and off, with and without FEATURES=test
Change-Id: Id6af84d3de585a156d8ebbcc23117df000de080d
Reviewed-on: https://chromium-review.googlesource.com/177217
Reviewed-by: Chris Masone <cmasone@chromium.org>
Tested-by: Chris Masone <cmasone@chromium.org>
Commit-Queue: Chris Masone <cmasone@chromium.org>
This adds SpringPowerSupply.Original.Low and SpringPowerSupply.ChargerIdle.
BUG=chrome-os-partner:23973
TEST=manual
Change-Id: I35478741e128891667bfd64c45b379c7c9b7d602
Reviewed-on: https://chromium-review.googlesource.com/176707
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
This adds events to the Platform.CrOSEvent histogram to record
specific situations we're interested in. The user of the events
will be thermal.sh in the daisy overlay.
BUG=chrome-os-partner:23973
TEST=tested manually and observed samples in about:histograms
Change-Id: I1845ce1f90f5e77ecdc294834671328ce13c827b
Reviewed-on: https://chromium-review.googlesource.com/176367
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
This adds swap-in and swap-out rate calculation on the same intervals
as major page fault collection.
BUG=chromium:261965
TEST=observe Platform.SwapIn{Long,Short} and
Platform.SwapOut{Long,Short} appear in histograms
Change-Id: Ifcdba1088cdff355b8e132145ac79635b185663b
Reviewed-on: https://gerrit.chromium.org/gerrit/64162
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Sonny Rao <sonnyrao@chromium.org>
Tested-by: Sonny Rao <sonnyrao@chromium.org>
g_thread_init() has been deprecated since glib 2.32. This CL removes the
unnecessary call to g_thread_init(), so that we can later migrate to
glib 2.34. It also replaces dbus_g_thread_init(), which calls the
deprecated g_thread_supported(), with dbus_threads_init_default()
directly.
BUG=chromium:253025
TEST=Tested the following:
1. Build and run unit tests.
2. chrome://histograms shows that CrOS metrics are being collected.
Change-Id: I9c191d1926928caa8a704db03024f48f6c1cb383
Reviewed-on: https://gerrit.chromium.org/gerrit/59683
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Tested-by: Ben Chan <benchan@chromium.org>
Commit-Queue: Ben Chan <benchan@chromium.org>
This bug was introduced while adding test code
which was supposed to improve the reliability
of this program.
BUG=chromium:238890
TEST=verified that about:histograms contains samples
Change-Id: I66323292f9261f5715760d7c884f91aca1f7e453
Reviewed-on: https://gerrit.chromium.org/gerrit/57501
Reviewed-by: Sonny Rao <sonnyrao@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
This collects the max frequency every 30s and reports
it as a percentage of the unthrottled frequency.
The special value of 101% indicates that the CPU is
using turbo.
BUG=chromium:238890
TEST=ran manually, checked about:histograms
Change-Id: Ia1c8a2344b81b8274f9045b854d2e6d35cf49339
Reviewed-on: https://gerrit.chromium.org/gerrit/50387
Reviewed-by: Darin Petkov <petkov@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
BUG=chromium:220003
TEST=Run emerge-<board> -v platform2 with and without platform2 USE
flag on a range of boards plus the host
Change-Id: I44f15c31a8ac3917f3262912c43419a93652c0d8
Reviewed-on: https://gerrit.chromium.org/gerrit/40316
Tested-by: Liam McLoughlin <lmcloughlin@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Liam McLoughlin <lmcloughlin@chromium.org>
Samples to these histograms are any 32-bit int value.
BUG=chromium:222189
TEST=manual
Change-Id: Ic8d5773d05d717a275c4a4b5616e0e4c307337b8
Reviewed-on: https://gerrit.chromium.org/gerrit/45897
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
This should fix a pretty broken DailyUseTime metric. Also, use
contstants from service_constants.h where available.
BUG=chromium:216382,chromium:234799
TEST=unit tests; stop metrics_daemon on the device, then ran metrics_daemon
--nodaemon and inspected console log output while logging in/out as well as on
suspend/resume.
CQ-DEPEND=Ibfcc54c8dbf145cccd5ef871c7c9701b8312eb9e
Change-Id: I69ca0ea9594a496453f0933147ec66b0fa334718
Reviewed-on: https://gerrit.chromium.org/gerrit/49468
Tested-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Chris Masone <cmasone@chromium.org>
Commit-Queue: Darin Petkov <petkov@chromium.org>
Also put event names into an array, so it's easier to add new event names.
BUG=none
TEST=run "strace -e write=3 metrics_client -v Cras.NoCodecsFoundAtBoot" and
verify the event is written.
Change-Id: I925b4ff3b6d362e099df62a11905c1df03fc9435
Reviewed-on: https://gerrit.chromium.org/gerrit/46998
Reviewed-by: Chih-Chung Chang <chihchung@chromium.org>
Tested-by: Chih-Chung Chang <chihchung@chromium.org>
Commit-Queue: Chih-Chung Chang <chihchung@chromium.org>
It turns out that |TimerReporter::ReportMilliseconds| does report a value
for a timer that hasn't been started (in shill,
|Metrics::NotifyDevice*Finished| calls |Stop| immediately before
|ReportMilliseconds| and it works just fine. This is perfectly OK, it's
just that the comment didn't reflect this. This CL fixes that.
BUG=None.
TEST=None.
Change-Id: I578d554106acdb92957bfe0197622a1054cfa9c9
Reviewed-on: https://gerrit.chromium.org/gerrit/46337
Reviewed-by: Darin Petkov <petkov@chromium.org>
Reviewed-by: Wade Guthrie <wdg@chromium.org>
Tested-by: Wade Guthrie <wdg@chromium.org>
Commit-Queue: Wade Guthrie <wdg@chromium.org>
This change aims to simplify the addition of events we may
want to track in the field, more specifically hard-to-reproduce
bugs. Before this change, this requires creating a new histogram
and registering it via histograms.xml, which is not in the Chrome OS
repositories. With this change, a new event just requires claiming
an event name (such as ModemManagerCommandSendFailure) in
metrics_library.cc, and running "metrics_client -v <event name>"
or calling SendCrosEventToUMA(event_name).
I can make up a bug for this. Or not.
BUG=none
TEST=compiled
Change-Id: I9c56b58310f0d22e77624edee7fe6149abd60a49
Reviewed-on: https://gerrit.chromium.org/gerrit/45322
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>
base/eintr_wrapper.h moved to base/posix/eintr_wrapper.h
CQ-DEPEND=Ib19c1382ab28ae7632728aa672478da2feb3950e
BUG=chromium-os:38941
TEST=emerge the metrics package with tests enabled.
STATUS=Fixed
Change-Id: I5d72d8934930ce394786ee151fd8f390b5caf2e1
Reviewed-on: https://gerrit.chromium.org/gerrit/43297
Tested-by: Chris Masone <cmasone@chromium.org>
Reviewed-by: Luigi Semenzato <semenzato@chromium.org>
Commit-Queue: Chris Masone <cmasone@chromium.org>
We need to record the amount of swap used, and correlate it
with the total amount of swap.
The metrics added are Platform.MeminfoSwapUsed and
Platform.MeminfoSwapUsedPercent.
BUG=chromium-os:38583
TEST=not really
BRANCH=none
Change-Id: Iaf26c917e3c4d23f3f58f436047f8dd165177960
Reviewed-on: https://gerrit.chromium.org/gerrit/43123
Tested-by: Luigi Semenzato <semenzato@chromium.org>
Reviewed-by: Sonny Rao <sonnyrao@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
The current metrics don't show how much swap we're using at a given
time. We only have indirect measures (page faults rate for instance).
We also need to add one type of histogram scale, since compressed swap
can exceed total RAM, and all current histograms are on a scale from
zero to total RAM.
BUG=chromium-os:38583
TEST=stared at the code really hard and compiled it
BRANCH=none
Change-Id: Icb9dce5efe5dbd78123aad51ffd369cb46721096
Reviewed-on: https://gerrit.chromium.org/gerrit/42598
Reviewed-by: Sonny Rao <sonnyrao@chromium.org>
Commit-Queue: Luigi Semenzato <semenzato@chromium.org>
Tested-by: Luigi Semenzato <semenzato@chromium.org>