Google は、すべての Nexus デバイスで Workload Automation テストを実行するときに、The Verge のホームページを読み込むようです。
AOSP を調べてみると、Android について新しい発見をするのに最適な方法ですが、今回はかなり面白いものを発見しました。 しばらくの間、 ユーザーが報告しました テクノロジーのウェブサイト TheVerge.com モバイルデバイスでのパフォーマンスが低下しました。
彼らの名誉のために言っておきますが、私の経験では、彼らのウェブサイトのパフォーマンスは時間の経過とともに向上しました。 さらに、他のサイト (私たち自身のサイトも含む) に私たちが取り組める問題がないわけではありませんが、それでも、そのサイトの 公式のワークロード ベンチマーク セットに基づいて、Google はテストに The Verge を使用することを決定しました。
Android ワークロード自動化
ワークロードの自動化 (WA) は、によって開発されたフレームワークです。 腕 多くの反復可能なワークロードのスイートを実行することにより、Android デバイス上のパフォーマンス データを収集します。 Google は、これらのワークロード テストの多くを実行し、概要を収集することにより、デバイスのパフォーマンスをベンチマークします。 電力使用量をスプレッドシートにインポートして、最適化によってパフォーマンスがどのように向上したかを確認します。 時間。 同社はテスト スイートに含めるアプリを厳選していますが、一般的には、人気のある Google アプリのほとんどに限定されています。 これが仕組みの要点ですが、ソース コードから証拠を示し、テストについて説明します。 スイートをより詳細に説明することで、Google が測定するために行う自動テストの全体像を把握できるようになります。 パフォーマンス。
AOSP 内には、 専用のディレクトリ ワークロード自動化テストへ。 テストに使用されるアプリは次のように定義されています。 defs.sh、通常は、デフォルトのプリインストールされた Google アプリまたはサードパーティの Web ブラウザの 2 つのカテゴリのいずれかに分類されます。 あるベンチマーク アプリが他のベンチマーク アプリより際立っています。
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 をロードするフラグを使用して起動されます。
テストが異なるように見える理由については、 ボランチス (Nexus 9)、正確にはわかりません。 とにかく、この Chrome-activity-with-The-Verge が実際にどのようなテストを実行するかについては、ワークロード自動化テストのソース コードを確認することで判断できます。
テストスイート
まず最初に、 システムアプリ.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.
そして、 クロムフリング.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 スイートのもう 1 つの興味深いテストは、The Verge とは関係ありませんが、 youtube.sh UIジャンクを測定するパフォーマンステスト
#
# 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
#
これらはすべて、かなり一般的な現実世界の UI パフォーマンス テストであり、実際に見られる種類のテストと何ら変わりません。 私たち自身のテスト. Chromeを開いたときにThe Vergeのホームページを読み込むように変更されたのはかなり最近のことのようで、昨年以前はGoogleはこれらのテスト中にChromeで新しいタブしか開かなかった。 で行われた変更 2015 年 5 月 28 日 ただし、Chrome をテストするときに The Verge の使用を導入しました。 Google が Workload Automation を実行する際にあらゆる場所の The Verge を使用しているのは面白いことですが、 テスト中ですが、これは The Verge がウェブ界で最悪の犯罪者であるという意味ではないことに留意してください パフォーマンス。
実際には、広告ブロッカーの増加を補うためにますます多くの広告が急増しているため、他の多くの Web ページと同様に、パフォーマンスが平凡です。 実際、テクノロジーの進歩を考えると、The Verge を使用するという決定は単に利便性からのものであった可能性が最も高くなります。 平均的な Google 社員は知識が豊富で、The Verge のウェブページに関する多くの愛好家の間での内輪ジョーク パフォーマンス。