Sistem Bazel diimplementasikan sebagai proses server yang tahan lama. Hal ini memungkinkan
melakukan banyak pengoptimalan yang tidak mungkin dilakukan dengan implementasi berorientasi batch,
seperti menyimpan cache file BUILD, grafik dependensi, dan metadata lainnya dari satu
build ke build berikutnya. Tindakan ini akan meningkatkan kecepatan build inkremental, dan memungkinkan
perintah yang berbeda, seperti build
dan query
untuk berbagi cache paket
yang dimuat yang sama, sehingga membuat kueri sangat cepat.
Saat menjalankan bazel
, Anda menjalankan klien. Klien akan mencari server
berdasarkan basis output, yang secara default ditentukan oleh jalur direktori
workspace dasar dan ID pengguna Anda. Jadi, jika Anda mem-build di beberapa ruang kerja,
Anda akan memiliki beberapa basis output dan beberapa proses server Bazel.
Beberapa pengguna di workstation yang sama dapat di-build secara bersamaan di ruang kerja yang sama karena basis output-nya akan berbeda (userid yang berbeda). Jika
klien tidak dapat menemukan instance server yang berjalan, instance baru akan dimulai. Proses
server akan berhenti setelah tidak aktif selama 3 jam, secara default, yang dapat
dimodifikasi menggunakan opsi memulai --max_idle_secs
).
Sebagian besar fakta bahwa ada server yang berjalan tidak terlihat oleh pengguna, tetapi terkadang membantu mempertimbangkan hal ini. Misalnya, jika Anda menjalankan skrip yang melakukan banyak build otomatis di berbagai direktori, penting untuk memastikan Anda tidak mengumpulkan banyak server yang tidak ada aktivitas; Anda dapat melakukannya dengan mematikannya secara eksplisit setelah selesai menggunakannya, 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 menyertakan direktori utama 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. (Perhatikan bahwa dengan opsi lain untuk ps
, proses server
Bazel hanya dapat diberi nama java
.) Server Bazel dapat dihentikan menggunakan
perintah shutdown.
Saat menjalankan bazel
, klien pertama-tama akan memeriksa apakah server adalah versi
yang sesuai; jika tidak, server dihentikan dan server baru dimulai. Hal ini memastikan bahwa
penggunaan proses server yang berjalan lama tidak mengganggu penetapan
versi yang tepat.