Mer enn et meme: Google bruker TheVerge.com til å måle Nexus-enheter

Det ser ut til at Google laster opp The Verges hjemmeside når de utfører Workload Automation-testing på alle Nexus-enhetene.

Å grave rundt i AOSP er en fin måte å gjøre nye oppdagelser om Android på, og denne gangen har vi kommet over noe ganske morsomt. I noen tid, brukere har rapportert at teknologinettstedet TheVerge.com gitt treg ytelse på mobile enheter.

Nå til ære for deres nettsted, har ytelsen deres forbedret over tid etter min erfaring. Dessuten er det ikke som om andre nettsteder (inkludert våre egne) ikke har problemer vi kan strebe etter å jobbe med, men likevel syntes jeg det var ganske morsomt at offisielle sett med benchmarks for arbeidsbelastning, bestemte Google seg for å bruke The Verge i testingen.


Android Workload Automation

Arbeidsbelastningsautomatisering (WA) er et rammeverk utviklet av VÆPNE for å samle ytelsesdata på Android-enheter ved å utføre en serie med mange repeterbare arbeidsbelastninger. Google måler ytelsen på enhetene sine ved å gjøre mange av disse arbeidsbelastningstestene og samle et sammendrag av strømforbruk, som de deretter importerer til et regneark for å se hvordan optimaliseringene deres har forbedret ytelsen tid. Selskapet velger og velger hvilke apper som skal inkluderes i testpakken, men generelt sett begrenser de seg til de fleste av de populære Google-appene. Det er kjernen i hvordan det fungerer, men vi viser bevisene fra kildekoden og beskriver testen suiter mer detaljert slik at du kan få et bedre bilde av hvilke automatiserte tester Google gjør for å måle opptreden.

Innenfor AOSP er det en katalog dedikert til arbeidsbelastningsautomatiseringstestene. Appene som brukes til testing er definert i defs.sh, og faller vanligvis inn under en av to kategorier: standard, forhåndsinstallert Google App eller tredjeparts nettleser. Én benchmark-app skiller seg ut fra resten, og det er den com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity som jeg antar refererer til BrueBench ST anmelder benchmark som er basert 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 aktivitetene startes via ADB-kommandolinjen med følgende Systrace alternativer for å måle appytelse:

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

Spesielt Chrome-appen lanseres med et flagg for å laste The Verge:

Når det gjelder hvorfor testen ser ut til å variere for volantis (Nexus 9), jeg er ikke helt sikker. Uansett, når det gjelder hvilke tester denne Chrome-aktiviteten-with-The-Verge faktisk går gjennom, kan vi fastslå ved å se på kildekoden til arbeidsbelastningsautomatiseringstestene.


Testsuiter

Først opp, det er systemapps.sh test, som Google sier 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.

Deretter er det recentfling.sh test, som fungerer slik:

# 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 det chromefling.sh, som tester Chromes ytelse ganske enkelt:

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

En annen morsom test i Workload Automation-pakken, selv om den ikke er relatert til The Verge, er youtube.sh ytelsestest 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

Til slutt brukes hver av disse testene til å måle strømforbruket i den virkelige verden ved å sykle gjennom dem i en viss tid, som definert 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 deretter samle inn disse dataene ved hjelp av 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 ganske vanlige UI-ytelsestester i den virkelige verden, ikke ulikt de du vil se i vår egen testing. Det ser ut til at endringen for å laste The Verges hjemmeside ved åpning av Chrome var ganske nylig, som før i fjor ville Google bare åpne en ny fane i Chrome under disse testene. En endring gjort i 28. mai 2015 introduserte imidlertid bruken av The Verge ved testing av Chrome. Like morsomt som det er at Google bruker The Verge of all places når de utfører Workload Automation testing, husk at dette ikke betyr at The Verge er den verste lovbryteren der ute for web opptreden.

Langt ifra, faktisk, ettersom mange andre nettsider lider av middelmådig ytelse takket være spredningen av flere og flere annonser for å kompensere for økningen av annonseblokkere. Det er faktisk mest sannsynlig at beslutningen om å bruke The Verge ganske enkelt var en av bekvemmelighetsgrunnlaget, gitt hvordan teknologien erfarne den gjennomsnittlige Googleren er og innsidespøken blant mange entusiaster angående The Verges nettside opptreden.