יותר ממם: גוגל משתמשת ב-TheVerge.com כדי למדוד מכשירי Nexus

נראה שגוגל טוענת את דף הבית של The Verge בעת ביצוע בדיקות Workload Automation בכל מכשירי ה-Nexus שלה.

חפירה ב-AOSP היא דרך מצוינת לגלות תגליות חדשות על אנדרואיד, והפעם נתקלנו במשהו די מצחיק. לכמה זמן, משתמשים דיווחו כי אתר הטכנולוגיה TheVerge.com סיפק ביצועים איטיים במכשירים ניידים.

יאמר לזכותם, מניסיוני, ביצועי האתר שלהם השתפרו עם הזמן. בנוסף, זה לא כאילו באתרים אחרים (כולל שלנו) אין בעיות שאנחנו יכולים לשאוף לעבוד עליהן, אבל בכל זאת מצאתי את זה די משעשע בכך סט רשמי של מדדי עומס עבודה, גוגל החליטה להשתמש ב-The Verge בבדיקות שלהם.


אוטומציה של עומסי עבודה של אנדרואיד

אוטומציה של עומסי עבודה (WA) היא מסגרת שפותחה על ידי זְרוֹעַ לאיסוף נתוני ביצועים במכשירי אנדרואיד על ידי ביצוע חבילה של עומסי עבודה רבים שניתנים לחזרה. גוגל מודדת ביצועים במכשירים שלה על ידי ביצוע רבים מבדיקות עומס העבודה הללו ואיסוף סיכום של צריכת חשמל, שאותה הם מייבאים לגיליון אלקטרוני כדי לראות כיצד האופטימיזציות שלהם שיפרו את הביצועים זְמַן. החברה בוחרת ובוחרת אילו אפליקציות לכלול בחבילת הבדיקה שלה, אך באופן כללי הן מגבילות את עצמן לרוב האפליקציות הפופולריות של גוגל. זו התמצית של איך זה עובד, אבל אנחנו נציג את ההוכחות מקוד המקור ונתאר את הבדיקה סוויטות בפירוט רב יותר כדי שתוכל לקבל תמונה טובה יותר של הבדיקות האוטומטיות שגוגל עושה כדי למדוד ביצועים.

בתוך AOSP, יש א ספרייה ייעודית למבחני האוטומציה של עומסי העבודה. האפליקציות המשמשות לבדיקה מוגדרות ב defs.sh, ובדרך כלל נופלים באחת משתי קטגוריות: ברירת מחדל, Google App מותקן מראש או דפדפן אינטרנט של צד שלישי. אפליקציית בנצ'מרק אחת בולטת מהשאר, והיא כן com.BrueComputing.SunTemple/com.epicgames.ue4.GameActivity שאני מניח מתייחס ל מבקר BrueBench ST benchmark המבוסס על 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 עם הדברים הבאים סיסטרס אפשרויות למדידת ביצועי האפליקציה:

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

אפליקציית Chrome במיוחד מושקת עם דגל לטעינת The Verge:

באשר למה נראה שהבדיקה שונה עבור volantis (Nexus 9), אני לא בדיוק בטוח. בכל מקרה, לגבי אילו בדיקות עוברת בעצם פעילות Chrome-with-The-Verge, אנחנו יכולים לקבוע על ידי התבוננות בקוד המקור של מבחני האוטומציה של עומס העבודה.


סוויטות מבחן

ראשית, יש את systemapps.sh בדיקה, שגוגל מצהירה עובדת כך:

# 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.

לאחר מכן גוגל יכולה לאסוף נתונים אלה באמצעות 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 היה די עדכני, שכן לפני שנה שעברה גוגל פתחה רק כרטיסייה חדשה בכרום במהלך הבדיקות הללו. שינוי שנעשה ב 28 במאי, 2015 עם זאת, הציג את השימוש ב-The Verge בעת בדיקת Chrome. משעשע ככל שיהיה שגוגל משתמשת ב-The Verge of all place בעת ביצוע אוטומציה של עומסי עבודה בבדיקה, זכור שזה לא אומר ש-The Verge הוא העבריין הגרוע ביותר ברשת ביצועים.

רחוק מכך, למעשה, מכיוון שדפי אינטרנט רבים אחרים סובלים מביצועים בינוניים הודות להתרבות של יותר ויותר פרסומות כדי לפצות על עלייתם של חוסמי פרסומות. אכן, סביר להניח שההחלטה להשתמש ב-The Verge הייתה פשוט מתוך נוחות, בהתחשב באופן הטכנולוגי מתמצא בגוגל הממוצע ובבדיחה הפנימית בקרב חובבים רבים בנוגע לדף האינטרנט של The Verge ביצועים.