BLaDE: Braveの新たな性能評価基盤

Kleomenis Katevas、Stefanos Laskaridis、Aravindh Raman、Mihai Plesa、Hamed Haddadiによる開発を紹介いたします。この投稿は機械学習シニアリサーチャーのKleomenis Katevasによる記事の日本語訳です。

変化が速い現在のマーケットでは、製品リリースの継続的な評価が不可欠です。企業は競争力を維持し、変わり続ける顧客の期待に応えるため、定期的に製品を評価しなければなりません。このプロセスにより、競合他社と製品を比較する際にも重要な洞察が生まれます。しかし、製品評価には大きな課題もあります。

新機能の出荷、異なるブラウザ間でのWebブラウジング・ユーザ・アクティビティのシミュレーション、デバイス上での機械学習モデルの評価など、クロスデバイスのモバイルアプリのアクティビティを自動化することは、オペレーティング・システム(OS)固有の制約があるため簡単ではありません。さらに、OSの推定値が信頼できず、多くの場合サンプリングレート(1秒あたりのサンプル数)が低くなることにより、アクティビティの消費電力を正確にプロファイリングすることは困難を極めます。

このような課題を解決するため、私たちは(当初は2019年にリリースされていた) BatteryLab 1 2 の後継としてBLaDE(BatteryLab Device Evaluations)を導入し、モバイルデバイスの自動パフォーマンス評価のためのBraveのオープンソースソリューションとして利用を開始しました。AndroidとiOSの両方をサポートするBLaDEは、消費電力、CPU使用率、デバイス温度、ネットワークトラフィック(帯域幅)を設定可能な頻度で記録し、精度も高く、さまざまな種類の自動化手法を使用してユーザーアクションをシミュレートすることができます。システム設計とコードベースはオープンソース化されており、開発者や研究者であれば誰でも、このセットアップを複製して、自身のモバイル・デバイスで包括的な性能評価を実施することができます。

BLaDE システム設計

フルセットアップの概略図 フルセットアップの写真

私たちのシステムは、以下の主要なハードウェア・コンポーネントで設計されています:

  • メインコントローラー (Raspberry Pi 4, 8GB): 中央のデバイス・コーディネーター(関係者はBLaDE Runnerと呼んでいます)は、すべてのシステム動作の管理とオーケストレーションを担当します。

  • Macコントローラー (Mac Mini, M2, 8-core): AppiumによるiOSベースの自動化をサポートし、XcodeでiOSアプリをビルドするためのMacベースのマシンです。

  • パワーモニター (Monsoon HV): 最大周波数5KHzで接続機器の消費電力を測定するための重要なコンポーネントです。

  • プログラマブルACスイッチ (Keene KPS1): 電源モニターへの電源供給を制御するために使用され、デバイスへの自動電源サイクルを可能にします。

  • プログラマブルリレーボード (Yizhet 5V, 8 Ch.): 電源モニターからデバイスへの電力分配を制御するために使用されます。どのデバイスに電源を入れるかをプログラムで選択するためのものです。

  • プログラマブルUSBハブ (YKUSH 3): これらのハブは、USB接続の選択的な電源オン/オフが可能で、各ポートに絶縁された電源制御を提供します。

  • IRサーモメーター (MLX90614): デバイスの温度を継続的に監視するために配置します。

  • LCDディスプレイ (Waveshare LCD1602): システム状態(監視対象デバイス、リアルタイム消費電力など)を報告する通知ユニットです。

  • モバイルデバイス: 私たちのBLaDEインフラと互換性があるように設定されたiOS (iPhone 14 Pro, SE 2022) とAndroid (Galaxy S23, Pixel 6a)などの様々なデバイスです。

  • サーベイランスカメラ (Anker PowerConf C200): 評価の状況を遠隔監視するために使用します。OSを介した遠隔スクリーンキャストのオプションもありますが、パフォーマンス指標に支障をきたす可能性があるため使用していません。

  • ルーター (UniFi Dream Router): 70MBitの専用VLANネットワークに接続し、コントローラーとMac MiniにはEthernetネットワークアクセスを、すべてのモバイルデバイスにはWiFi 6ネットワークアクセスを提供します。さらに、必要に応じてVPNサービスを介してインターネットトラフィックを転送することができ、必要に応じて異なる場所からのインターネットアクセスのシミュレーションを可能にします。

デバイス設定

正確な電力測定を容易にするため、利用可能なソフトウェアではなくバッテリーバイパス技術を利用しました。各デバイスを分解してバッテリーを取り外し、内部のバッテリーコントローラーを取り出し、ケーブルから電源端子を露出させます。この方法により、デバイスの消費電力を電源端子から直接モニターすることができ、パワーモニターを使用して最大5kHzの周波数で正確な測定をすることができました。

さらに、外的要因の影響を最小限に抑えるため、OSとアプリの自動アップデートを無効にする、明るさ/充電/バッテリーの適応機能をオフにする、ダークモードを有効にする、デバイス全体で明るさレベルを25%に標準化するなど、デバイスのOS設定を行います。

デバイステストの自動化

モバイルデバイスのテストを自動化することは、特にこのようなカスタムセットアップでは、複雑になる可能性があります。BLaDEは、デバイスステータスの読み取り、電源状態の制御、測定プロセスの管理など、デバイス管理の様々な側面を容易にする包括的なAPIセットを提供します。

モバイル・デバイスを切り替えるための “switch on” APIコールの例を考えてみます:

  1. 起動と接続: まず電源モニターのスイッチを入れます。BLaDEはモニターが使用可能になってから、接続を確立します。

  2. USB電源有効化: BLaDEは次に端末のUSB電源を有効化し、このあとの操作に備えます。

  3. リレーの起動: 電力の流れを管理するため、リレーボードの適切なリレーを起動します。

  4. 電圧設定: デバイスの起動に必要な電圧を設定します。

  5. 端末の同期: BLaDEは、デバイスが使用可能になるのを待ち、クロックをコントローラと同期させます。こうすることで、正確な時間計測が可能になります。

  6. 端末のロック解除: iOS端末では、BLaDEはBluetooth HIDサービスを使用して接続し、PINを入力してデバイスのロックを解除します。このステップは、起動後にデバイスがUSB経由で通信できるようにするために必要です。

携帯電話の電源性能を測定する場合、USB電源レーンを無効にすることが極めて重要です。こうすることで、USB電流がパワーモニターの測定値に干渉しないようになります。デバイスとのすべての通信は、測定の前後を問わず、Wi-FiまたはBluetoothを使用した無線通信でなければなりません。

現在、BLaDEはAndroid Debug Bridge(ADB)、Bluetooth HID、Appiumベースのフレームワークによる自動化をサポートしています。

Android Debug Bridge (ADB) による自動化 (Androidのみ)

Android Debug Bridge(ADB)は、開発者がAndroidデバイスと通信するための多機能なコマンドラインツールです。アプリケーションのインストールやデバッグ、ファイルの転送、デバイスの画面やキーボードとのやり取りなど、幅広いデバイス操作をサポートします。ADBコマンドはUSB、Wi-Fi、Bluetooth経由で実行します。BLaDEはこのツールの上に構築され、「テキストを入力する」、「タップする」、「下にスクロールする」、「フォアグラウンドアプリを閉じる」など、デバイスの自動化に必要なアクションを行います。

Bluetooth HID による自動化 (iOSとAndroid)

iOS上のサードパーティアプリの自動化においては、Wi-FiやBluetooth上で動作するADBのようなAPIが公開されていません。これに対処するため、コントローラに仮想HID(Human Interface Device)サービスを作成することで、Bluetoothマウスとキーボードを仮想化しました。また、キーボードのキーストローク、マウスのクリック、ジェスチャーをHIDアクションに変換する自動化ライブラリを作成し、制御されるデバイスとのユーザー・インタラクションを効果的にシミュレートしました。このようにしてユーザーアクションを模倣することで、アプリの検索や起動、その後のアプリ操作といったタスクの自動化が可能になります。

Appium をベースとした自動化 (iOSとAndroid)

別のアプローチとして、複数のプラットフォームを対象とする場合にアクションを自動化し、上記の自動化手法のオーバーヘッドを最小限に抑えるために実験的にAppiumベースのフレームワークを使用する場合があります。AppiumはAndroidにはADBを、iOSの自動化にはAppleのXCTestを使用します。Appiumは一般的にカスタム・アプリケーション・ビルドの機能テストに使用されるますが、私たちは現在、主にAndroidとiOSアプリのパフォーマンスを測定するために、このフレームワークを実験的に使用しています。

製品評価のためのBLaDE

BLaDEは私たちの製品パイプラインにとって極めて重要であり、LLMのオンデバイス・パフォーマンス、モジュールのコスト効率、ブラウジング機能など、様々な機能のパフォーマンス、堅牢性、信頼性を保証します。新しい開発ビルドの準備が整い、特定の機能をテストする必要がある場合、そのビルドはオンデマンドでBLaDEに送信され、さまざまなデバイスで詳細な性能評価が行われます。このプロセスは、新たなリグレッションやボトルネックの特定に役立ち、私たちは問題に迅速に対処し、ユーザーが期待する高い水準を維持することができます。BLaDE の継続的なモニタリングにより、潜在的なパフォーマンス問題が未然に管理されていることを確認することで、自信を持ってアップデートをリリースすることができます。

BraveでのBLaDEの使用方法について詳細は、以下のブログ記事をご参照ください:

BLaDEのソースコードとシステムデザインはhttps://github.com/brave/blade で公開されています。私たちは、システム機能を拡張する意欲のあるコントリビュータを歓迎します。

リファレンス


  1. Matteo Varvello, Kleomenis Katevas, Mihai Plesa, Hamed Haddadi, Fabian Bustamante, Benjamin Livshits, “BatteryLab: A Collaborative Platform for Power Monitoring”. In the International Conference on Passive and Active Network Measurement (PAM ‘21). ↩︎

  2. Matteo Varvello, Kleomenis Katevas, Mihai Plesa, Hamed Haddadi, Benjamin Livshits, “BatteryLab, A Distributed Power Monitoring Platform For Mobile Devices”. At the 18th ACM Workshop on Hot Topics in Networks (HotNets ‘19). ↩︎

  3. Stefanos Laskaridis, Kleomenis Katevas, Lorenzo Minto, Hamed Haddadi, “MELTing point: Mobile Evaluation of Language Transformers”. To appear in the 30th Annual International Conference on Mobile Computing and Networking (MobiCom ‘21). ↩︎

Related articles

Braveで新しいWebを体験する準備はできましたか?

Braveはプライバシーとパフォーマンスを重視するWebのパイオニアからなるチームによって開発されています。Braveを利用しWebの再構築に協力していただけませんか?