ebd2ea0daf7d5bbeba8b6444c81b023ea55becec |
13-Feb-2018 |
Arthur Eubanks <aeubanks@google.com> |
Start target package by binding to Service, not starting Activity This reduces the stddev for a bunch of perf tests by quite a bit (mostly the ones that rely on starting the package). This is because previously the target package was made to start running by starting an Activity, which takes up CPU cycles. Now we start a Service and wait for it to report back that its Looper queue is idle, then proceed. This does seem to slightly increase the runtime for some of the tests though... Some test numbers (only tests that have a large difference before and after): Before: registeredBroadcast_mean=1920309 registeredBroadcast_median=1724844 registeredBroadcast_stddev=559809 manifestBroadcastRunning_mean=2395693 manifestBroadcastRunning_median=2063385 manifestBroadcastRunning_stddev=809836 contentProviderRunning_mean=668463 contentProviderRunning_median=588125 contentProviderRunning_stddev=214116 bindServiceAllowOomManagement_mean=1952431 bindServiceAllowOomManagement_median=2017682 bindServiceAllowOomManagement_stddev=289311 bindServiceAlreadyBound_mean=2146257 bindServiceAlreadyBound_median=2022891 bindServiceAlreadyBound_stddev=614549 bindServiceRunning_mean=4947541 bindServiceRunning_median=4710521 bindServiceRunning_stddev=962094 startServiceProcessRunningReadUriPermission_mean=1914106 startServiceProcessRunningReadUriPermission_median=1915209 startServiceProcessRunningReadUriPermission_stddev=196136 startServiceProcessRunning_mean=2841122 startServiceProcessRunning_median=2564792 startServiceProcessRunning_stddev=684654 After: registeredBroadcast_mean=2559587 registeredBroadcast_median=2579792 registeredBroadcast_stddev=191377 manifestBroadcastRunning_mean=2709707 manifestBroadcastRunning_median=2725365 manifestBroadcastRunning_stddev=165661 contentProviderRunning_mean=663058 contentProviderRunning_median=639062 contentProviderRunning_stddev=97864 bindServiceAllowOomManagement_mean=1899179 bindServiceAllowOomManagement_median=1932553 bindServiceAllowOomManagement_stddev=184329 bindServiceAlreadyBound_mean=2023920 bindServiceAlreadyBound_median=2051614 bindServiceAlreadyBound_stddev=159993 bindServiceRunning_mean=6683975 bindServiceRunning_median=6753699 bindServiceRunning_stddev=475811 startServiceProcessRunningReadUriPermission_mean=2388997 startServiceProcessRunningReadUriPermission_median=2405365 startServiceProcessRunningReadUriPermission_stddev=244184 startServiceProcessRunning_mean=3384101 startServiceProcessRunning_median=3388282 startServiceProcessRunning_stddev=207333 Test: m ActivityManagerPerfTestsTestApp ActivityManagerPerfTests Test: adb install \ $OUT/data/app/ActivityManagerPerfTestsTestApp/ActivityManagerPerfTestsTestApp.apk Test: adb install \ $OUT/data/app/ActivityManagerPerfTests/ActivityManagerPerfTests.apk Test: adb shell am instrument -w \ com.android.frameworks.perftests.amtests/android.support.test.runner.AndroidJUnitRunner BUG: 67460485 Change-Id: Iaaaf7d8db885cc1149e74cb7ce4b47a295ab20e4
rameworks/perftests/am/util/Constants.java
rameworks/perftests/am/util/CountDownResultReceiver.java
rameworks/perftests/am/util/Utils.java
|
20a29576ef3773535d44dec7aadeb17d89bd5f07 |
09-Jan-2018 |
Arthur Eubanks <aeubanks@google.com> |
Add performance tests for Service Test: m ActivityManagerPerfTestsTestApp ActivityManagerPerfTests Test: adb install \ $OUT/data/app/ActivityManagerPerfTestsTestApp/ActivityManagerPerfTestsTestApp.apk Test: adb install \ $OUT/data/app/ActivityManagerPerfTests/ActivityManagerPerfTests.apk Test: adb shell am instrument -w -e class \ com.android.frameworks.perftests.am.tests.ServiceStartPerfTest \ com.android.frameworks.perftests.amtests/android.support.test.runner.AndroidJUnitRunner Test: adb shell am instrument -w -e class \ com.android.frameworks.perftests.am.tests.ServiceBindPerfTest \ com.android.frameworks.perftests.amtests/android.support.test.runner.AndroidJUnitRunner BUG: 67460485 Change-Id: I16ea5752def13aabd481aeb29f1af0ac04e75f6a
rameworks/perftests/am/util/Constants.java
|
7156c61c68d23074ac990b1d7556669dcf4d06f3 |
05-Feb-2018 |
Arthur Eubanks <aeubanks@google.com> |
Wait for target package MessageQueue empty before continuing By using Looper.myQueue().addIdleHandler(), the variance for perf tests decreases dramatically. Before: registeredBroadcast_mean=12162588 registeredBroadcast_median=9496511 registeredBroadcast_stddev=10821157 manifestBroadcastRunning_mean=16673251 manifestBroadcastRunning_median=11859325 manifestBroadcastRunning_stddev=13329366 manifestBroadcastNotRunning_mean=59187569 manifestBroadcastNotRunning_median=55761932 manifestBroadcastNotRunning_stddev=14805616 Now: registeredBroadcast_mean=940791 registeredBroadcast_median=889583 registeredBroadcast_stddev=157170 manifestBroadcastRunning_mean=1396281 manifestBroadcastRunning_median=1364531 manifestBroadcastRunning_stddev=189226 manifestBroadcastNotRunning_mean=59161472 manifestBroadcastNotRunning_median=56538781 manifestBroadcastNotRunning_stddev=14414728 Test: m ActivityManagerPerfTestsTestApp ActivityManagerPerfTests Test: adb install \ $OUT/data/app/ActivityManagerPerfTestsTestApp/ActivityManagerPerfTestsTestApp.apk Test: adb install \ $OUT/data/app/ActivityManagerPerfTests/ActivityManagerPerfTests.apk Test: adb shell am instrument -w com.android.frameworks.perftests.amtests/android.support.test.runner.AndroidJUnitRunner Change-Id: I05714294c53f3d013a080dfaa617e1fc92fd14e0
rameworks/perftests/am/util/Constants.java
|
263d674d598f77a1f91bdfc73be808efd3446133 |
18-Dec-2017 |
Arthur Eubanks <aeubanks@google.com> |
Add performance test for BroadcastReceiver This is intended to be the first of multiple performance tests around ActivityManager. This also refactors some of the existing performance utils so that a BenchmarkState which accepts the elapsed time rather than measures it can be added (ManualBenchmarkState). This test measures the current time, sends a Broadcast, the target APK receives it, measures the current time, and sends its measured time back to the test APK. Test: m ActivityManagerPerfTestsTestApp ActivityManagerPerfTests Test: adb install $OUT/data/app/ActivityManagerPerfTestsTestApp/ActivityManagerPerfTestsTestApp.apk Test: adb install $OUT/data/app/ActivityManagerPerfTests/ActivityManagerPerfTests.apk Test: adb shell am instrument -w -e class \ com.android.frameworks.perftests.am.tests.BroadcastPerfTest \ com.android.frameworks.perftests.amtests/android.support.test.runner.AndroidJUnitRunner Bug: 67460485 Change-Id: Ib1606ff60c6a845088bde5bd1a33294765b88b36
rameworks/perftests/am/util/Constants.java
rameworks/perftests/am/util/ITimeReceiverCallback.aidl
rameworks/perftests/am/util/Utils.java
|