このページでは、ローカル実行のコンテキストでキャッシュミスを調査する方法について説明します。
このページでは、ローカルで正常にビルドされ、リモート キャッシュを利用するように設定されているビルドまたはテストがあり、リモート キャッシュが効果的に利用されていることを確認することを前提としています。
キャッシュ ヒット率を確認する方法と、2 つの Bazel 呼び出し間の実行 ログを比較する方法については、 リモート実行のキャッシュ ヒットのデバッグをご覧ください。 このガイドで説明されている内容は、ローカル実行でのリモート キャッシュにも適用されます。ただし、ローカル実行にはいくつかの追加の課題があります。
キャッシュ ヒット率を確認する
リモート実行でのキャッシュ ヒット率と同様に、リモート キャッシュ ヒットが成功するとステータス行に表示されます。
Bazel の実行の標準出力には、次のようなものが表示されます。
INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.
これは、試行された 7 つのアクションのうち、3 つがリモート キャッシュ ヒットを取得し、4 つのアクションがキャッシュ ヒットを取得せず、linux-sandbox
戦略を使用してローカルで実行されたことを意味します。この概要には、ローカル キャッシュ ヒットは含まれません。プロセスが 0
個(または想定よりも少ない数)の場合は、bazel clean の後にビルド/テストコマンドを実行します。
キャッシュ ヒットのトラブルシューティング
想定どおりのキャッシュ ヒット率が得られない場合は、次の操作を行います。
リモート エンドポイントとの通信が成功していることを確認する
ビルドがリモート キャッシュと正常に通信していることを確認するには、このセクションの手順に沿って操作します。
出力に警告がないか確認する
リモート実行では、リモート エンドポイントとの通信に失敗すると、ビルドが失敗します。一方、キャッシュ可能なローカルビルドは、キャッシュできない場合でも失敗しません。Bazel 呼び出しの出力に、次のような警告がないか確認します。
WARNING: Error reading from the remote cache:または
WARNING: Error writing to the remote cache:このような警告の後に、接続の問題の詳細を示すエラー メッセージが表示されます。これは、エンドポイント名の入力ミスや認証情報の誤った設定など、デバッグに役立ちます。このようなエラーを見つけて対処します。表示されるエラー メッセージで十分な情報が得られない場合は、
--verbose_failuresを追加してみてください。リモート実行のキャッシュ ヒットのトラブルシューティングの手順に沿って、キャッシュ書き込み Bazel 呼び出しが同じマシンとマシン間でキャッシュ ヒットを取得できるようにします。
キャッシュ読み取り Bazel 呼び出しがキャッシュ ヒットを取得できることを確認します。
a. キャッシュ読み取り Bazel 呼び出しはコマンドラインの設定が異なるため、リモートキャッシュと通信できるように適切に設定されていることを確認してください。
--remote_cacheフラグが設定されていて 、出力に警告がないことを確認します。b. キャッシュ読み取り Bazel 呼び出しが、 キャッシュ書き込み Bazel 呼び出しと同じターゲットをビルドしていることを確認します。
c. マシン間でのキャッシュを有効にする場合と同じ手順で、キャッシュ書き込み Bazel 呼び出しから キャッシュ読み出し Bazel 呼び出しへのキャッシュを有効にします。