Perfetto

perfetto, Android Debug Bridge (ADB) aracılığıyla Android cihazlardan performans bilgilerini toplamanızı sağlayan bir araçtır. adb shell perfetto ... komutunu kullanarak perfetto aracını çağırın. perfetto, cihazınızdan performans izlemelerini toplamak için çeşitli kaynaklar kullanır. Örneğin:

  • Çekirdekten gelen bilgiler için ftrace
  • Hizmetler ve uygulamalardaki kullanıcı alanı notu için atrace
  • Hizmetlerin ve uygulamaların yerel bellek kullanımı bilgileri için heapprofd

Bu sayfada, perfetto çağrısının nasıl yapılacağı ve istenen çıkışı oluşturmak için nasıl yapılandırılacağı açıklanmaktadır. Daha fazla bilgi için perfetto dokümanlarına bakın.

Sözdizimi

Bu bölümde, farklı modlarda perfetto çağrısı yapmak ve iz oluşturmak için ADB'nin nasıl kullanılacağı açıklanmaktadır.

Veri kaynağı seçimi

perfetto, izinizi kaydetmek için kullandığı veri kaynaklarını belirleyen aşağıdaki iki modu içerir:

  • açık mod: Veri kaynaklarının yalnızca bir alt kümesini (özellikle atrace ve ftrace) seçebilir. Ancak bu mod, systrace'e benzer bir arayüz sunar.
  • normal mod: Yapılandırmasını bir protokol arabelleğinde alır ve atrace ile ftrace farklı veri kaynaklarını kullanarak perfetto ürününün daha fazla işlevinden yararlanmanıza olanak tanır.

Genel seçenekler

Aşağıdaki tabloda, her iki modda da perfetto kullanırken yararlanabileceğiniz seçenekler listelenmiştir:

Tablo 1. Mevcut genel mükemmel araç seçeneklerinin listesi.

Option Açıklama
--background |
-d
perfetto, komut satırı arayüzünden hemen çıkar ve izinizi arka planda kaydetmeye devam eder.
--background-wait | -D --background gibi ancak uygulamadan önce tüm veri kaynaklarının başlamasını bekler (30 saniyeye kadar). Başarılı bir onay alınırsa çıkış kodu sıfırdır; aksi takdirde (hata veya zaman aşımı) sıfır dışında bir değer olur.
--alert-id Bu izlemeyi tetikleyen uyarının kimliği.
--config-id Tetikleyen yapılandırmanın kimliği.
--config-uid Yapılandırmayı kaydeden uygulamanın UID'si.
--subscription-id Bu izlemeyi tetikleyen aboneliğin kimliği.
--out OUT_FILE |
-o OUT_FILE

Çıkış izleme dosyasının istenen yolunu veya stdout için - değerini belirtir. perfetto, çıktıyı önceki işaretlerde açıklanan dosyaya yazar. Çıkış biçimi, AOSP trace.proto'de tanımlanan biçimle derlenir.

Not: Çıkış dosyasının tam yol adını belirtmeniz gerekir. Genellikle dosyalar /data/misc/perfetto-traces klasörüne yazılmalıdır.

--upload İşlem tamamlandığında, izi proto izleme yapılandırmasındaki IncidentReportConfig mesajıyla belirtilen pakete iletir.
--no-guardrails Test sırasında --upload işaretini etkinleştirirken aşırı kaynak kullanımına karşı korumaları devre dışı bırakır.
--reset-guardrails Test için korumaların ve çıkışların kalıcı durumunu sıfırlar.
--rsave-for-bugreport bugreport_score > 0 değerine sahip bir iz çalışıyorsa izi bir dosyaya kaydeder. İşlem tamamlandığında yol çıktısını verir.
--query Hizmet durumunu sorgular ve kullanıcılar tarafından okunabilir metin olarak yazdırır.
--query-raw --query yöntemine benzer, ancak proto olarak kodlanmış tracing_service_state.proto. baytlık metinleri yazdırır
--help | -h perfetto aracı için yardım metnini yazdırır.

Açık mod

Açık modda perfetto kullanımı için genel söz dizimi şöyledir:

 adb shell perfetto [ --time TIMESPEC ] [ --buffer SIZE ] [ --size SIZE ]
             [ ATRACE_CAT | FTRACE_GROUP/FTRACE_NAME | FTRACE_GROUP/* ]...
             --out FILE

Aşağıdaki tabloda, açık modda perfetto kullanırken yararlanabileceğiniz seçenekler listelenmiştir:

Tablo 2. Açık mod kullanılırken kullanılabilen perfetto aracı seçeneklerinin listesi.

Option Açıklama
--time TIME[s|m|h] |
-t TIME[s|m|h]
İzleme süresini saniye, dakika veya saat cinsinden belirtir. Örneğin --time 1m, 1 dakikalık iz süresini belirtir. Varsayılan süre 10 saniyedir.
--buffer SIZE[mb|gb] |
-b SIZE[mb|gb]
Halka arabellek boyutunu megabayt (mb) veya gigabayt (gb) cinsinden belirtir. Varsayılan parametre: --buffer 32mb.
--size SIZE[mb|gb] |
-s SIZE[mb|gb]
Maksimum dosya boyutunu megabayt (mb) veya gigabayt (gb) cinsinden belirtir. perfetto varsayılan olarak yalnızca bellek içi halka arabelleği kullanır.
--app | -a Android (atrace) uygulama adı

Bu seçeneklerin ardından bir etkinlik tanımlayıcı listesi gelir:

Tablo 3. Açık mod için etkinlik belirteçlerinin listesi.

Etkinlik Açıklama
ATRACE_CAT İzleme kaydetmek istediğiniz atrace kategorilerini belirtir. Örneğin, aşağıdaki komut atrace kullanarak Windows Manager'ı izler:
    adb shell perfetto --out FILE wm
    

Diğer kategorileri kaydetmek için atrace kategori listesine bakın.

FTRACE_GROUP/FTRACE_NAME İzleme kaydetmek istediğiniz ftrace etkinliklerini belirtir. Örneğin, aşağıdaki komut sched/sched_switch etkinliklerini izler:
      adb shell perfetto --out FILE sched/sched_switch
      

Normal mod

Normal modda perfetto kullanımı için genel söz dizimi aşağıdaki gibidir:

 adb shell perfetto [ --txt ] --config CONFIG_FILE --out FILE

Aşağıdaki tabloda, perfetto normal modda kullanılırken sunulan seçenekler listelenmiştir:

Tablo 4. Normal modda kullanılabilen perfetto aracı seçeneklerinin listesi.

Option Açıklama
--config CONFIG_FILE | -c CONFIG_FILE Bir yapılandırma dosyasının yolunu belirtir. Normal modda bazı yapılandırmalar, bir yapılandırma protokolü arabelleğinde kodlanabilir. Bu dosya, AOSP trace_config.proto'de tanımlanan protokol arabelleği şemasına uygun olmalıdır.

AOSP data_source_config.proto bölümünde tanımlandığı şekilde TraceConfig öğesinin DataSourceConfig üyesini kullanarak veri kaynaklarını seçin ve yapılandırın.

--txt perfetto işletim sistemine, yapılandırma dosyasını pbtxt olarak ayrıştırması talimatını verir. Bu işaret yalnızca yerel test için tasarlanmıştır ve üretim için etkinleştirmeniz önerilmez.

Desteklenen veri kaynakları

Bu bölümde, perfetto ürününün izinizi oluşturmak için kullandığı farklı kaynaklar açıklanmaktadır.

Ftrace

ftrace veri kaynağı, perfetto uygulamasının çekirdekten etkinlik almasına olanak tanır.

DataSourceConfig'de ftrace_config ayarını yaparak bu kaynağı etkinleştirin.

Etkinleştirilebilecek etkinlikler şunlardır:

  • Etkinlik planlama:

    • sched/sched_switch
    • sched/sched_wakeup
    • sched/sched_wakeup_new
    • sched/sched_process_exec
    • sched/sched_process_exit
    • sched/sched_process_fork
    • sched/sched_process_free
    • sched/sched_process_hang
    • sched/sched_process_wait
  • Dosya sistemi etkinlikleri:

  • atrace etkinlik

Cihazınıza, işletim sistemi sürümünüze veya çekirdeğinize bağlı olarak daha fazla etkinlik mevcut olabilir. Daha fazla bilgi için config protos sayfasına bakın.

İşlem İstatistikleri

İşlem istatistikleri veri kaynağı, sistem ve bağımsız işlemler hakkında sorgulanmış sayaçlar almanıza olanak tanır.

DataSourceConfig'de process_stats_config ve sys_stats_config ayarlarını yaparak bu kaynağı etkinleştirin.

perfetto ürününün oluşturduğu veriler şunları içerir:

Cihazınıza, işletim sistemi sürümünüze ve çekirdeğinize bağlı olarak daha fazla etkinlik mevcut olabilir. Daha fazla bilgi edinmek için sys_stats ve process_stats yapılandırma protoslarına bakın.

heapprofd

heapprofd, yerel bellek kullanımının nedenlerini örneklemenize olanak tanır.

DataSourceConfig'de heapprofd_config ayarını yaparak bu kaynağı etkinleştirin. Bu ayar, çağrı yığınının Java çerçeveleri dahil olmak üzere ProfilePackets kodunu oluşturur.

heapprofd hizmetinin nasıl kullanılacağıyla ilgili ek bilgileri perfetto.dev adresinde bulabilirsiniz.

Diğer kaynaklar

Cihazınıza, işletim sistemi sürümüne ve çekirdeğinize bağlı olarak daha fazla veri kaynağı kullanılabilir. Daha fazla bilgi için veri kaynağı yapılandırma protoslarına bakın.

perfetto hakkında daha fazla bilgiyi perfetto.dev adresinde bulabilirsiniz.