Commit graph

546 commits

Author SHA1 Message Date
jimmyshiu
0ddf7227e4
sm6375-common: power-libperfmgr: ADPF: uclamp.min integration
Integrate the uclamp.min across sessions.
Add UClampMininit as the display update boost

Bug: 232313238
Test: Manual test
Change-Id: I601f407b0b5383a1e39eac448d45cbaaeb7788fb
2024-07-18 12:56:42 +05:30
Wei Wang
a4f9f7f383
sm6375-common: power-libperfmgr: PowerHAL: remove UclampMinGranularity
This is causing session update skipped and stuck.

Bug: 232336917
Test: /data/nativetest64/libperfmgr_test/libperfmgr_test
Signed-off-by: Wei Wang <wvw@google.com>
Change-Id: I8928b6f6a60dcf8d21e60228a74d3aa0ab792eff
2024-07-18 12:56:42 +05:30
Matt Buckley
df11f1d291
sm6375-common: power-libperfmgr: Ignore system hint sessions for universal boost
Currently PowerHAL does not distinguish between system processes and
apps when deciding whether to apply universal boost. This patch
distinguishes system sessions and app sessions and ignores system ones,
making the disabling of universal boost dependent on the presence of app
hint sessions.

Bug: b/230511824
Test: manual
Change-Id: I08dea29b3a45f2ba69ed99a9f188fa83ba143423
2024-07-18 12:56:42 +05:30
jimmyshiu
a47b6bc89f
sm6375-common: power-libperfmgr: ADPF: log clean up
Remove ALOGD logs.

Bug: 230205812
Test: adb shell logcat -b all | grep libperf
Change-Id: I4125afec526b76e3905e75c22fc2bfb555810fa8
2024-07-18 12:56:42 +05:30
Wei Wang
b5c02458b2
sm6375-common: power-libperfmgr: Add minimal binder thread prio as -20 to match process prio
Bug: 227811781
Test: Build
Change-Id: I94670429ede032703661ee8eb8b1ea6456f5cbd5
Signed-off-by: Wei Wang <wvw@google.com>
2024-07-18 12:56:42 +05:30
Jimmy Shiu
c27156ecb8
sm6375-common: power-libperfmgr: ADPF: add Early Hint feature
Add Early Hint feature and integrate with Stale Timer

Bug: 198379880
Test: build and manual test

Change-Id: I17009ee5b9ff922a79ccf5cb68be5b959038267d
2024-07-18 12:56:42 +05:30
Jimmy Shiu
a4ad8dc607
sm6375-common: power-libperfmgr: ADPF: Use Adpf Profile for PID tunnables
1. Use Adpf Profile to replace system-property-based PID tunnables.
2. Add a tunable for switch PID on/off
3. Switch Adpf Profile by hint name (ex: REFRESH_120FPS)

Bug: 202158746
Bug: 204444691
Bug: 206061061
Test: Build
Change-Id: Ia673a6bf64d40128ca1797d1e26fe564b3b35ff1
2024-07-18 12:56:42 +05:30
Jimmy Shiu
c69f1e93fa
sm6375-common: power-libperfmgr: ADPF: make uclamp.min stable
Considering the previous uclamp.min value is the base of PID output.
Instead of:
  `next_min = std::min(sUclampMinHighLimit, output);`
We should use:
  `next_min = std::min(sUclampMinHighLimit, current_min + output);`

When session status entered stale state, set the uclamp to 0, but keep
the current_min. That would be helpful for boosting the heavy workload
of the first few frames.

Bug: 204444691
Test: build && manual test

Change-Id: Idb19e2bfd8e9522fae5fd452b1fcc58786e96e65
2024-07-18 12:56:42 +05:30
Jimmy Shiu
473d400819
sm6375-common: power-libperfmgr: Make HintManager a singleton class
HintManager is unique and widely used in many different components.
This is for making it easiler to be reloaded for debugging.

Bug: 172285365
Test: adb push \
      out/target/product/raven/data/nativetest64/libperfmgr_test/libperfmgr_test \
      /data/nativetest64/libperfmgr_test/libperfmgr_test && \
      adb shell /data/nativetest64/libperfmgr_test/libperfmgr_test
Change-Id: I3affdfe780073ebbc50fac7bfbdd1530ee9dc8c2
2024-07-18 12:56:42 +05:30
Wei Wang
c515a81911
sm6375-common: power-libperfmgr: PowerHintSession: do not update PID controller when target changes
There is no history kept in powerhint session, so let us just keep what
we have in the PID controller and let new samples settle.

Bug: 227003278
Test: Build
Change-Id: Ia8b9a0be288389ec36ac35c668aca013d470c257
2024-07-18 12:56:42 +05:30
Jimmy Shiu
020bd6ab5a
sm6375-common: power-libperfmgr: Fix race condition between Looper and destructor
1. Clean all messages before add new.
2. Insteading of using `this`, use the unique mStaleHandler sp so Looper
   can hold the sp to keep the instance alive until the last message
   done.

Test: Manual Test
Bug: 219965773
Change-Id: Ic039146f0b966c1f27d86b121d4b72b75ff360e5
2024-07-18 12:56:42 +05:30
Wei Wang
037b6bebbb
sm6375-common: power-libperfmgr: Add global debug property for override config path properly
An init trigger would restart powerhal as early as the property was
loaded and it is hopefully early than any clients would try to connect.

Also remove the obsolete restart hook with audio.

Bug: 218872105
Test: boot
Signed-off-by: Wei Wang <wvw@google.com>
Change-Id: Ib55897f65709a963016b729f213718aae5af8e8c
2024-07-18 12:56:42 +05:30
Jimmy Shiu
8079fefcb6
sm6375-common: power-libperfmgr: Add a debug property for switching powerhint.json path
Add a bool property `vendor.powerhal.config.debug`.
Power HAL would use `/data/vendor/etc/powerhint.json` when vendor.powerhal.config.debug = true.

Bug: 218872105
Bug: 206061061
Test: adb wait-for-device root; adb shell mkdir -p /data/vendor/etc/;
      adb push powerhint_mod.json /data/vendor/etc/powerhint.json
Test: adb shell setprop vendor.powerhal.config.debug true && \
      adb shell getprop vendor.powerhal.config.debug && \
      adb shell stop vendor.power-hal-aidl && \
      adb shell start vendor.power-hal-aidl && adb shell stop && adb shell start
Test: adb pull /data/local.prop ; vim local.prop
      + vendor.powerhal.config.debug=true
Test: adb wait-for-device root && adb shell perfetto -o \
      /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s sched freq \
      idle am wm gfx view power hal && \
      adb pull /data/misc/perfetto-traces/trace_file.perfetto-trace trace_profile_debug.pftrace
Change-Id: Ibaf5df280b989a8268efce1e3ab9a3f1e5510800
2024-07-18 12:56:42 +05:30
Jimmy Shiu
8659d2ff0c
sm6375-common: power-libperfmgr: ADPF: fix stale trace status
Bug: 196192645
Test: Manual
Change-Id: Ibdbb8f47a16032ce3249aa667fa0c11e7869748f
2024-07-18 12:56:42 +05:30
Jimmy Shiu
1cc2907e9e
sm6375-common: power-libperfmgr: ADPF: limit uclamp high/low values and use I as boost base
1. set uclamp.min high to 384 (from 512)
2. set uclamp.min low to 2 (from 0)
3. set kPo to 2 (from 5)
4. set kPu to 1 (from 3)
5. instead of the previous boost value, use I Error-Integral as the base
   of boost value.
6. add more traces (wakeup, overtime)

Bug: 198708191
Bug: 197586898
Bug: 197540375
Test: build and check trace
      adb shell perfetto -o \
      /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s sched \
      freq idle am wm gfx view power hal
Change-Id: I35484322a84c2ab19f3024cf6634c1818ba570b0
2024-07-18 12:56:42 +05:30
Wei Wang
c674edc828
sm6375-common: power-libperfmgr: move trace point to libperfmgr.
Test: systrace
Bug: 199776250
Change-Id: I9bb4d5a50faa93e7bc638ef723bdc2662fb63b24
2024-07-18 12:56:42 +05:30
Jiyong Park
25d25dbc8b
sm6375-common: power-libperfmgr: aidl: Remove ndk_platform backend. Use the ndk backend.
The ndk_platform backend will soon be deprecated because the ndk backend
can serve the same purpose. This is to eliminate the confusion about
having two variants (ndk and ndk_platform) for the same ndk backend.

Bug: 161456198
Test: m
Merged-In: I14a1c57bd06f1f2aa52491f779c7030d4de03547
Change-Id: I7b9055909b901843631314b9577a9e578a739d00
2024-07-18 12:56:42 +05:30
Jimmy Shiu
23f7b9d922
sm6375-common: power-libperfmgr: ADPF: fix no boost due to the big negative ILowLimit
Tuning the PID control loop as the below:
ILowLimit: -512 -> -120
kPOver: 2->5
kPunder: 2->3
kDOver: 1->5
kDUnder: 0->0

Bug: 193165816
Test: cuj/youtuble, cuj/facebook, PtsUiBench
Change-Id: Icc1a9a8d04004f60e47cabb7c4131ea67585be53
2024-07-18 12:56:42 +05:30
Jimmy Shiu
a0257b68a4
sm6375-common: power-libperfmgr: ADPF: avoid to call close() twice
To get rid of error logs, avoid to call close() twice.

07-29 17:20:35.341 E powerhal-libperfmgr: Unexpected Error! Failed to
look up tid:2585 in TidRefCountMap
07-29 17:20:35.341 E powerhal-libperfmgr: Unexpected Error! Failed to
look up tid:2586 in TidRefCountMap
07-29 17:20:35.341 E powerhal-libperfmgr: Unexpected Error! Failed to
look up tid:2031 in TidRefCountMap
07-29 17:20:35.341 E powerhal-libperfmgr: Unexpected Error! Failed to
look up tid:2585 in TidRefCountMap

Bug: 194775170
Test: build and check log.
Change-Id: I91adf907b837382f68935b9054e19465a499049c
2024-07-18 12:56:42 +05:30
Jimmy Shiu
09fff35998
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
2024-07-18 12:56:42 +05:30
Jimmy Shiu
31357f2e25
sm6375-common: power-libperfmgr: Adpf: set uclamp when session is created
When seesion is created, set uclamp to boost CPU for top-app.

Bug: 192143316
Test: Build and run UiBenchSlowNestedRecyclerViewInitialFlingMicrobenchmark test
Change-Id: I748037019fae439ab1863a5ed21aa98b9d26e0dc
2024-07-18 12:56:42 +05:30
Wei Wang
5bd1d34db3
sm6375-common: power-libperfmgr: Add PID tunables for sample window
Bug: 191480755
Test: Build
Signed-off-by: Wei Wang <wvw@google.com>
Change-Id: Id559796ee4a423410148b8c2df0524909658af82
2024-07-18 12:56:42 +05:30
Jimmy Shiu
8785592dc6
sm6375-common: power-libperfmgr: adpf: clean up ADPF trace points
clean up ADPF trace points and use vendor.powerhal.adpf.uclamp.boost_cap
instead of vendor.powerhal.adpf.uclamp.cap_ratio.

Bug: 191551452
Test: build
Change-Id: I457710b1bd9a7adbb55749d7bb915c736dde2751
2024-07-18 12:56:42 +05:30
Wei Wang
2b0b9973c4
sm6375-common: power-libperfmgr: Adpf: honor window setting for P,D caculation
Also change default window setting to 0

Bug: 191409203
Test: Build
Signed-off-by: Wei Wang <wvw@google.com>
Change-Id: Ieadf50a64e795d9942373c411189adf9daaee779
2024-07-18 12:56:42 +05:30
Wei Wang
36addfaf7c
sm6375-common: power-libperfmgr: improve adpf logic
Cache active state and reduce log spam
Add value tracing into libperfmgr
Use adaptive stale timeout based on rate limit

Bug: 191331719
Bug: 191296994
Bug: 177493042
Test: boot
Signed-off-by: Wei Wang <wvw@google.com>
Change-Id: I1c1484c9277209bf68bd287ceae83e2b37684c62
2024-07-18 12:56:42 +05:30
Wei Wang
7b56c41f2d
sm6375-common: power-libperfmgr: Fix objects that are derived from refbase
Fixes: ag/14313466
Bug: 177493042
Bug: 191163855
Test: Build
Change-Id: I94812997a8214b77a2e1d0bcf90ef62205c5adf6
Signed-off-by: Wei Wang <wvw@google.com>
2024-07-18 12:56:42 +05:30
Jimmy Shiu
4f6e93f30a
sm6375-common: power-libperfmgr: ADPF: use PID algorithm to control cpu resource
The patch includes:
1. Move from folder adpf to aidl.
2. Add PowerSessionManager class to maintain hint status.
   And PowerHintMointor looper thread for monitoring or updating
   PowerHintSession status.
3. Use PID algorithm to replace the step-wise alogrithm for cpu resource
   control.

Test: build, boot to home, trace analysis
Bug: 177493042
Change-Id: Ib7d3f414225b18954350341ca22b7be87a6202e7
2024-07-18 12:56:42 +05:30
Wei Wang
4ce47872f0
sm6375-common: power-libperfmgr: reduce log spam and refine trace title
Add bunch of TODO for team as well.

Test: build
Bug: 177492680
Bug: 185368789
Signed-off-by: Wei Wang <wvw@google.com>
Change-Id: Ic1d5ecea10a60b23343866cd62519fda37bd6ec5
2024-07-18 12:56:42 +05:30
Jimmy Shiu
89c05aa49a
sm6375-common: power-libperfmgr: add PowerHintSession for ADPF implementation
Adapted from PoC from ag/13100800

Added more ATRACE for further tuning and debug

Test: APPPID=$(adb shell pidof com.prefabulated.touchlatency); watch -n
      1 adb shell grep uclamp /proc/${APPPID}/sched
Test: atest VtsHalPowerTargetTest
Bug: 177492680
Change-Id: I6bfd61b21dc1cde04f6ba9ae8d3533cd263ad814
Signed-off-by: Wei Wang <wvw@google.com>
2024-07-18 12:56:42 +05:30
Jeongik Cha
1f8a6a10d6
sm6375-common: power-libperfmgr: Specify version for aidl_interface explicitly
Bug: 150578172
Test: m
Change-Id: I4a9bf218b92252403e9ebbe8f89b10ee1899283f
2024-07-18 12:56:42 +05:30
Wei Wang
549d1f678d
sm6375-common: power-libperfmgr: add a property for config file
Test: build
Bug: 173222103
Signed-off-by: Wei Wang <wvw@google.com>
Change-Id: I14e7e0aa349e446f6889cbfc9a914f5314438e6b
2024-07-18 12:56:42 +05:30
Wei Wang
92077b3d9f
sm6375-common: power-libperfmgr: advertise power headers are deprecated
Test: Build
Bug: 169065024
Signed-off-by: Wei Wang <wvw@google.com>
Change-Id: I3cef3aff4bb2394571a3de13e535283722c308ed
2024-07-18 12:56:42 +05:30
Wei Wang
6c2db2f0a7
sm6375-common: power-libperfmgr: add support for devices without display idle signals
To workaround b/141025174, adding support for devices without display
idle signals. Also added a property to override idle display function.

Besides the idle signal support, this CL also makes touch boost duration
tunable through several new vendor properties. It also named display
idle monitor thread and cleans out the obsolete HIDL Power HAL
implementation.

Bug: 168080943
Bug: 169065024
Bug: 171494137
Test: Boot and trace
Change-Id: I76067d10958654d539624ec4cac8f346103e67bc
2024-07-18 12:56:42 +05:30
Stefanie Kondik
384c894a8a
sm6375-common: power-libperfmgr: Add support for tap-to-wake feature control
Change-Id: Ib6e1e010834b1b16668d52db79b26804fe0e1671
2024-07-18 12:56:42 +05:30
Jesse Chan
5e8377d9b9
sm6375-common: power-libperfmgr: remove Google-specific VR and camera hints
Change-Id: Iac0e65a16f660583d3400a35622113d35d8d1d27
2024-07-18 12:56:42 +05:30
Kyle Lin
db71b88a0b
sm6375-common: libperfmgr.rc: let power hal start early
Bug: 162791243
Bug: 72471476
Test: build and using emul temp/running burn8 to verify it
Change-Id: I5ca475be8b73b940e4858634595a7918ae92f6ef
2024-07-18 12:56:42 +05:30
Kyle Lin
08feb8ba60
sm6375-common: libperfmgr.rc: let perfmgr can change dex2oat priorities
Because perfmgr is a vendor process, it cannot adjust system priority
directly.

Bug: 162791243

Test: build and using emul temp/running burn8 to verify it
Change-Id: I55e49cb7d0b2d4c0e42dff8398b5d42c6546cafa
2024-07-18 12:56:42 +05:30
Wei Wang
63ab10a1a9
sm6375-common: power-libperfmgr: rename namespace for Pixel power HAL
Bug: 152811907
Test: Build
Change-Id: I6848e929d8a26b540fcee9145376b896c3cd9799
2024-07-18 12:56:42 +05:30
Wei Wang
0d151b245f
sm6375-common: power-libperfmgr: allow powerhint calls as soon as service starts
Bug: 147840817
Test: boot
Change-Id: Ic1d6e04109683b999bb99484930e95dc9813fc59
2024-07-18 12:56:42 +05:30
Wei Wang
a8c7e1fc54
sm6375-common: power-libperfmgr: add aidl extension server
Bug: 151896829
Test: boot flame
Change-Id: Ie951008cabe2a5680fbc546a21bdc9a428864ef9
2024-07-18 12:56:42 +05:30
Wei Wang
48692749c7
sm6375-common: power-libperfmgr: Hook with display handler
Bug: 147840817
Test: boot and check power hint
Change-Id: I9c0c98e76ef4b5f4756f63ed5122efc366737869
2024-07-18 12:56:42 +05:30
Anand S
81033a18a0
sm6375-common: Build power-libperfmgr
Change-Id: Icada887bc2f414c6e41d81361762a86332df1aee
2024-07-18 12:56:42 +05:30
Anand S
800979852e
sm6375-common: power-libperfmgr: Adapt and rebrand to moto_sm6375
Change-Id: I6732e0076564ada7078c9334b62fb865d473accd
2024-07-18 12:56:42 +05:30
Anand S
92e3a94e24
sm6375-common: Import Pixel libperfmgr AIDL Power HAL
Change-Id: Ibec82206ac2b070bdcb88213d98f6cc35109ea4f
2024-07-18 12:56:42 +05:30
LuK1337
38b52b67b0
sm6375-common: init: Drop I/O prefetcher
This depends on the already removed QTI perf stack.

Change-Id: I10e0f26481cfa13994dab2370d9f9fb8a073cdc8
2024-07-18 12:56:42 +05:30
Wei Wang
71b966db21
sm6375-common: Remove QTI perfd
Bug: 69270928
Test: Build and boot device and test camera
Change-Id: I87b283206f462fb5c8ec9cdd303ae2934fe9bfc4
2024-07-18 12:56:42 +05:30
Miguel de Dios
d936207c39
sm6375-common: Change readahead to 128KiB on post-boot
Reduce readahead from 512KiB to 128KiB to reduce thrashing when we
have a lot of apps running.

Bug: 110908295
Bug: 80426378
Test: manual - device boots
Test: manual - check app launch does not take long
Test: cts-tradefed.sh run cts -m CtsCameraTestCases
Change-Id: I59c1f2f8a6fbb5e0d956ba07a40a2bfac3b61481
2024-07-17 12:56:42 +05:30
Anand S
997145ed64
sm6375-common: Inherit from QTI FCM
Change-Id: I35907b3eda79b8e8b59871a751dc1fccb89894df
2024-07-17 12:56:42 +05:30
Lokesh Gidra
3586166e3f
sm6375-common: Use 4GB dalvik-heap config
Change-Id: I086d4a5c09634c3c7bd51ec5d08dcaa1551511b4
2024-07-17 12:56:42 +05:30
Anand S
33518c1389
sm6375-common: Drop prebuilt libqsap_sdk
* Already being built from source.

Change-Id: I231d1eb694ae609cb6cc8ba45166edec29c52eb1
2024-07-17 12:56:42 +05:30