Sistem Bazel diimplementasikan sebagai proses server yang berumur panjang. Hal ini memungkinkannya
melakukan banyak pengoptimalan yang tidak dapat dilakukan dengan implementasi berorientasi batch,
seperti penyimpanan dalam cache file BUILD, grafik dependensi, dan metadata lainnya dari satu
build ke build berikutnya. Hal ini meningkatkan kecepatan build inkremental, dan memungkinkan
perintah yang berbeda, seperti build
dan query
untuk berbagi cache
paket yang dimuat yang sama, sehingga kueri menjadi sangat cepat.
Saat menjalankan bazel
, Anda menjalankan klien. Klien menemukan server
berdasarkan basis output, yang secara default ditentukan oleh jalur direktori
workspace dasar dan userid Anda, sehingga jika Anda mem-build di beberapa ruang kerja,
Anda akan memiliki beberapa basis output dan dengan demikian beberapa proses server Bazel.
Beberapa pengguna di workstation yang sama dapat mem-build secara serentak di ruang kerja
yang sama karena basis output mereka akan berbeda (userid yang berbeda). Jika tidak dapat menemukan instance server yang sedang berjalan, klien akan memulai instance baru. Proses
server akan berhenti setelah periode tidak ada aktivitas (3 jam, secara default, yang dapat
diubah menggunakan opsi startup --max_idle_secs
).
Pada umumnya, fakta bahwa ada server yang berjalan tidak terlihat oleh pengguna, tetapi terkadang hal ini perlu diingat. Misalnya, jika Anda menjalankan skrip yang melakukan banyak build otomatis di direktori yang berbeda, Anda harus memastikan bahwa Anda tidak mengumpulkan banyak server yang tidak ada aktivitasnya; Anda dapat melakukannya dengan menonaktifkannya secara eksplisit setelah selesai, atau dengan menentukan periode waktu tunggu yang singkat.
Nama proses server Bazel muncul dalam output ps x
atau ps -e f
sebagai bazel(dirname)
, dengan dirname adalah nama dasar direktori
yang melingkupi root direktori ruang kerja Anda. Contoh:
ps -e f
16143 ? Sl 3:00 bazel(src-johndoe2) -server -Djava.library.path=...
Hal ini memudahkan untuk mengetahui proses server mana yang termasuk dalam ruang kerja
tertentu. (Perlu diperhatikan bahwa dengan opsi lain tertentu untuk ps
, proses server
Bazel mungkin hanya diberi nama java
.) Server Bazel dapat dihentikan menggunakan
perintah shutdown.
Saat menjalankan bazel
, klien akan memeriksa terlebih dahulu apakah server adalah versi
yang sesuai; jika tidak, server akan dihentikan dan server baru akan dimulai. Hal ini memastikan bahwa
penggunaan proses server yang berjalan lama tidak mengganggu pembuatan versi
yang tepat.