diff options
author | 2021-04-21 17:49:27 -0700 | |
---|---|---|
committer | 2021-04-26 14:17:36 -0700 | |
commit | 9471be56b4d9eb4cbdc3349fd63ff5f6265dfa19 (patch) | |
tree | 7b11faa3df7c54db726f236f5672a12a65a4192e /services/incremental/IncrementalService.cpp | |
parent | 2ee0270cbade5a723253ed88e2245bdb80426e2d (diff) |
[incremental] expose more metrics fields
Exposing more data loader states as per
go/incremental-crash-reports-1-pager.
BUG: 184844615
Test: atest service.incremental_test
Test: atest android.cts.statsdatom.incremental.AppErrorAtomTests
Change-Id: I532513453411b2ccdb21311d0bc3dee0641837db
Diffstat (limited to 'services/incremental/IncrementalService.cpp')
-rw-r--r-- | services/incremental/IncrementalService.cpp | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp index 4ce336d16f15..3511543aff48 100644 --- a/services/incremental/IncrementalService.cpp +++ b/services/incremental/IncrementalService.cpp @@ -2394,26 +2394,20 @@ void IncrementalService::removeIfsStateCallbacks(StorageId storageId) { } void IncrementalService::getMetrics(StorageId storageId, android::os::PersistableBundle* result) { - const auto duration = getMillsSinceOldestPendingRead(storageId); - if (duration >= 0) { - const auto kMetricsMillisSinceOldestPendingRead = - os::incremental::BnIncrementalService::METRICS_MILLIS_SINCE_OLDEST_PENDING_READ(); - result->putLong(String16(kMetricsMillisSinceOldestPendingRead.data()), duration); - } -} - -long IncrementalService::getMillsSinceOldestPendingRead(StorageId storageId) { const auto ifs = getIfs(storageId); if (!ifs) { - LOG(ERROR) << "getMillsSinceOldestPendingRead failed, invalid storageId: " << storageId; - return -EINVAL; + LOG(ERROR) << "getMetrics failed, invalid storageId: " << storageId; + return; } + const auto kMetricsReadLogsEnabled = + os::incremental::BnIncrementalService::METRICS_READ_LOGS_ENABLED(); + result->putBoolean(String16(kMetricsReadLogsEnabled.data()), ifs->readLogsEnabled() != 0); + std::unique_lock l(ifs->lock); if (!ifs->dataLoaderStub) { - LOG(ERROR) << "getMillsSinceOldestPendingRead failed, no data loader: " << storageId; - return -EINVAL; + return; } - return ifs->dataLoaderStub->elapsedMsSinceOldestPendingRead(); + ifs->dataLoaderStub->getMetrics(result); } IncrementalService::DataLoaderStub::DataLoaderStub( @@ -2767,6 +2761,7 @@ void IncrementalService::DataLoaderStub::onHealthStatus(const StorageHealthListe if (healthListener) { healthListener->onHealthStatus(id(), healthStatus); } + mHealthStatus = healthStatus; } void IncrementalService::DataLoaderStub::updateHealthStatus(bool baseline) { @@ -2938,6 +2933,29 @@ BootClockTsUs IncrementalService::DataLoaderStub::getOldestTsFromLastPendingRead return result; } +void IncrementalService::DataLoaderStub::getMetrics(android::os::PersistableBundle* result) { + const auto duration = elapsedMsSinceOldestPendingRead(); + if (duration >= 0) { + const auto kMetricsMillisSinceOldestPendingRead = + os::incremental::BnIncrementalService::METRICS_MILLIS_SINCE_OLDEST_PENDING_READ(); + result->putLong(String16(kMetricsMillisSinceOldestPendingRead.data()), duration); + } + const auto kMetricsStorageHealthStatusCode = + os::incremental::BnIncrementalService::METRICS_STORAGE_HEALTH_STATUS_CODE(); + result->putInt(String16(kMetricsStorageHealthStatusCode.data()), mHealthStatus); + const auto kMetricsDataLoaderStatusCode = + os::incremental::BnIncrementalService::METRICS_DATA_LOADER_STATUS_CODE(); + result->putInt(String16(kMetricsDataLoaderStatusCode.data()), mCurrentStatus); + const auto kMetricsMillisSinceLastDataLoaderBind = + os::incremental::BnIncrementalService::METRICS_MILLIS_SINCE_LAST_DATA_LOADER_BIND(); + result->putLong(String16(kMetricsMillisSinceLastDataLoaderBind.data()), + (long)(elapsedMcs(mPreviousBindTs, mService.mClock->now()) / 1000)); + const auto kMetricsDataLoaderBindDelayMillis = + os::incremental::BnIncrementalService::METRICS_DATA_LOADER_BIND_DELAY_MILLIS(); + result->putLong(String16(kMetricsDataLoaderBindDelayMillis.data()), + (long)(mPreviousBindDelay.count())); +} + long IncrementalService::DataLoaderStub::elapsedMsSinceOldestPendingRead() { const auto oldestPendingReadKernelTs = getOldestTsFromLastPendingReads(); if (oldestPendingReadKernelTs == kMaxBootClockTsUs) { @@ -3007,7 +3025,7 @@ void IncrementalService::DataLoaderStub::onDump(int fd) { dprintf(fd, " bootClockTsUs: %lld\n", (long long)pendingRead.bootClockTsUs); } dprintf(fd, " bind: %llds ago (delay: %llds)\n", - (long long)(elapsedMcs(mPreviousBindTs, Clock::now()) / 1000000), + (long long)(elapsedMcs(mPreviousBindTs, mService.mClock->now()) / 1000000), (long long)(mPreviousBindDelay.count() / 1000)); dprintf(fd, " }\n"); const auto& params = mParams; |