Схоже, що Google завантажує домашню сторінку The Verge під час виконання тестування автоматизації робочого навантаження на всіх своїх пристроях Nexus.
Копання в AOSP — чудовий спосіб зробити нові відкриття про Android, і цього разу ми натрапили на щось досить веселе. Протягом деякого часу, повідомили користувачі що веб-сайт технологій TheVerge.com забезпечує повільну роботу на мобільних пристроях.
Тепер, до їхньої честі, на мій досвід, продуктивність їхнього веб-сайту з часом покращилася. Крім того, це не те, що інші сайти (включно з нашим власним) не мають проблем, над якими ми могли б працювати, але все ж я знайшов це досить кумедним, що в його офіційного набору тестів робочого навантаження, Google вирішив використати The Verge у своєму тестуванні.
Автоматизація робочого навантаження Android
Автоматизація робочого навантаження (WA) — це структура, розроблена ARM для збору даних про продуктивність на пристроях Android шляхом виконання набору багатьох повторюваних робочих навантажень. Google порівнює продуктивність своїх пристроїв, виконуючи багато з цих тестів робочого навантаження та збираючи підсумок енергоспоживання, яке потім імпортують в електронну таблицю, щоб побачити, як їхня оптимізація покращила продуктивність час. Компанія вибирає, які програми включити до свого набору тестів, але загалом вони обмежуються більшістю популярних програм Google. Це суть того, як це працює, але ми покажемо докази з вихідного коду та опишемо тест детальніше, щоб ви могли краще зрозуміти, які автоматизовані тести Google проводить для вимірювання продуктивність.
У AOSP є a каталог, присвячений до тестів автоматизації робочого навантаження. Програми, які використовуються для тестування, визначено в defs.shі зазвичай підпадають під одну з двох категорій: за замовчуванням, попередньо встановлений додаток Google або веб-браузер третьої сторони. Один тестовий додаток виділяється серед інших, і це com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity
який, я припускаю, відноситься до Рецензент BrueBench ST бенчмарк, заснований на 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'
Ці дії запускаються через командний рядок ADB за допомогою наступного Systrace варіанти вимірювання продуктивності програми:
dflttracecategories="gfx input view am rs power sched freq idle load memreclaim"
Зокрема, програма Chrome запускається з прапорцем для завантаження The Verge:
Щодо того, чому тест відрізняється від волантис (Nexus 9), я не зовсім впевнений. У будь-якому випадку, щодо того, які тести насправді проходить ця Chrome-activity-with-The-Verge, ми можемо визначити, переглянувши вихідний код тестів автоматизації робочого навантаження.
Набори тестів
По-перше, це systemapps.sh тест, який, за словами Google, працює як такий:
# 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.
Далі, це recentfling.sh тест, який працює так:
# 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.
І тоді є chromefling.sh, який досить просто перевіряє продуктивність Chrome:
# Script to start 3 chrome tabs, fling each of them, repeat
# For each iteration, Total frames and janky frames are reported.
Іншим кумедним тестом у наборі Workload Automation, хоча і не пов’язаним із The Verge, є youtube.sh тест продуктивності, який вимірює 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
Нарешті, кожен із цих тестів використовується для вимірювання реального використання електроенергії шляхом циклічного перегляду протягом певного часу, як визначено в 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 може збирати ці дані за допомогою pwrsummary.sh та імпортуйте їх до електронної таблиці:
# 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
#
Усе це досить поширені тести продуктивності інтерфейсу користувача в реальному світі, мало схожі на ті, які ви бачите наше власне тестування. Схоже, що зміна завантаження домашньої сторінки The Verge під час відкриття Chrome була досить недавньою, оскільки до минулого року Google відкривав нову вкладку в Chrome лише під час цих тестів. Зміна внесена в 28 травня 2015 р однак представив використання The Verge під час тестування Chrome. Наскільки цікаво, що Google використовує The Verge of all places під час автоматизації робочого навантаження тестування, майте на увазі, що це не означає, що The Verge є найгіршим порушником у мережі продуктивність.
Насправді це далеко не так, оскільки багато інших веб-сторінок страждають від посередньої продуктивності завдяки поширенню все більшої кількості реклами, щоб компенсувати зростання блокувальників реклами. Дійсно, найімовірніше, що рішення використовувати The Verge було просто з міркувань зручності, враховуючи, наскільки технічні кмітливий середній працівник Google і жарт багатьох ентузіастів щодо веб-сторінки The Verge продуктивність.