Derleme performansı metriklerini çıkarma

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

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:

  1. Sık sık tekrarlanan ve (yeniden) oluşturulan temel geliştirici hedefleri.

  2. Başka hedeflerin büyük ölçüde bağımlı olduğu ortak kitaplıklar.

  3. 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.