From dcbdedea885b33ab87242cd7bb0d5776ed1b7383 Mon Sep 17 00:00:00 2001 From: Kelly Rossmoyer Date: Fri, 25 Oct 2019 00:29:21 -0700 Subject: [PATCH] dumpstate: add key timestamps to power dump This change adds two key timestamps to the power stats section of dumpstate_board.txt: the time at which the device was booted and the current time immediately prior to capturing the power stats. It also refactors the lines of code for dumping power stats into a self-contained function to improve code maintainability. Currently, because the process of generating a bugreport takes several minutes, there is significant uncertainty about the temporal relationship between the bugreport timestamp and the time at which the power stats were captured. Also, boot time is reverse-engineered - again, with an unhelpful degree of uncertainty - by combining the bugreport timestamp with uptime. Generating these two timestamps immediately prior to capturing live power stats will allow identification of the onset times of key subsystem-related power issues with much more precision than is currently possible. Bug: 143312304 Test: Built userdebug and user builds, installed and tested by generating a bugreport and verifying the new content was present. Change-Id: Ie92a6e1f8e6088939819738bcff8cd9a0106f5a8 --- dumpstate/DumpstateDevice.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp index f6584abf..f892f8e9 100755 --- a/dumpstate/DumpstateDevice.cpp +++ b/dumpstate/DumpstateDevice.cpp @@ -213,6 +213,15 @@ void DumpstateDevice::dumpModem(int fd, int fdModem) } } +static void DumpPower(int fd) { + RunCommandToFd(fd, "Power Stats Times", {"/vendor/bin/sh", "-c", + "echo -n \"Boot: \" && /vendor/bin/uptime -s &&" + "echo -n \"Now: \" && date"}); + DumpFileToFd(fd, "RPM Stats", "/d/rpm_stats"); + DumpFileToFd(fd, "Power Management Stats", "/d/rpm_master_stats"); + DumpFileToFd(fd, "WLAN Power Stats", "/d/wlan0/power_stats"); +} + static void DumpTouch(int fd) { if (!access("/sys/android_touch", R_OK)) { DumpFileToFd(fd, "Synaptics touch firmware version", @@ -262,9 +271,9 @@ Return DumpstateDevice::dumpstateBoard(const hidl_handle& handle) { DumpFileToFd(fd, "UFS size", "/sys/block/sda/size"); RunCommandToFd(fd, "UFS health", {"/vendor/bin/sh", "-c", "for f in $(find /sys/kernel/debug/ufshcd0 -type f); do if [[ -r $f && -f $f ]]; then echo --- $f; cat $f; fi; done"}); DumpFileToFd(fd, "INTERRUPTS", "/proc/interrupts"); - DumpFileToFd(fd, "RPM Stats", "/d/rpm_stats"); - DumpFileToFd(fd, "Power Management Stats", "/d/rpm_master_stats"); - DumpFileToFd(fd, "WLAN Power Stats", "/d/wlan0/power_stats"); + + DumpPower(fd); + DumpFileToFd(fd, "LL-Stats", "/d/wlan0/ll_stats"); DumpFileToFd(fd, "ICNSS Stats", "/d/icnss/stats"); DumpFileToFd(fd, "SMD Log", "/d/ipc_logging/smd/log");