Het lijkt erop dat Google de startpagina van The Verge laadt bij het uitvoeren van Workload Automation-tests op al zijn Nexus-apparaten.
Rondsnuffelen in AOSP is een geweldige manier om nieuwe ontdekkingen te doen over Android, en deze keer zijn we iets nogal hilarisch tegengekomen. Al enige tijd, gebruikers hebben gerapporteerd dat de technologiewebsite TheVerge.com zorgde voor trage prestaties op mobiele apparaten.
Het is hun verdienste dat de prestaties van hun website in de loop van de tijd naar mijn ervaring zijn verbeterd. Bovendien is het niet zo dat andere sites (waaronder de onze) geen problemen hebben waar we aan kunnen werken, maar toch vond ik het behoorlijk grappig dat in zijn officiële set werklastbenchmarks besloot Google The Verge te gebruiken bij hun tests.
Automatisering van Android-werklasten
Automatisering van werklasten (WA) is een raamwerk ontwikkeld door ARM voor het verzamelen van prestatiegegevens op Android-apparaten door een reeks van vele herhaalbare workloads uit te voeren. Google benchmarkt de prestaties op hun apparaten door veel van deze werkbelastingstests uit te voeren en daar een samenvatting van te verzamelen energieverbruik, dat ze vervolgens in een spreadsheet importeren om te zien hoe hun optimalisaties de prestaties hebben verbeterd tijd. Het bedrijf kiest zelf welke apps het in zijn testpakket wil opnemen, maar over het algemeen beperken ze zich tot de meeste populaire Google-apps. Dat is de essentie van hoe het werkt, maar we zullen het bewijs uit de broncode laten zien en de test beschrijven suites in meer detail, zodat u een beter beeld krijgt van welke geautomatiseerde tests Google doet om te meten prestatie.
Binnen AOSP is er een map gewijd aan de tests voor werklastautomatisering. De apps die voor het testen worden gebruikt, zijn gedefinieerd in defs.sh, en vallen over het algemeen onder een van de twee categorieën: standaard, vooraf geïnstalleerde Google-app of webbrowser van derden. Eén benchmark-app onderscheidt zich van de rest, en dat is het ook com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity
waarvan ik aanneem dat het verwijst naar de BrueBench ST-recensent benchmark die is gebaseerd op de 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'
Deze activiteiten worden gestart via de ADB-opdrachtregel met het volgende Systrace opties om app-prestaties te meten:
dflttracecategories="gfx input view am rs power sched freq idle load memreclaim"
Vooral de Chrome-app wordt gelanceerd met een vlag om The Verge te laden:
Waarom de test lijkt te verschillen voor de volantis (Nexus 9), ik weet het niet precies zeker. Hoe dan ook, welke tests deze Chrome-activiteit-met-The-Verge daadwerkelijk doorloopt, kunnen we bepalen door naar de broncode van de workload-automatiseringstests te kijken.
Testsuites
Ten eerste is er de systeemapps.sh test, die volgens Google als zodanig werkt:
# 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.
Vervolgens is er de recentfling.sh test, die als volgt werkt:
# 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.
En dan is er chromefling.sh, waarmee de prestaties van Chrome vrij eenvoudig worden getest:
# Script to start 3 chrome tabs, fling each of them, repeat
# For each iteration, Total frames and janky frames are reported.
Een andere leuke test in de Workload Automation-suite, hoewel niet gerelateerd aan The Verge, is de youtube.sh prestatietest die UI-jank meet
#
# 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
Ten slotte wordt elk van deze tests gebruikt om het energieverbruik in de echte wereld te meten door ze gedurende een bepaalde tijd te doorlopen, zoals gedefinieerd in 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 deze gegevens vervolgens verzamelen met behulp van pwrsamenvatting.sh en importeer ze in een spreadsheet:
# 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
#
Dit zijn allemaal redelijk gebruikelijke UI-prestatietests in de echte wereld, vergelijkbaar met de soorten die je zou zien onze eigen testen. Het lijkt erop dat de wijziging om de startpagina van The Verge te laden bij het openen van Chrome vrij recent was, aangezien Google vóór vorig jaar tijdens deze tests alleen een nieuw tabblad in Chrome opende. Een wijziging aangebracht in 28 mei 2015 introduceerde echter het gebruik van The Verge bij het testen van Chrome. Hoe grappig het ook is dat Google The Verge van alle plaatsen gebruikt bij het uitvoeren van Workload Automation Houd er rekening mee dat dit niet betekent dat The Verge de ergste overtreder op internet is prestatie.
Integendeel zelfs, aangezien veel andere webpagina's te kampen hebben met middelmatige prestaties dankzij de proliferatie van steeds meer advertenties om de opkomst van adblockers te compenseren. Het is inderdaad zeer waarschijnlijk dat de beslissing om The Verge te gebruiken eenvoudigweg uit gemak was, gezien de technologie De gemiddelde Googler is slim en de grap onder veel enthousiastelingen over de webpagina van The Verge prestatie.