Muhtemelen her Bazel kullanıcısı şundan yavaş veya daha yavaş derlemeler oluşturmuştur: bağlı olduğu söylenebilir. Tek tek yapıların performansını iyileştirmek özel bir değer sunar. aşağıdaki gibi önemli etkiye sahip hedefler için:
Sık sık tekrarlanan ve (yeniden) oluşturulan temel geliştirici hedefleri.
Başka hedeflerin büyük ölçüde bağımlı olduğu ortak kitaplıklar.
Bir hedef sınıfından temsili bir hedef (ör. özel kurallar), bir derlemedeki sorunların teşhis edilmesi ve düzeltilmesi, gerekiyor.
Derlemelerin performansını iyileştirmenin önemli adımlarından biri de nasıl harcanacağını belirler. Bu sayfada, toplayabileceğiniz farklı metrikler listelenmektedir. Derleme performansının dökümünü alma vitrinleri derleme performansı sorunlarını tespit edip düzeltmek için bu metrikleri nasıl kullanabileceğinizi açıklayacağız.
Bazel derlemelerinizden metrikleri ayıklamanın birkaç temel yöntemi vardır. Örneğin:
Derleme Etkinliği Protokolü (BEP)
Bazel, çeşitli protokol arabellekleri üretir
build_event_stream.proto
Oluşturma Etkinliği Protokolü (BEP) üzerinden
sizin belirttiğiniz bir arka uç tarafından toplanabilir. Kullanım alanlarınıza bağlı olarak
Metrikleri çeşitli şekillerde toplamaya karar verebilirsiniz, ancak burada
bazı kavramlar ve proto alanları gibi değerlendirilebilir.
Bazel'in sorgusu / cquery / sorgu komutları
Bazel 3 farklı sorgu modu (sorgu, cquery ve aquery) içeren hedef grafiği, yapılandırılmış hedef grafiği ve işlem grafiğini sorgulamak için tıklayın. Sorgu dili, işlev paketi özellikleri de kullanabilirsiniz.
JSON İzleme Profilleri
Bazel, derleme benzeri her Bazel çağrısı için JSON biçiminde bir iz profili yazar biçimindedir. JSON izleme profili süreç boyunca Bazel'in neye zaman harcadığını ve çağrılacaktır.
Yürütme Günlüğü
Yürütme günlüğü, sorunları gidermenize ve sorunları gidermenize yardımcı olabilir
makine ve ortam farklılıklarından dolayı uzak önbellek isabetlerine
(deterministik olmayan eylemler) Bayrağı geçerseniz
--experimental_execution_log_spawn_metrics
(Bazel 5.2'den itibaren mevcuttur), hem
yerel olarak ve uzaktan gerçekleştirilen işlemlerdir. Bu metrikleri örneğin, şunları yapmak için kullanabilirsiniz:
veya uzaktaki makinenin performansı arasında karşılaştırmalar yapmak ya da
ortaya çıkan yürütmenin hangi bölümü sürekli olarak beklenenden daha yavaştır (
nedeniyle kuyruğa girmeyin).
Yürütme Grafiği Günlüğü
JSON izleme profili, kritik yol bilgilerini içerse de
yürütülen işlemlerin bağımlılık grafiği hakkında ek bilgiye ihtiyacınız var.
Bazel 6.0 sürümünden itibaren,
--experimental_execution_graph_log
ve
hakkında bir günlük yazmak için --experimental_execution_graph_log_dep_type=all
ve bunların birbirine
bağımlılıklarını konuşacağız.
Bu bilgiler, bir düğüm tarafından eklenen sürüklemenin anlaşılması için ifade eder. Sürükleme, potansiyel olarak kaydedilebilecek süredir belirli bir düğümü yürütme grafiğinden kaldırarak değiştirebilirsiniz.
Veriler, derleme ve işlem grafiğindeki değişikliklerin etkisini tahmin etmenize yardımcı olur yardımcı olmanız gerekir.
Bazel-bench ile karşılaştırma
Bazel bank bir geliştirme performansını karşılaştırmak için Git projelerinde bir şu durumlardan biridir:
Proje karşılaştırması: İki Git'in aynı anda birbiriyle karşılaştırılması tek Bazel sürümü olabilir. Derlemenizdeki regresyonları algılamak için kullanılır (genellikle (bağımlılıkların eklenmesi).
Bazel karşılaştırması: Bazel'in iki sürümünü şurada birbiriyle karşılaştırdık: tek bir Git kaydıdır. Bazel'in kendi içindeki regresyonları tespit etmek için kullanılır ( (Bazel'i korumak / çatallamak) için de kullanılır.
Karşılaştırmalar; duvar süresini, CPU süresini, sistem saatini ve Bazel’in yığın boyutu kullanın.
Ayrıca kullanıcıya özel fiziksel makinelerde Bazel diğer süreçleri yürüterek değişkenlik kaynaklarını azaltmak.