Det verkar som att Google laddar upp The Verges hemsida när man utför Workload Automation-testning på alla sina Nexus-enheter.
Att gräva runt i AOSP är ett bra sätt att göra nya upptäckter om Android, och den här gången har vi stött på något ganska roligt. För en tid, användare har rapporterat att teknikwebbplatsen TheVerge.com gav långsam prestanda på mobila enheter.
Nu till deras kredit, har deras webbplatsprestanda förbättrats över tiden enligt min erfarenhet. Dessutom är det inte som om andra webbplatser (inklusive vår egen) inte har problem som vi kan sträva efter att arbeta med, men jag tyckte ändå att det var ganska underhållande att i sin officiella uppsättning riktmärken för arbetsbelastning, beslutade Google att använda The Verge i sina tester.
Android Workload Automation
Arbetsbelastningsautomatisering (WA) är ett ramverk utvecklat av ÄRM för att samla in prestandadata på Android-enheter genom att köra en svit med många repeterbara arbetsbelastningar. Google jämför prestanda på sina enheter genom att göra många av dessa arbetsbelastningstester och samla in en sammanfattning av energianvändning, som de sedan importerar till ett kalkylblad för att se hur deras optimeringar har förbättrat prestandan tid. Företaget väljer och väljer vilka appar som ska inkluderas i sin testsvit, men i allmänhet begränsar de sig till de flesta av de populära Google-apparna. Det är kärnan i hur det fungerar, men vi kommer att visa bevisen från källkoden och beskriva testet sviter i mer detalj så att du kan få en bättre bild av vilka automatiserade tester Google gör för att mäta prestanda.
Inom AOSP finns en katalog dedikerad till automationstesterna för arbetsbelastning. De appar som används för testning definieras i defs.sh, och faller vanligtvis under en av två kategorier: standard, förinstallerad Google App eller webbläsare från tredje part. En benchmark-app sticker ut från resten, och det är den com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity
som jag antar syftar på BrueBench ST granskare benchmark som är baserat 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'
Dessa aktiviteter startas via ADB-kommandoraden med följande Systrace alternativ för att mäta appprestanda:
dflttracecategories="gfx input view am rs power sched freq idle load memreclaim"
Chrome-appen i synnerhet lanseras med en flagga för att ladda The Verge:
När det gäller varför testet verkar skilja sig åt för volantis (Nexus 9), jag är inte riktigt säker. Hur som helst, vad gäller vilka tester denna Chrome-aktivitet-med-The-Verge faktiskt går igenom, kan vi avgöra genom att titta på källkoden för testerna för automatisering av arbetsbelastningen.
Testsviter
Först ut, det är systemapps.sh test, som Google uppger fungerar som sådant:
# 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.
Därefter är det recentfling.sh test, som fungerar så här:
# 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.
Och så finns det chromefling.sh, som testar Chromes prestanda ganska enkelt:
# Script to start 3 chrome tabs, fling each of them, repeat
# For each iteration, Total frames and janky frames are reported.
Ett annat underhållande test i Workload Automation-sviten, även om det inte är relaterat till The Verge, är youtube.sh prestationstest som mäter 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
Slutligen används vart och ett av dessa test för att mäta verklig energianvändning genom att cykla igenom dem under en viss tid, enligt definitionen 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 sedan samla in dessa data med hjälp av pwrsummary.sh och importera dem till ett kalkylblad:
# 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
#
Dessa är alla ganska vanliga verkliga prestandatester för användargränssnittet, inte olikt de typer du skulle se i våra egna tester. Det verkar som att ändringen för att ladda The Verges hemsida när Chrome öppnades var ganska ny, eftersom Google förra året bara skulle öppna en ny flik i Chrome under dessa tester. En förändring gjord i 28 maj 2015 introducerade dock användningen av The Verge när Chrome testades. Lika underhållande som det är att Google använder The Verge of all place när de utför Workload Automation testa, kom ihåg att detta inte betyder att The Verge är den värsta förövaren där ute för webben prestanda.
Långt därifrån, faktiskt, eftersom många andra webbsidor lider av mediokra prestanda tack vare spridningen av fler och fler annonser för att kompensera för ökningen av annonsblockerare. Det är faktiskt mest troligt att beslutet att använda The Verge helt enkelt var ett av bekvämlighetsskäl, med tanke på hur tekniskt kunnig den genomsnittlige Googler är och det inre skämtet bland många entusiaster om The Verges webbsida prestanda.