sm6375-common: power-libperfmgr: ADPF: fix abnormal high uclamp
"GPU completion" task inherits a high uclamp value from RenderThread.
But it's not in the ADPF thread list, so it remains a high uclamp value.
Use SetTaskProfiles("ResetUclampGrp") and
SetTaskProfiles("NoResetUclampGrp") to manage the uclamp_fork_reset for
tasks.
Bug: 191973176
Bug: 192149875
Test: vendor/google_testing/pts/tests/common/utils/perf/run_pts/jank_test.sh
Test: adb shell cat /proc/vendor_sched/dump_task
Change-Id: I6aed171e88c0a6db5f762e7c791344bb3f4b7a90
This commit is contained in:
parent
17a4a4abb8
commit
0515fc6f25
5 changed files with 90 additions and 40 deletions
|
|
@ -18,6 +18,7 @@
|
|||
#define ATRACE_TAG (ATRACE_TAG_POWER | ATRACE_TAG_HAL)
|
||||
|
||||
#include <log/log.h>
|
||||
#include <processgroup/processgroup.h>
|
||||
#include <utils/Trace.h>
|
||||
|
||||
#include "PowerSessionManager.h"
|
||||
|
|
@ -55,11 +56,39 @@ int PowerSessionManager::getDisplayRefreshRate() {
|
|||
|
||||
void PowerSessionManager::addPowerSession(PowerHintSession *session) {
|
||||
std::lock_guard<std::mutex> guard(mLock);
|
||||
for (auto t : session->getTidList()) {
|
||||
if (mTidRefCountMap.find(t) == mTidRefCountMap.end()) {
|
||||
if (!SetTaskProfiles(t, {"ResetUclampGrp"})) {
|
||||
ALOGW("Failed to set ResetUclampGrp task profile for tid:%d", t);
|
||||
} else {
|
||||
mTidRefCountMap[t] = 1;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (mTidRefCountMap[t] <= 0) {
|
||||
ALOGE("Error! Unexpected zero/negative RefCount:%d for tid:%d", mTidRefCountMap[t], t);
|
||||
continue;
|
||||
}
|
||||
mTidRefCountMap[t]++;
|
||||
}
|
||||
mSessions.insert(session);
|
||||
}
|
||||
|
||||
void PowerSessionManager::removePowerSession(PowerHintSession *session) {
|
||||
std::lock_guard<std::mutex> guard(mLock);
|
||||
for (auto t : session->getTidList()) {
|
||||
if (mTidRefCountMap.find(t) == mTidRefCountMap.end()) {
|
||||
ALOGE("Unexpected Error! Failed to look up tid:%d in TidRefCountMap", t);
|
||||
continue;
|
||||
}
|
||||
mTidRefCountMap[t]--;
|
||||
if (mTidRefCountMap[t] <= 0) {
|
||||
if (!SetTaskProfiles(t, {"NoResetUclampGrp"})) {
|
||||
ALOGW("Failed to set NoResetUclampGrp task profile for tid:%d", t);
|
||||
}
|
||||
mTidRefCountMap.erase(t);
|
||||
}
|
||||
}
|
||||
mSessions.erase(session);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue