Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 379f264b authored by John Reck's avatar John Reck
Browse files

Add stat collection start time

Add CLOCK_MONOTONIC to signal
when the stat collection started
to allow for tracking stats
over time

Change-Id: Iab7c52f21184eea603ddc8572b9d91a951b45a00
parent 3d518037
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -169,6 +169,10 @@ void JankTracker::switchStorageToAshmem(int ashmemfd) {
    newData->jankFrameCount += mData->jankFrameCount;
    newData->totalFrameCount >>= divider;
    newData->totalFrameCount += mData->totalFrameCount;
    if (newData->statStartTime > mData->statStartTime
            || newData->statStartTime == 0) {
        newData->statStartTime = mData->statStartTime;
    }

    freeData();
    mData = newData;
@@ -235,6 +239,7 @@ void JankTracker::dumpBuffer(const void* buffer, size_t bufsize, int fd) {
}

void JankTracker::dumpData(const ProfileData* data, int fd) {
    dprintf(fd, "\nStats since: %lluns", data->statStartTime);
    dprintf(fd, "\nTotal frames rendered: %u", data->totalFrameCount);
    dprintf(fd, "\nJanky frames: %u (%.2f%%)", data->jankFrameCount,
            (float) data->jankFrameCount / (float) data->totalFrameCount * 100.0f);
@@ -252,6 +257,7 @@ void JankTracker::reset() {
    mData->frameCounts.fill(0);
    mData->totalFrameCount = 0;
    mData->jankFrameCount = 0;
    mData->statStartTime = systemTime(CLOCK_MONOTONIC);
}

uint32_t JankTracker::findPercentile(const ProfileData* data, int percentile) {
+2 −1
Original line number Diff line number Diff line
@@ -44,10 +44,11 @@ enum JankType {
struct ProfileData {
    std::array<uint32_t, NUM_BUCKETS> jankTypeCounts;
    // See comments on kBucket* constants for what this holds
    std::array<uint32_t, 57> frameCounts;
    std::array<uint32_t, 55> frameCounts;

    uint32_t totalFrameCount;
    uint32_t jankFrameCount;
    nsecs_t statStartTime;
};

// TODO: Replace DrawProfiler with this