Mere end et meme: Google bruger TheVerge.com til at benchmarke Nexus-enheder

Det ser ud til, at Google indlæser The Verges hjemmeside, når de udfører Workload Automation-test på alle sine Nexus-enheder.

At grave rundt i AOSP er en fantastisk måde at gøre nye opdagelser om Android på, og denne gang er vi stødt på noget ret sjovt. I nogen tid, brugere har rapporteret at teknologihjemmesiden TheVerge.com leverede langsom ydeevne på mobile enheder.

Nu til deres kredit, er deres websteds ydeevne blevet forbedret over tid efter min erfaring. Plus, det er ikke som om andre websteder (inklusive vores egne) ikke har problemer, vi kan stræbe efter at arbejde på, men ikke desto mindre fandt jeg det ret morsomt, at officielt sæt benchmarks for arbejdsbelastning, besluttede Google at bruge The Verge i deres test.


Android Workload Automation

Arbejdsbelastningsautomatisering (WA) er en ramme udviklet af ARM til indsamling af ydeevnedata på Android-enheder ved at udføre en pakke med mange gentagelige arbejdsbelastninger. Google benchmarker ydeevne på deres enheder ved at udføre mange af disse arbejdsbelastningstests og samle en oversigt over strømforbrug, som de derefter importerer til et regneark for at se, hvordan deres optimeringer har forbedret ydeevnen i forhold til tid. Virksomheden vælger og vælger, hvilke apps der skal inkluderes i sin testpakke, men generelt begrænser de sig til de fleste af de populære Google-apps. Det er kernen i, hvordan det fungerer, men vi viser beviserne fra kildekoden og beskriver testen suiter mere detaljeret, så du kan få et bedre billede af, hvilke automatiserede test Google laver for at måle ydeevne.

Inden for AOSP er der en mappe dedikeret til arbejdsbyrdeautomatiseringstesten. De apps, der bruges til test, er defineret i defs.sh, og falder generelt under en af ​​to kategorier: standard, forudinstalleret Google App eller tredjeparts webbrowser. Én benchmark-app skiller sig ud fra resten, og det er den com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity som jeg antager henviser til BrueBench ST anmelder benchmark, som er baseret på Unreal Engine 4.

# default activities. Can dynamically generate with -g.
gmailActivity='com.google.android.gm/com.google.android.gm.ConversationListActivityGmail'
clockActivity='com.google.android.deskclock/com.android.deskclock.DeskClock'
hangoutsActivity='com.google.android.talk/com.google.android.talk.SigningInActivity'
chromeActivity='com.android.chrome/_not_used'
contactsActivity='com.google.android.contacts/com.android.contacts.activities.PeopleActivity'
youtubeActivity='com.google.android.youtube/com.google.android.apps.youtube.app.WatchWhileActivity'
cameraActivity='com.google.android.GoogleCamera/com.android.camera.CameraActivity'
playActivity='com.android.vending/com.google.android.finsky.activities.MainActivity'
feedlyActivity='com.devhd.feedly/com.devhd.feedly.Main'
photosActivity='com.google.android.apps.photos/com.google.android.apps.photos.home.HomeActivity'
mapsActivity='com.google.android.apps.maps/com.google.android.maps.MapsActivity'
calendarActivity='com.google.android.calendar/com.android.calendar.AllInOneActivity'
earthActivity='com.google.earth/com.google.earth.EarthActivity'
calculatorActivity='com.google.android.calculator/com.android.calculator2.Calculator'
calculatorLActivity='com.android.calculator2/com.android.calculator2.Calculator'
sheetsActivity='com.google.android.apps.docs.editors.sheets/com.google.android.apps.docs.app.NewMainProxyActivity'
docsActivity='com.google.android.apps.docs.editors.docs/com.google.android.apps.docs.app.NewMainProxyActivity'
operaActivity='com.opera.mini.native/com.opera.mini.android.Browser'
firefoxActivity='org.mozilla.firefox/org.mozilla.firefox.App'
suntempleActivity='com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity'
homeActivity='com.google.android.googlequicksearchbox/com.google.android.launcher.GEL'

Disse aktiviteter lanceres via ADB-kommandolinjen med følgende Systrace muligheder for at måle app-ydeevne:

dflttracecategories="gfx input view am rs power sched freq idle load memreclaim"

Især Chrome-appen lanceres med et flag for at indlæse The Verge:

Med hensyn til hvorfor testen ser ud til at være forskellig for volantis (Nexus 9), jeg er ikke helt sikker. Anyways, hvad angår hvilke test denne Chrome-aktivitet-with-The-Verge faktisk gennemgår, kan vi bestemme ved at se på kildekoden til workload-automatiseringstesten.


Test suiter

Først op er der systemapps.sh test, som Google angiver fungerer som sådan:

# Script to start a set of apps in order and then in each iteration
# switch the focus to each one. For each iteration, the time to start
# the app is reported as measured using atrace events and via am ThisTime.
# The output also reports if applications are restarted (eg, killed by
# LMK since previous iteration) or if there were any direct reclaim
# events.

Dernæst er der recentfling.sh test, som fungerer sådan her:

# Script to start a set of apps, switch to recents and fling it back and forth.
# For each iteration, Total frames and janky frames are reported.

Og så er der chromefling.sh, som tester Chromes ydeevne ret simpelt:

# Script to start 3 chrome tabs, fling each of them, repeat
# For each iteration, Total frames and janky frames are reported.

En anden underholdende test i Workload Automation-pakken, selvom den ikke er relateret til The Verge, er youtube.sh præstationstest som måler UI jank

#
# Script to play a john oliver youtube video N times.
# For each iteration, Total frames and janky frames are reported.
#
# Options are described below.
#
iterations=10
app=youtube
searchText="last week tonight with john oliver: online harassment"
vidMinutes=15

Endelig bruges hver af disse tests til at måle strømforbruget i den virkelige verden ved at cykle gennem dem i et vist tidsrum, som defineret i pwrtest.sh:

# Script to gather perf and perf/watt data for several workloads
#
# Setup:
#
# - device connected to monsoon with USB passthrough enabled
# - network enabled (baseline will be measured and subtracted
# from results) (network needed for chrome, youtube tests)
# - the device is rebooted after each test (can be inhibited
# with "-r 0")
#
# Default behavior is to run each of the known workloads for
# 30 minutes gathering both performance and power data.

Google kan derefter indsamle disse data vha pwrsummary.sh og importer dem til et regneark:

# print summary of output generated by pwrtest.sh
#
# default results directories are -[-experiment]. By default
# match any device and the year 201*.
#
# Examples:
#
# - show output for all bullhead tests in july 2015:
# ./pwrsummary.sh -r "bh-201507*"
#
# - generate CSV file for import into spreadsheet:
# ./pwrsummary.sh -o csv
#

Disse er alle ret almindelige UI-ydeevnetests i den virkelige verden, ikke ulig den slags, du ville se i vores egen test. Det ser ud til, at ændringen til at indlæse The Verges hjemmeside ved åbning af Chrome var ret nylig, da Google før sidste år kun ville åbne en ny fane i Chrome under disse tests. En ændring foretaget i 28. maj 2015 introducerede brugen af ​​The Verge, da Chrome testedes. Så morsomt som det er, at Google bruger The Verge of all places, når de udfører Workload Automation test, husk på, at dette ikke betyder, at The Verge er den værste lovovertræder derude på nettet ydeevne.

Faktisk langt fra, da mange andre websider lider af middelmådig ydeevne takket være udbredelsen af ​​flere og flere annoncer for at kompensere for stigningen i annonceblokkere. Faktisk er det mest sandsynligt, at beslutningen om at bruge The Verge simpelthen var en af ​​bekvemmelighedsgrunde, i betragtning af hvordan teknologien den gennemsnitlige Googler er kyndig og den indre joke blandt mange entusiaster om The Verges webside ydeevne.