Version: 2020.3
プロジェクトを別のバージョン管理システムに移行する
Collaborate のトラブルシューティングのヒント

Unity Accelerator

概要

Unity Accelerator (アクセラレーター) は、チームのインポートされたアセットのコピーを保存し、チームワークを高速化するキャッシュプロキシエージェントです。その目的は、チームがイテレーション時間を短縮できるようにすることです。Accelerator は、チームが同じローカルネットワーク上で作業している場合にアセットの共有を調整し、プロジェクトの一部を再インポートする必要がないようにします。これは、アセットインポートパイプライン v2 Unity エディター の機能によって行われます。オプションで、Accelerator は Unity Teams Advanced と一緒に使用することで、Collaborate のソースアセットを共有することができ、Collaborate サービスからのダウンロード時間を大幅に短縮することができます。

ローカルネットワークに Accelerator をインストールすると、Unity エディター (バージョン 2019.3 以降 (後述の Unity エディター 要件 を参照) が Accelerator と通信し、他のチームメンバーが必要としたり、変更や作成を行ったアセットの保存や取得を行います。Accelerator はこれらのアセットの一時的なコピーを保存し、アセットを取得したり再インポートしたりするための時間と帯域幅の無駄を防ぎます。

Accelerator の概要
Accelerator の概要

項目

Accelerator のインストール

要件

ローカルホスティングの要件

チームが定期的に作業する各ネットワークに Accelerator をインストールします。ローカルネットワーク上に、Accelerator をホストすることができるマシンが必要です。ホストを選択する際には、以下の要件を考慮してください。

  • ローカルホストが以下の OS のいずれかを実行している必要があります。
    • Linux (Ubuntu 16.04、Ubuntu 18.04、または CentOS 7)
      Linux の場合、Acccelerator をルートユーザーとしてインストールする必要があります。
    • Windows Server 2008R2 / Windows 7 以上 (64 ビット)
    • Mac OS X 10.12 以上 (64 ビット)
  • ローカルホストには、プロジェクトのほとんどのファイルをホストするのに十分なローカルストレージスペースが必要です。できれば、オペレーティングシステムをホストするドライブとは別のソリッドステートドライブ (SSD) に保存してください。
  • ローカルホストには、手頃な価格でできるだけ多くのメモリを搭載する必要があります。最低でも 2 GB の RAM が必要ですが、より多くのメモリが利用可能であれば、キャッシュしたアイテムをオペレーティングシステムがバッファリングを行うために使用でき、よくアクセスされるアイテムのパフォーマンスが向上します。通常の推奨値は 32 GB の RAM です。
  • ローカルホストがチームと同じネットワークに接続されている必要があります。または、Accelerator の IP アドレスとポート (TCP) へのアクセスを許可する適切なファイアウォールポリシーを持ちローカルのルーティングが可能である必要があります。
  • ホストマシンにアクセスできる人は、Unity Organization (組織) 内の権限構造に関わらず、プロジェクトのファイルにアクセスできます。そのため、Unity では、Organization Owner (所有者) または Manager (管理者) のみが Accelerator にアクセスして操作できるように、そのマシンを制限することをお勧めします。

Unity エディターの要件

Unity プロジェクトは、Unity エディターのバージョン 2019.3 以降を使用している必要があります。

インストーラーによる Accelerator のインストール

Unity Teams Advanced を使用していない場合は、Unity Accelerator を直接ダウンロードしてインストールし、インストール時に登録トークンのチェックを外してください。

ノート: Accelerator を Linux システムにインストールする場合は、Accelerator バージョンの確認 を参照してください。

また、Docker Hub から Accelerator をインストールすることもできます。

“ヘッドレス” マシンへ Accelerator をインストール

各プラットフォームで、コマンドラインからインストーラーを実行できます。インストーラーの引数に --help を指定して実行すると、利用可能なさまざまなオプションが表示されます。プロンプトを表示せずに完全なインストールを実行するには、以下の値を指定する必要があります。

  • --storagedir ファイルや設定を保存する Accelerator のディレクトリを設定します。
  • --registration-token Accelerator の作成後に 開発者ダッシュボード で提供されるトークンを指定します。これは、Accelerator を Collaborate と一緒に使用する際に必要です。
  • --mode 何もクエリしない無人の自動インストールを行います。これには、デフォルト値、または提供された他のオプションフラグの値が使用されます。
  • Mac OS X では、ディスクイメージ (DMG) をマウントし、インストーラーアプリケーションのディレクトリにあるバイナリを実行する必要があります (場所は Contents/MacOS/installbuilder.sh)。

Accelerator 使用のためのエディター設定

Accelerator をインストールすると、設定ウィザードの最後のステップで、エディターで参照する IP アドレスと Port が以下の形式で表示されます。

[IP]:[Port]

Asset pipeline version 2 Cache Server として Accelerator を使用するようにエディターを設定するには、以下の手順を行います。

  1. Unity エディターで、Edit > Project Settings… (Windows) または Unity > Project Settings… (OSX) を選択します。
  2. 左メニューから Editor を選択します。
  3. Cache Server セクションで、ModeEnabled に設定します。
  4. IP address に、設定ウィザードで設定した Accelerator の IP アドレスを記入します。
  5. Check Connection ボタンを押して、接続をテストします。
Project Settings
Project Settings

他のプロジェクトと分離したい場合は、オプションでデフォルトとは異なる名前空間プレフィックスを選択することができます。また、必要に応じてアップロードやダウンロードを個別に利用不可にすることもできます。例えば、ビルドシステムではアップロードのみを可能にし、開発者用のエディターではダウンロードのみを可能にすることができます。なお、TLS/SSL オプションは、2020.1 以降のエディターバージョンにのみ搭載されており、Accelerator にも TLS の設定が必要です。

エディターのメインビューでは、右下のステータスバーを見ることで、Accelerator の接続状態を確認することができます (2020.1 以降のエディターバージョンのみ)。

プロジェクトの接続性
プロジェクトの接続性

必要に応じて、グローバル設定を通して使用するように Accelerator を設定できます。グローバル設定は、 Project Settings によってオーバーライドされない限り、すべてのプロジェクトでデフォルトで使用されます。グローバル設定を行うには、Edit > Preferences… メニュー項目を選択します。

Project 接続性
Project 接続性

Docker Hub による Accelerator のインストール

コンテナは Docker Hub(https://hub.docker.com/repository/docker/unitytechnologies/accelerator) で提供されています。

最初の設定

Unityでは、Accelerator の設定やキャッシュを保持するために、永続的なストレージを使用することを推奨しています。初めてこの設定を行うには、コンテナを最初に実行する際に、以下の変数を 1 つ以上使用する必要があります (以下に例を示します)。これらの変数は、スタートアップが設定 (configuration) ファイルを見つけられなかった場合にのみ使用されるので、連続して実行する際にに設定したまま実行しても問題ありません。

変数 使用方法
COLLAB_REGISTRATION_TOKEN Unity Collaborate を加速します。
DISABLE_USAGE_STATS 使用状況の統計情報を無効にするには、true を設定します。使用状況の統計情報を有効にしておくと、Unity に貴重なフィードバックを与え、Accelerator の機能やパフォーマンスを向上させることができます。
USER ローカルのビルトインダッシュボードのユーザー名。
PASSWORD ローカルのビルトインダッシュボードのパスワード。
CERT_HOSTNAME TLS サポートに使用するホスト名。これはリダイレクトなどに使用され、後述の CERT_PEM と KEY_PEM に対応します。
CERT_PEM TLS サポートに使用する cert.pem へのパス。CERT_HOSTNAME を設定し、CERT_PEM を設定しない場合は、<persist_dir>/cert.pem が想定されます。
KEY_PEM TLS サポートに使用する key.pem へのパス。CERT_HOSTNAME を設定し、KEY_PEM を設定しない場合は、 <persist_dir>/key.pem が想定されます。

例えば、Collaborate サービスを起動して登録するには、以下に類似のコマンドを実行します。

$ docker run --rm -ti -v "${PWD}/agent:/agent" -e 'COLLAB_REGISTRATION_TOKEN=ft0bJvbRD' unitytechnologies/accelerator:latest

TLS の設定をオーバーライドするには、上記の例に引き続き、/agent のパスに cert.pem と key.pem が指定されていることを確認した上で、以下のように CERT_HOSTNAME を加えます。

$ docker run --rm -ti -v "${PWD}/agent:/agent" -e 'CERT_HOSTNAME=myhostname.com' -e 'COLLAB_REGISTRATION_TOKEN=ft0bJvbRD' unitytechnologies/accelerator:latest

後続の実行

また、Accelerator が通常認識する環境変数を設定することもできます。unity-accelerator --all-help を参照し、Default: $SOME_VARIABLE を示すオプションを探してください。自身で設定しなくてもコンテナが設定するものが 2 つあります。

変数 使い方
UNITY_ACCELERATOR_PERSIST コンテナのデフォルトは /agent です。このディレクトリには、unity-accelerator.cfg やその他の永続的なデータ (cachedir が異なる場合があります) が格納されます。
UNITY_ACCELERATOR_LOG_STDOUT コンテナのデフォルトは true です。これが true の場合、stdout (標準出力) のみにログを出力します。実際のログファイルを persist ディレクトリ内に書きたい場合は、false を指定します。

コンテナの実行

docker イメージに署名しているので、Docker Content Trust を有効にすること を強く推奨します。

$ export DOCKER_CONTENT_TRUST=1

通常は、以下のようにして Accelerator を実行できます。

$ docker run -p 80:80 -p 443:443 -p 10080:10080 -v "${PWD}/agent:/agent" unitytechnologies/accelerator:latest

ただし、Accelerator が環境設定やキャッシュされたアーティファクトを保存する場所を別の場所にしたい場合は、以下のように環境変数設定値を追加することができます。

$ docker run -p 80:80 -p 443:443 -p 10080:10080 -v "${PWD}/agent:/mnt/another_spot" -e "UNITY_ACCELERATOR_PERSIST=/mnt/another_spot" -e "UNITY_ACCELERATOR_DEBUG=true" unitytechnologies/accelerator:latest

ローカルダッシュボードのユーザー名とパスワードを設定するには、環境変数 USER と PASSWORD を使用します。

$ docker run -p 80:80 --env PASSWORD=[PASSWORD] --env USER=[USERNAME] unitytechnologies/accelerator:latest

公開されたポート

Unity Accelerator が使用するポートのデフォルト値は、80、443、10080、1043 です。

Accelerator を Unity Teams Advanced と一緒に使う

Accelerator は、Unity Teams Advanced と一緒に使うと、さらに効果を発揮します。

通常の Collaborate ワークフローでは、ユーザーは Cloud からアップロードとダウンロードを行います。高速化された Collaborate ワークフローでは、アップロードは Cloud と Accelerator に保存されますが、ユーザーは Accelerator から直接ダウンロードします。
通常の Collaborate ワークフローでは、ユーザーは Cloud からアップロードとダウンロードを行います。高速化された Collaborate ワークフローでは、アップロードは Cloud と Accelerator に保存されますが、ユーザーは Accelerator から直接ダウンロードします。

設定

Unity Teams Advanced を使用する場合、組織の所有者または管理者のいずれかが、開発者ダッシュボード から以下の手順で Accelerator を作成できます。

  1. ダッシュボードの Develop タブから、Accelerator を作成したいプロジェクトを選択します。
  2. Project ビューで、左のナビゲーションバーから Collaborate > Accelerator を選択します。
  3. New Accelerator ボタンをクリックします。
  4. New Accelerator プロンプトで、Unity が Accelerator エージェントを識別するために使用する Agent name を入力します。また、任意で Port number を指定することもできます。New Accelerator window
    ノート: 現在、1 つの組織に対して 3 つの Accelerator までと制限されています。

  5. Save をクリックして、設定を確認します。
  6. 次の画面で、Registration Token をコピーし、右上の Download Accelerator ボタンをクリックして、該当するオペレーティングシステムを選択します。

    開発者ダッシュボードから Accelerator をダウンロードします。
    また、Docker Hub を通してAccelerator をインストールすることもできます。
  7. ダウンロードしたインストーラーを起動し、インストールウィザードに従ってください。コピーした registration token を使って、Accelerator を Unity Collaborate に登録します。これにより、Accelerator を使用して Collaborate のパフォーマンスを強化することができます。

ノート: Accelerator を Linux システムにインストールする場合は、Accelerator バージョンの確認 を参照してください。

ソースアセットの安全性

Unity Teams Advanced と併用すると、各 Accelerator には、組織へのアクセス許可を証明する独自のセキュリティ証明書が発行されます。Accelerator がコンテンツをアップロードまたはダウンロードする前に、リクエストを出した Unity エディターは SSL/TLS を使って Accelerator に安全に接続し、その信憑性を検証します。Unity エディターが Accelerator を発見して接続する際、通常の Unity ユーザートークンを渡す代わりに、Unity エディターから特別なトークンを受け取ります。Unity Identity サービスから特別なトークンを受け取ります。これらのトークンは、ユーザーの ID と組織内の単一プロジェクトへのアクセスを検証します。それにより、Accelerator 使用中の他の組織やプロジェクトへのアクセスを保護します。

また、Unity エディターの起動時に、コマンドライン引数 を使って、Accelerator Cache Server の設定情報を提供することもできます。

Accelerator Cache Server の使用を指定するには、-EnableCacheServer 引数を使用します。アドレスとポート番号を指定するには、-cacheServerEndpoint Address:Port を使用し、アドレスとポートをキャッシュサーバーの詳細に置き換えます。

ノート: Accelerator Cache Server では、プロジェクトが Asset Database V2 (ADB2) を使用する必要があります。コマンドラインから Unity を起動する際に、-adb2 を使って ADB2へのアップグレードを強制することができます。

詳細は、コマンドライン引数 を参照してください。

Accelerator の監視

ローカル管理者ダッシュボード

Accelerator には、、迅速な確認や設定変更を行うためのビルトインのダッシュボードがあります。

Accelerator の設定
Accelerator の設定

ダッシュボードの URL を確認する方法については、コマンドラインツール のセクションを参照してください。ただし、Accelerator の IP とポートがわかる場合は、http://ip:port/dashboard を使用するだけで、Accelerator が必要なリダイレクトをすべて処理します。指標を完全に確認するには、、Accelerator 指標に直接アクセス を参照してください。また、Accelerator の完全な設定は、unity-accelerator.cfg ファイルで行うことができます。

開発者ダッシュボード (Unity Teams Advanced ユーザーのみ)

Unity Teams Advanced のユーザーの場合、開発者ダッシュボード から Accelerator の指標を確認することができます。これらの指標は、ソースアセットにのみ適用され、生成された (インポートされた) アセットには適用されません。

プロジェクトの Accelerator の概要を表示するには、そのプロジェクトを選択し、左のナビゲーションバーから Collaborate > Accelerators を選択します。このメニューでは、以下の情報を見ることができます。

プロパティ 説明
Name Accelerator を作成したときに指定した名前。
Avg. Efficiency 過去 24 時間の Accelerator の平均 効率
Editors Accelerator に接続されている Unity エディターの数。
Latest Activity 直近の Accelerator の使用状況。
Status

Accelerator は以下のいずれかの状態です。- Available は、Accelerator がインストールされていないか、Collaborate サービスに登録されていないことを示します。
- Ready は、Accelerator が Collaborate サービスに登録されているが、Unity エディターがそれに接続されていないことを示します。
- In use は、Unity エディターが Accelerator に接続されているか、最近接続されたことを示します。
- Idle は、Unity エディターが以前に Accelerator を使用したことがあるが、最近のアクティビティがないことを示しています。
- Not Listening は、Accelerator が設定されたポートに接続できなかったことを示します (他のサービスがすでに使用していることが原因の可能性が高い)。
- Disconnected は、Accelerator が、使用状況の報告や設定変更の受信のためにサービスに接続されなくなったことを示します。
Enabled Unity エディターが Accelerator を検出して使用しようとするかどうかを示します。Unity エディターは、Accelerator が起動しているかどうかに関わらず、無効な Accelerator を使用しません。

Details をクリックすると、Accelerator の使用状況に関する以下の詳細情報が表示されます。このデータは 10 分ごとに更新されます。

Efficiency

これは、過去 24 時間の Accelerator の平均パフォーマンスを示しています。値の範囲は 0 - 100で、Collaborate サービスからの遠隔操作ではなく、Accelerator からローカルに提供されたコンテンツダウンロードの割合を測定します。値が 0 の場合、Accelerator がコンテンツのダウンロードを積極的に支援していないことを示します。100 の値は、Accelerator がすべてのコンテンツダウンロードを提供していることを示します。

Bytes Removed

定期的に、Accelerator は新しいアセットを保存するためのスペースを消去します。その際、ダッシュボードには、Accelerator がローカルストレージから削除した古いアセットに割り当てられていたバイト数が表示されます。

ノート: これは、Accelerator の健全性を保つための正常な動作です。ただし、この値がAccelerator の効率に悪影響を与えているようであれば、チームの使用量に合わせてストレージの容量を増やす必要があるかもしれません。Accelerator のファイルシステムには、アクティブなプロジェクトの最新バージョンのファイルをすべて格納できるだけの空き容量があるソリッドステートハードドライブを使用するのが理想的ですが、これは必須条件ではありません。十分な空き容量がない場合は、Accelerator の全体的な効率が低下します。

Bytes Delivered

分散したチームには、Accelerator を使用するローカルのコントリビューターと、Collaborate サービスを使用するリモートのコントリビューターがいる場合があります。このような場合、Accelerator はリモートの公開のイベントをリッスンし、ローカルネットワーク上のユーザーのために、影響を受けるコンテンツを積極的にダウンロードします。

Accelerator を使用する場合、Accelerator は、ローカルネットワークから配信されたバイト数ではなく、リモートの Collaborate サービスに要求してダウンロードした全体のバイト数を報告します。ローカルに配信されたバイト数が多いほど、ネットワークゲートウェイへの負荷が少なくなるため、チームにとっては好ましいと言えます。

Time Saved

Accelerator は、Collaborate サービスからアセットをダウンロードする代わりに、ローカルに保存されたアセットを配信する際の帯域幅を追跡し、Unity エディターがリモートでアセットをダウンロードするのに要した時間の差を、節約された時間として報告します。

ノート: 前述の指標は、ソースアセットにのみ適用されます。生成された (インポートされた) アセットには適用されません。

Accelerator の指標に直接アクセスする

Unity Teams Advanced を使用しない場合、各 Accelerator は Prometheus metric reports/metrics としてホストしており、ローカルネットワークからそれを照会することができます。以下は、アクセス可能な指標の全リストです。

指標 説明
process_resident_memory_bytes Accelerator が使用するメモリの量です。
uta_agent_sys_cpu_percent システムが使用する CPU の量です。
uta_agent_sys_mem_bytes_used システムによって使用されるメモリ量です。
uta_agent_protobuf_connects Unity エディターがアセットインポートパイプラインのサービスに接続した回数。
uta_agent_protobuf_bytes_in アセットインポートパイプラインから受信したバイト数。
uta_agent_protobuf_bytes_out アセットインポートパイプラインに送信されたバイト数。
uta_agent_protobuf_requests{code="0",method="get"} アセットインポートパイプラインに送られたアイテムの数。
uta_agent_protobuf_requests{code="1",method="get"} アセットインポートパイプラインに送られたアイテムから発生したエラーの数。
uta_agent_protobuf_requests{code="2",method="get"} アセットインポートパイプラインに送られたアイテムから発生した名前空間エラーの数。
uta_agent_protobuf_requests{code="3",method="get"} キャッシュされていないアイテムに対してアセットインポートパイプラインから行われたリクエストの数。
uta_agent_protobuf_requests{code="0",method="put"} アセットインポートパイプラインから受け取ったアイテムの数。
uta_agent_protobuf_requests{code="1",method="put"} アセットインポートパイプラインから受け取ったアイテムから発生したエラー数。
uta_agent_protobuf_requests{code="2",method="put"} アセットインポートパイプラインから受信したアイテムに発生した名前空間エラー数。
uta_agent_protobuf_requests{code="0",method="delete"} アセットインポートパイプラインからのアイテム削除のリクエスト数。
uta_agent_protobuf_requests{code="1",method="delete"} アセットインポートパイプラインがアイテムを削除する際に発生したエラー数。
uta_agent_protobuf_requests{code="2",method="delete"} アセットインポートパイプラインによるアイテム削除リクエストから発生した名前空間エラーの数。
uta_agent_protobuf_requests{code="3",method="delete"} キャッシュされていないアイテムのアセットインポートパイプラインから送信されたアイテムを削除するリクエスト数。
uta_agent_cache_bytes_evicted_unscheduled “予定外” のパスでキャッシュからエビクション (立ち退き) されたバイト数。予定外のエビクションは、リクエストの処理中にディスクスペースが足りなくなった場合に発生します。通常、スケジュールされたバックグラウンドでのエビクションは、需要に間に合います。そのため、このマトリクスの値が増加すると、サーバーに負荷がかかっていることになります。設定の CacheMinFreeBytes や CacheMinFreePercent を増やすことで、より多くの空きスペースバッファを確保できる可能性があります。または、基礎となるハードウェアをアップグレードしたり、追加のAccelerator をインストールしたりする必要があるかもしれません。
uta_agent_cache_files_evicted_unscheduled 上記の uta_agent_cache_bytes_evicted_unscheduled 指標に似ていますが、バイト数ではなく、エビクションしたファイルを数えます。これはアラートを出すのに簡単な指標になります。例えば、ファイルの指標が 1 秒あたり 1 を超えて増加した場合にアラートを出します。
uta_agent_protobuf_cache_hits キャッシュから提供されたアセットインポートパイプラインリクエストの数。
uta_agent_protobuf_cache_misses キャッシュから提供できなかったアセットインポートパイプラインリクエストの数。
uta_agent_protobuf_cache_bytes_out キャッシュからアセットインポートパイプラインに提供されたバイト数。
uta_agent_protobuf_cache_bytes_in アセットインポートパイプラインから受け取ったキャッシュに格納されたバイト数。

Unity エディターログのデバッグ

Unity エディターのログ は、デバッグ情報を見るのに便利です。Collaborate イベントのログを表示するには、環境変数を enableCollabEventLogs=true に設定して、Unity エディター (またはUnity Hub) を動作させます。[collab-accelerator] とマークされたログは、Accelerator のパフォーマンスを把握するのに役立ちます。

以下のブロックは、Asset Import Pipeline v2 を使用した Accelerator のログ出力例を示しています。これは Collaborate 用ではないため、enableCollabEventLogs=true を必要としません。

2019-10-07T11:34:51-0700 Using Asset Import Pipeline V2.
  ...
  2019-08-08T09:04:03-0700 Start importing Assets/Scenes/tame-the-unicorn.png guid(07a0d449dcaef4d2ba104e9d9b350de6)
  2019-08-08T09:04:05-0700 Done importing asset: 'Assets/Scenes/tame-the-unicorn.png' (target hash: 'd5fddd470dd9beedcd7261b6455e436a') in 1.082988 seconds
  2019-08-08T09:04:05-0700 RemoteAssetCache::AddArtifactToCacheServer - artifactKey='Guid(07a0d449dcaef4d2ba104e9d9b350de6) Importer(-1,)' Target hash='d5fddd470dd9beedcd7261b6455e436a'

Querying for cacheable assets in Cache Server:
    86ac778e1a44c9143864797ddacf8cc9:Assets/New Material.mat
RemoteAssetCache - Download - Metadata - success:true, namespace:81e94844d19a16919208533e08183531, key:8d71d5006046bb9d5e4a7172eec3f3b2
RemoteAssetCache - Download - Artifact - success:true, namespace:78b2fdc254b0a4f8a4693a81bb96598a, key:de1eef03efd25a722d1500658bf19038 for asset:'Assets/New Material.mat', time elapsed: 0.005171 seconds
RemoteAssetCache - Download - Artifact - success:true, namespace:78b2fdc254b0a4f8a4693a81bb96598a, key:b19c9d64967a9691abecdb66364ae392 for extension:'Assets/New Material.mat.info', time elapsed: 0.004721 seconds

Accelerator サービスの停止と再起動

Accelerator は、各プラットフォームのバックグラウンド処理として動作します。

Windows

Services Panel を開くには、“設定” メニューで “Services” を検索するか、Run ダイアログ (WIN + R) で “services.msc” を実行します。次に、結果のリストの中から “Unity Accelerator” サービスを探します。左側のパネルに Stop the service または Restart the service というオプションが表示されます。

Mac OS X

ターミナルから launchctl コマンドを実行して、LaunchControl ユーティリティから “com.unity.accelerator” サービスを制御することができます。詳細については、https://www.launchd.info/ を参照してください。

Linux

“unity-accelerator” サービスの制御には、 service コンソールユーティリティを使用します。詳細は、http://manpages.ubuntu.com/manpages/bionic/man8/service.8.html 参照してください。

メンテナンス

Accelerator サービスは、メンテナンス期間中に自動的に更新されます。メンテナンス期間は、Accelerator が動作しているマシンの現地時間午前 1 時 - 2 時に設定されています。これは、Accelerator により新しいバージョンが可能な場合にのみ行われます。

Accelerator のインストールとアンインストールのログは、OS の標準の temp ディレクトリに unity-accelerator-*install.log として保存されます。Accelerator のログは unity-accelerator.log としてストレージディレクトリに保存されます。

コマンドラインツール

Accelerator には、トラブルシュート、設定、および 1 つまたは複数の Accelerator を一般的に使用するために使用できる、多数のコマンドラインツールがあります。使いやすくするために、unity-accelerator の実行ファイルの場所を PATH に追加することを推奨します。実行ファイルは、インストーラーの実行時に選択したパス (例えば C:\Program Files\Unity\accelerator など) にインストールされます。

CLI ツールには充実したヘルプシステムが用意されています。すぐに使い始めるには、unity-accelerator を引数なしで実行します。

$ unity-accelerator
Unity Accelerator v1.0.524+g96c5e18

Run on a local network to speed up transactions with Unity Services.

.....

また、unity-accelerator --all-help を実行すると、すべてのコマンドのヘルプテキストを一度に出力することができます。出力を less を通して pipe するか、出力をテキストファイルにリダイレクトして出力するのが良いでしょう。

特定の Accelerator を再設定するなどの特定の作業をする場合は、作業ディレクトリを unity-accelerator.cfg ファイルがある場所と同じディレクトリに変更するのが最善です。 UNITY_ACCELERATOR_PERSIST 環境変数をそのディレクトリに設定したり、 --persist<dir> オプションを常に使用することを忘れないようにすることもできます。しかし、大抵、作業ディレクトリの変更が最も簡単な方法です。

よく使われているのが、ダッシュボードツールです。

$ unity-accelerator dashboard password newaccount
Password: ****
   Again: ****
$ unity-accelerator dashboard list
admin
newaccount
$ unity-accelerator dashboard url
http://172.18.37.249:8080/dashboard/

最後の dashboard url は、ビルトインダッシュボードにアクセスするためにブラウザーに入力する URL を調べるのに便利です。

複数の Accelerator をミラーリング

必要に応じて、同じキャッシュデータをミラーリングするように複数の Accelerator を設定することができます。高可用性のために、同じネットワーク上でミラーリングされた 2 つの Accelerator を動作させることもできます。一方の Accelerator がクラッシュしたり、ハードウェア障害が発生したり、何らかの理由でメンテナンスが必要になった場合に、もう一方の Accelerator がそれを補うことができます。例えば、メインオフィスのデータをブランチオフィスにミラーリングし、ブランチオフィスでもキャッシュデータのコピーを使用できるようにするなどです。

今のところ、ミラーリング機能は、“プッシュ” や “フォワード” とも呼ばれる、データを発信する機能のみを提供しています。複数の Accelerator にプッシュ/フォワードすることができ、さらにそれらを連鎖させることもできます。例えば、A から B へ送信、B から C へ送信、そして C から A に送り返すこともできます。チェーンがサークル状になることを心配する必要はありません。アイテムにはタイムスタンプが押されているので、受信側の Accelerator は、すでに持っているアイテムよりも古いアイテムが入ってきても無視します。

ここでは、アクセラレーター A が ip:portが1.1.1.1:1111 で、アクセラレーター B が 2.2.2.2:2222 の場合を例に説明します。どちらも最初はデータがないとします。そこで、A にアイテムを入れます。B にはアイテムがありません。

$ echo test1 | unity-accelerator cache put 1.1.1.1:1111 namespace1 key1
$ unity-accelerator cache get 1.1.1.1:1111 namespace1 key1
test1
$ unity-accelerator cache get 2.2.2.2:2222 namespace1 key1
key not found

では、A が B に転送するように設定しましょう。A の設定を変更します。アクセラレーター A が動作しているマシンにログインし、アクセラレーターをシャットダウンします。

# Shutdown Accelerator A
$ cd <directory where unity-accelerator.cfg is>
$ unity-accelerator config set ProtobufForwardPuts protobuf:2.2.2.2:2222
# Start Accelerator A back up

これで、A のキャッシュに別のアイテムを入力でき、B に転送されたのを確認できます。

$ echo test2 | unity-accelerator cache put 1.1.1.1:1111 namespace2 key2
$ unity-accelerator cache get 1.1.1.1:1111 namespace2 key2
test2
$ unity-accelerator cache get 2.2.2.2:2222 namespace2 key2
key not found
# It will take up to a minute before the forwarding occurs, due to how the algorithm works with batching, etc. But within a minute or two you should see...
$ unity-accelerator cache get 2.2.2.2:2222 namespace2 key2
test2

ただし、これは新しいデータのみを対象としており (アクセラレーター A に入れられた新しいアイテムは、アクセラレーター B に転送されます)、既存のデータは対象としていません。この例では、最初のアイテムはまだアクセラレーター B にありません。

$ unity-accelerator cache get 2.2.2.2:2222 namespace1 key1
key not found

このような場合や、すべてのデータを 1 度だけ転送したい場合 (Accelerator を新しい Accelerator に切り替えるときなどに便利) には、“push” コマンドラインツールを使用できます。

$ unity-accelerator cache push 1.1.1.1:1111 2.2.2.2:2222
{"msg":"push completed", "destination":"2.2.2.2:2222", "namespaces":2, "keys":2, "bytes":12, "supercededs":1, "errors":0, "elapsed":"44.054078ms"}
$ unity-accelerator cache get 2.2.2.2:2222 namespace1 key1
test1

プッシュツールは、第 1 の Accelerator にリクエストを送信し、すべてのデータを第 2 の Accelerator に送信するように依頼します。それが完了すると、第 1 Accelerator は、何が行われたかの詳細を含む “プッシュ完了” の応答を送り返します。

unity-accelerator config help | less を実行し、Forward を検索するさらに高度な設定オプションがあります。転送の同時実行、キューのサイズ、エラー処理などを指定できます。

また、ミラーリングされた各 Accelerator の MaintenanceStart および MaintenanceDuration の設定値を変更して、すべての Accelerator がメンテナンスのために同時にシャットダウンしないようにすることもできます。

トラブルシュート

Accelerator をインストールしたにもかかわらず、一部の Unity エディターがそれを使用していない場合、いくつかの要因が考えられます。以下のトラブルシュートを参考にしてください。

使用しているUnity エディターのバージョンの確認

Accelerator を使用するには、各プロジェクトコントリビューターがエディターバージョン 2019.3 以上を使用している必要があります。

ユーザーが Accelerator のローカルネットワーク上にいることを確認

Accelerator が、問題が発生しているプロジェクトのコントリビューターと同じローカルエリアネットワーク上で動作していることを確認してください。Accelerator は、リモートで作業しているコントリビューターには影響しません。

Accelerator の接続をテスト

問題が発生しているマシンが Accelerator にアクセスできるかどうかを確認します。Unity Teams Advanced を使用している場合は、以下の手順でブラウザーから Accelerator のヘルスページにアクセスします。

  1. 開発ダッシュボード で、Collaborate > Accelerator を選択します。
  2. テストしたい Accelerator の Details** をクリックします。
  3. Accelerator の IP アドレスの横にある info アイコンをクリックすると、ヘルスページの URL が表示されます。

Unity Teams Advanced を使用していない場合は、以下の URL パスに Accelerator のホスト IP アドレスを入力すると、ヘルスページが表示されます。

[AcceleratorIP]:[AcceleratorPort]/api/agent-health

テストに失敗した場合は、すべてのホストとネットワークのファイアウォールが Accelerator のリッスン IP アドレスとポート (TCP) へのアクセスを許可していることを確認してください。このポートへのアクセスを許可するために、ネットワーク管理者に連絡する必要があるかもしれません。

Accelerator のプロジェクト設定の確認

Unity Teams Advanced を使用している場合は、該当するプロジェクトに Accelerator が設定されていることを確認します。開発者ダッシュボード でプロジェクトに移動し、左のナビゲーションバーから Collaborate > Accelerator を選択します。そのプロジェクトの Accelerator が列挙されます。

Accelerator のバージョンを確認

Linux システムに Accelerator をインストールする場合、すべての Linux 実行ファイルには署名ファイルがあり、ダウンロードした Accelerator バージョンが悪意のある団体によって改ざんされていないことを確認することができます。署名ファイルは、GnuPG の信頼できるバージョンで検証することができます。以下のキーは、現在のリリースを署名しています。このキーを含む公開鍵ブロックは、https://collab-accelerator.cloud.unity3d.com/ で入手できます。

pub     rsa4096 2019-12-02
Key fingerprint = 9BC4 B04D F2E8 74E5 64AA 47E7 6D44 3B8B 002C F61F
uid       Unity Technologies ApS (Accelerator signing key) <sst-ops@unity3d.com>

GPG ストアにキーをダウンロードするには、以下のいずれかのコマンドを使用します。

$ gpg --keyserver https://collab-accelerator.cloud.unity3d.com/ --search-key "sst-ops@unity3d.com"

$ gpg --keyserver https://collab-accelerator.cloud.unity3d.com/ --recv-key 9BC4B04DF2E874E564AA47E76D443B8B002CF62F

インストールした Accelerator のバージョンがオリジナルで、変更されていないことを確認するには、ファイルの署名を確認します。

Accelerator のインストールファイルには、https://storage.googleapis.com/unity-accelerator-prd/unity-accelerator-installer.sig で入手できる署名ファイルが付属しています。この署名ファイルを使って、Accelerator のインストーラーを確認してください。

$ gpg --verify unity-accelerator-installer.sig unity-accelerator-linux-x64-installer.run

キーを信頼する前に、フィンガープリントを “偽造されたキーまたは信頼されていないキー” に表示されているものと比較します。 キーを信頼すると、次のように表示されます。

gpg: Signature made Thu Jan 16 12:29:14 2020 PST
gpg:                using RSA key 9BC4B04DF2E874E564AA47E76D443B8B002CF61F
gpg: Good signature from "Unity Technologies ApS (Accelerator signing key) <sst-ops@unity3d.com>" [ultimate]

これは、署名が有効であり、このキーを信頼したことを意味します。

不適切なキー

正しい配布キーを持っていない場合、上記コマンドの出力は以下のようになります。

gpg: Signature made Thu Jan 16 12:29:14 2020 PST
gpg:                using RSA key 9BC4B04DF2E874E564AA47E76D443B8B002CF61F
gpg: Can't check signature: No public key

この場合、前述の手順でキーを取得する必要があります。

偽造されたキーや信頼できないキー

有効な署名付きのキーのコピーを持っていても、そのキーが信頼済みとマークされていなかったり、キーが偽造されていたりすると、出力は以下のようになります。

gpg: Signature made Thu Jan 16 12:29:14 2020 PST
gpg:                using RSA key 9BC4B04DF2E874E564AA47E76D443B8B002CF61F
gpg: Good signature from "Unity Technologies ApS (Accelerator signing key) <sst-ops@unity3d.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 9BC4 B04D F2E8 74E5 64AA  47E7 6D44 3B8B 002C F61F

キーが偽造されている場合は、署名ファイルを使ってフィンガープリントを確認する必要があります。 キーが信頼済みとしてマークされていない場合は、キーを編集して信頼済みとしてマークします。詳細については、https://www.gnupg.org/gph/en/manual/x334.html を参照してください。

サポート

Unity Teams での Accelerator の使用に関するヘルプは、電子メールサポート または、開発者ダッシュボード からヘルプチケットを提出してください。Unity Teams Advanced プロジェクトのチケットを提出するには、プロジェクトを選択し、左のナビゲーションバーから Collaborate > Support を選択します。

アセットインポートパイプラインを使用した Accelerator に関するお問い合わせは、Accelerator forums を参照してください。

プロジェクトを別のバージョン管理システムに移行する
Collaborate のトラブルシューティングのヒント