Bu sayfada, Bazel'in kullandığı belleğin nasıl sınırlandırılacağı ve azaltılacağı açıklanmaktadır.
Sınırlı RAM ile Bazel çalıştırma
Bazı durumlarda, Bazel'in minimum bellek kullanmasını isteyebilirsiniz. Bu ayarı,
başlangıç işareti aracılığıyla maksimum yığın
--host_jvm_args
--host_jvm_args=-Xmx2g
gibi.
Bellek için artımlı derleme hızlarını değiştirin
Derlemeleriniz çok büyükse Bazel aşağıdaki durumlarda OutOfMemoryError
(OOM) hatası verebilir
sahip olmadığı anlamına gelir. Daha az ödeyerek Bazel'ın daha az bellek kullanmasını sağlayabilirsiniz.
daha yavaş artımlı derlemelerinin sayısını artırır:
--discard_analysis_cache
--nokeep_state_after_build
,
ve
--notrack_incremental_state
.
Bu işaretler, Bazel'in derlemede kullandığı belleği en aza indirir. gelecekteki derlemelerin daha yavaş yapılmasını sağlar.
Ayrıca, bu işaretlerden herhangi birini tek tek de iletebilirsiniz:
--discard_analysis_cache
, yürütme sırasında kullanılan belleği azaltır ( analizi). Artımlı derlemelerde paket yüklemeyi yeniden yapması gerekmez analizi ve yürütmeyi yeniden yapmanız gerekir (ancak disk üzerindeki işlem önbelleği birçok yeniden yürütmeyi önler).--notrack_incremental_state
, Bazel'in dahili öğesindeki kenarları depolamaz ve artımlı derlemelerde kullanılamaz. Sonraki derleme bu verileri siler ancak dahili hata ayıklama için o zamana kadar korunur. (--nokeep_state_after_build
belirtilmediği sürece)--nokeep_state_after_build
, derleme işleminden sonra tüm verileri silecek. artımlı derlemelerin sıfırdan yapılması gerekir (disk üzerinde işlem önbellek). Tek başına bu, mevcut derlemenin yüksek su seviyesini etkilemez.
Skyfocus ile bellek için derleme esnekliğini takas edin (Deneysel)
Bazel'in daha az bellek kullanmasını ve artımlı derleme hızlarını korumasını istiyorsanız Bazel'a değiştirmek istediğiniz çalışan dosya grubunu söyleyebilir ve Bazel yalnızca bu dosyalarda da yer alır. Bu özelliğe Skyfocus adı verilir.
Skyfocus özelliğini kullanmak için --experimental_enable_skyfocus
işaretini iletin:
bazel build //pkg:target --experimental_enable_skyfocus
Varsayılan olarak, çalışma grubu, oluşturulan hedefin yanındaki dosya kümesidir.
geliştirmenizi sağlar. Örnekte, //pkg
alanındaki tüm dosyalar çalışma kümesinde tutulur ve
çalışma grubunun dışındaki dosyalarda yapılan değişikliklere izin verilmez. Bu işlem,
bazel clean
veya Bazel sunucusunu yeniden başlatın.
Bir dosya veya dizin grubunu tam olarak belirtmek istiyorsanız
--experimental_working_set
işaretini seçin. Örneğin:
bazel build //pkg:target --experimental_enable_skyfocus
--experimental_working_set=path/to/another/dir,path/to/tests/dir
Dilerseniz --experimental_skyfocus_dump_post_gc_stats
ayarını da iletebilirsiniz.
bellek azaltma miktarı:
Tüm bunları özetlersek şuna benzer bir sonuç görmeniz gerekir:
$ bazel test //pkg:target //tests/... --experimental_enable_skyfocus --experimental_working_set dir1,dir2,dir3/subdir --experimental_skyfocus_dump_post_gc_stats
INFO: --experimental_enable_skyfocus is enabled. Blaze will reclaim memory not needed to build the working set. Run 'blaze dump --skyframe=working_set' to show the working set, after this command.
WARNING: Changes outside of the working set will cause a build error.
INFO: Analyzed 149 targets (4533 packages loaded, 169438 targets configured).
INFO: Found 25 targets and 124 test targets...
INFO: Updated working set successfully.
INFO: Focusing on 334 roots, 3 leafs... (use --experimental_skyfocus_dump_keys to show them)
INFO: Heap: 1237MB -> 676MB (-45.31%)
INFO: Elapsed time: 192.670s ...
INFO: Build completed successfully, 62303 total actions
Bu örnekte, Skyfocus kullanımı, Bazel'in bellekten 561 MB (%45)
ve dir1
, dir2
ve altındaki dosyalarda yapılan değişiklikleri işlemek için artımlı derlemeler
dir3/subdir
yüksek hızını korurken Bazel'in bunu yapamayacağı da bir töz var
Değiştirilen dosyaları bu dizinlerin dışında yeniden oluşturma
Bellek Kullanımı Profilleme
Bazel, kuralınızın verilerini kontrol etmenize yardımcı olabilecek yerleşik bir bellek profil oluşturucusuyla birlikte gelir. bazı işaretler vardır. Bu süreç hakkında daha fazla bilgiye şuradan ulaşabilirsiniz: Bellek Profili Oluşturma özel kuralların performansını artırma ile ilgili dokümanlar.