أكثر من مجرد ميمي: تستخدم Google موقع TheVerge.com لقياس أداء أجهزة Nexus

يبدو أن Google تقوم بتحميل صفحة The Verge الرئيسية عند إجراء اختبار Workload Automation على جميع أجهزة Nexus الخاصة بها.

يعد البحث في AOSP طريقة رائعة لتحقيق اكتشافات جديدة حول Android، وهذه المرة صادفنا شيئًا مضحكًا إلى حد ما. لبعض الوقت، أبلغ المستخدمون أن موقع التكنولوجيا TheVerge.com قدمت أداء بطيئا على الأجهزة المحمولة.

الآن يُحسب لهم أن أداء موقع الويب الخاص بهم قد تحسن بمرور الوقت وفقًا لتجربتي. بالإضافة إلى ذلك، لا يبدو الأمر كما لو أن المواقع الأخرى (بما في ذلك مواقعنا) ليس لديها مشكلات يمكننا أن نسعى جاهدين للعمل عليها، ولكن مع ذلك وجدت أنه من الممتع جدًا أن يكون ذلك في المجموعة الرسمية لمعايير عبء العمل، قررت Google استخدام The Verge في اختباراتها.


أتمتة عبء العمل على Android

أتمتة عبء العمل (WA) هو إطار تم تطويره بواسطة ذراع لجمع بيانات الأداء على أجهزة Android عن طريق تنفيذ مجموعة من أحمال العمل المتكررة. تقوم Google بقياس الأداء على أجهزتها من خلال إجراء العديد من اختبارات عبء العمل هذه وجمع ملخص لها استخدام الطاقة، والذي يقومون بعد ذلك باستيراده إلى جدول بيانات لمعرفة كيف أدت تحسيناتهم إلى تحسين الأداء وقت. تقوم الشركة باختيار التطبيقات التي تريد تضمينها في مجموعة الاختبار الخاصة بها، ولكنها بشكل عام تقتصر على معظم تطبيقات Google الشائعة. هذا هو جوهر آلية العمل، ولكننا سنعرض الأدلة من الكود المصدري ونصف الاختبار المزيد من التفاصيل حتى تتمكن من الحصول على صورة أفضل لما تقوم به Google من اختبارات آلية لقياسها أداء.

ضمن AOSP، هناك الدليل مخصص لاختبارات أتمتة عبء العمل. يتم تعريف التطبيقات المستخدمة للاختبار في 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 بما يلي سيستراس خيارات لقياس أداء التطبيق:

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

يتم تشغيل تطبيق Chrome على وجه الخصوص مع علامة لتحميل The Verge:

أما لماذا يبدو أن الاختبار يختلف بالنسبة لـ volantis (نيكزس 9)، لست متأكدًا تمامًا. على أي حال، بالنسبة للاختبارات التي يمر بها نشاط Chrome-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.

التالي، هناك حديثة.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 اختبار الأداء الذي يقيس واجهة المستخدم غير المرغوب فيها

#
# 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 في جميع الأماكن عند إجراء أتمتة أحمال العمل الاختبار، ضع في اعتبارك أن هذا لا يعني أن The Verge هو أسوأ مخالف للويب أداء.

وبعيدًا عن ذلك، في الواقع، حيث تعاني العديد من صفحات الويب الأخرى من أداء متواضع بفضل انتشار المزيد والمزيد من الإعلانات للتعويض عن ظهور أدوات حظر الإعلانات. في الواقع، من المرجح أن قرار استخدام The Verge كان مجرد قرار من باب الملاءمة، نظرًا لكيفية استخدام التكنولوجيا يتمتع موظف Google العادي بالذكاء والنكتة الداخلية بين العديد من المتحمسين فيما يتعلق بصفحة الويب الخاصة بـ The Verge أداء.