Halaman ini menjelaskan cara menyelidiki cache miss dalam konteks eksekusi lokal.
Halaman ini mengasumsikan bahwa Anda memiliki build dan/atau pengujian yang berhasil di-build secara lokal dan disiapkan untuk menggunakan caching jarak jauh, serta Anda ingin memastikan bahwa cache jarak jauh digunakan secara efektif.
Untuk mengetahui tips tentang cara memeriksa rasio cache hit dan cara membandingkan log eksekusi antara dua pemanggilan Bazel, lihat Men-debug Cache Hit Jarak Jauh untuk Eksekusi Jarak Jauh. Semua yang ditampilkan dalam panduan tersebut juga berlaku untuk caching jarak jauh dengan eksekusi lokal. Namun, eksekusi lokal menghadirkan beberapa tantangan tambahan.
Memeriksa rasio cache hit
Cache hit jarak jauh yang berhasil akan muncul di baris status, mirip dengan rasio Cache Hit dengan Eksekusi Jarak Jauh.
Di output standar Bazel run, Anda akan melihat sesuatu seperti berikut:
INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.
Artinya, dari 7 tindakan yang dicoba, 3 mendapatkan cache hit jarak jauh dan 4 tindakan tidak memiliki cache hit dan dieksekusi secara lokal menggunakan strategi linux-sandbox. Cache hit lokal tidak disertakan dalam ringkasan ini. Jika Anda mendapatkan 0 proses (atau angka yang lebih rendah dari yang diharapkan), jalankan bazel clean, lalu perintah build/pengujian Anda.
Memecahkan masalah cache hit
Jika Anda tidak mendapatkan rasio cache hit yang diharapkan, lakukan hal berikut:
Memastikan komunikasi berhasil dengan endpoint jarak jauh
Untuk memastikan build Anda berhasil berkomunikasi dengan cache jarak jauh, ikuti langkah-langkah di bagian ini.
Periksa output Anda untuk mengetahui peringatan
Dengan eksekusi jarak jauh, kegagalan untuk berkomunikasi dengan endpoint jarak jauh akan menyebabkan build Anda gagal. Di sisi lain, build lokal yang dapat di-cache tidak akan gagal jika tidak dapat di-cache. Periksa output pemanggilan Bazel Anda untuk mengetahui peringatan, seperti:
WARNING: Error reading from the remote cache:atau
WARNING: Error writing to the remote cache:Peringatan tersebut akan diikuti oleh pesan error yang menjelaskan masalah koneksi yang akan membantu Anda melakukan debug: misalnya, nama endpoint yang salah ketik atau kredensial yang salah ditetapkan. Temukan dan atasi error tersebut. Jika pesan error yang Anda lihat tidak memberi Anda informasi yang cukup, coba tambahkan
--verbose_failures.Ikuti langkah-langkah dari Memecahkan masalah cache hit untuk eksekusi jarak jauh guna memastikan bahwa pemanggilan Bazel yang menulis cache Anda dapat memperoleh cache hit di mesin yang sama dan di seluruh mesin.
Pastikan pemanggilan Bazel yang membaca cache Anda dapat memperoleh cache hit.
a. Karena pemanggilan Bazel yang membaca cache akan memiliki penyiapan command line yang berbeda, berhati-hatilah untuk memastikan bahwa pemanggilan tersebut disiapkan dengan benar untuk berkomunikasi dengan cache jarak jauh. Pastikan flag
--remote_cacheditetapkan dan tidak ada peringatan dalam output.b. Pastikan pemanggilan Bazel yang membaca cache Anda membuat target yang sama dengan pemanggilan Bazel yang menulis cache.
c. Ikuti langkah-langkah yang sama seperti untuk memastikan caching di seluruh mesin, guna memastikan caching dari pemanggilan Bazel yang menulis cache ke pemanggilan Bazel yang membaca cache.