Google은 모든 Nexus 기기에서 작업 자동화 테스트를 수행할 때 The Verge의 홈페이지를 로드하는 것으로 보입니다.
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 검토자 언리얼 엔진 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.
그리고 거기에 chromefling.sh, 이는 Chrome의 성능을 오히려 간단하게 테스트합니다.
# Script to start 3 chrome tabs, fling each of them, repeat
# For each iteration, Total frames and janky frames are reported.
The Verge와는 관련이 없지만 Workload Automation 제품군의 또 다른 재미있는 테스트는 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이 작업 자동화를 수행할 때 모든 장소의 The Verge를 사용한다는 것은 재미있는 일입니다. 테스트 중, 이것이 The Verge가 웹에 있어서 최악의 공격자라는 것을 의미하지는 않는다는 점을 명심하십시오. 성능.
실제로는 광고 차단기의 증가를 보상하기 위해 점점 더 많은 광고가 확산되면서 다른 많은 웹페이지가 평범한 성능으로 어려움을 겪고 있기 때문입니다. 실제로 The Verge를 사용하기로 한 결정은 기술적 측면을 고려하면 단순히 편의상 결정되었을 가능성이 높습니다. 평균적인 Google 직원은 정통하며 The Verge의 웹페이지에 관한 많은 열성팬 사이의 내부 농담입니다. 성능.