İzleri toplama ve görüntüleme

Bu sayfada, Wattson ile kullanılacak Perfetto izlerini toplama ve sonuçtaki güç verilerini Perfetto kullanıcı arayüzünde analiz etme ile ilgili ayrıntılı talimatlar verilmektedir.

Perfetto izi toplamanın birçok yolu olsa da bu sayfadaki yöntemler, Wattson ile uyumlu bir iz oluşturmaya yönelik özel gereksinimleri ve iş akışlarını içerir.

Minimum derleme koşulları

Wattson'ın doğru şekilde çalışması için gerekli meta verilere sahip olduğunu doğrulamak üzere, son derlemenin yüklü olduğu bir cihazdan izlemeler toplamanız gerekir. CPU ve GPU güç tahmini için minimum derleme sürümleri cihaza göre değişir.

Cihaz Minimum derleme koşulu: CPU tahmini Minimum derleme koşulu: GPU tahmini
Pixel Watch 2 Minimum derleme şartı yok Desteklenmiyor
Pixel Watch 3 25Q2 Desteklenmiyor
Pixel 6 Minimum derleme şartı yok 25Q2
Pixel 9 25Q2 Desteklenmiyor

Komut satırından Perfetto izi toplama

Bu bölümde, Wattson ile kullanılmak üzere Perfetto izlerinin toplanmasıyla ilgili örnek bir iş akışı sunulmaktadır. Aşağıdaki adımlarda listelenen tüm komutların Android Debug Bridge (adb) ana makinesinden verilmesi gerekir.

  1. Cihazda bir Perfetto yapılandırma dosyası oluşturarak izlemeyi yapılandırın ve başlatın. Örnek yapılandırmayı kaynak ağacındaki wattson.cfg konumunda bulabilirsiniz.

    Yapılandırmanız aşağıdaki izleme etkinliklerini içermelidir:

    # Polls CPU freq/idle state at the start of trace
    data_sources: {
       config {
          name: "linux.sys_stats"
          sys_stats_config {
             # Large period so polling doesn't happen continuously
             # Intent is just to poll once upfront
             cpufreq_period_ms: 100000000
             cpuidle_period_ms: 100000000
          }
       }
    }
    data_sources: {
       config {
          name: "linux.ftrace"
          ftrace_config {
             ftrace_events: "devfreq/devfreq_frequency"
             ftrace_events: "cpuhp/cpuhp_enter"
             ftrace_events: "cpuhp/cpuhp_exit"
             ftrace_events: "cpuhp/cpuhp_multi_enter"
             ftrace_events: "power/cpu_frequency"
             ftrace_events: "power/cpu_idle"
             ftrace_events: "power/suspend_resume"
          }
       }
    }
    
  2. L3 önbellek enerji kullanımı tahminlerini etkinleştirmek için fttrace/print etkinliğini etkinleştirin:

    adb shell perfetto --txt -c /data/misc/perfetto-configs/wattson.cfg --background-wait -o /data/misc/perfetto-traces/trace
    
    # Optional
    adb shell simpleperf stat -a -e arm_dsu_0/l3d_cache/,arm_dsu_0/bus_access/ --interval 10
    
  3. (İsteğe bağlı) Kaydın başlangıcını gösteren, Perfetto izine yerleştirilmiş bir işaretçi olan Wattson penceresinin başlangıcını ayarlayın. Bu işaretçi, Wattson ölçümünün doğruluğunu artırır.

    # Optional
    adb shell "echo 'I|0|wattson_start' >/sys/kernel/tracing/trace_marker"
    
  4. İlgilendiğiniz iş yükünü çalıştırın.

  5. (İsteğe bağlı) Wattson penceresinin sonunu ayarlamak için ftrace/print izleme etkinliğini etkinleştirin:

    # Optional
    adb shell "echo 'I|0|wattson_stop' >/sys/kernel/tracing/trace_marker"
    
  6. İzleme arabelleklerini temizleyin ve Perfetto izleme dosyasını çekin:

    adb shell killall -w perfetto
    adb pull /data/misc/perfetto-traces/trace my_perfetto_trace.pb
    

Perfetto kullanıcı arayüzünü kullanarak Perfetto izi toplama

Perfetto kullanıcı arayüzünü kullanarak iz toplamak için Wattson'da belirli ayarları etkinleştirmeniz gerekir. Perfetto kullanıcı arayüzünde yeni bir iz kaydederken Zamanlama ayrıntıları ve CPU frekansı ve boşta kalma durumları açma/kapatma düğmelerini etkinleştirin:

Planlama ayrıntıları ve CPU frekansı ile boşta kalma durumları açma/kapatma düğmeleri

1. şekil. Planlama ayrıntıları, CPU sıklığı ve boşta kalma durumları açma/kapatma düğmeleri.

Pixel 9 cihazlarda, cihaz frekansı toplama özelliğini etkinleştirmek için Ftrace ayarları bölümünde devfreq onay kutusunu işaretleyin:

Cihaz sıklığını etkinleştirme

Şekil 2. Cihaz sıklığını etkinleştirin.

Wattson kullanıcı arayüzünü kullanma

Perfetto ile, ray başına istatistikleri görüntülemek için bir zaman aralığı seçerek Wattson güç tahminlerini analiz edin veya güç tüketimini iş parçacığı, işlem ya da paket düzeyinde ilişkilendirmek için belirli iz yapılandırmalarını etkinleştirin.

Her bir rayın dökümünü görüntüleme

Perfetto'da Wattson ile etkileşim kurmak için:

  1. Perfetto'da bir izleme açın.

    Cihazınız Wattson tarafından destekleniyorsa Wattson izleri otomatik olarak listelenir:

    Wattson izlerini Perfetto'da görüntüleme

    3.Şekil Wattson izlerini Perfetto'da görüntüleyin.

  2. Genişletmek ve sanal ray dökümünü görüntülemek için Wattson'ı tıklayın:

    • Tüm bant grafikleri, bantlar arasındaki oranı göstermek için otomatik olarak aynı değere ölçeklendirilir.

    • İstatistikler, kullanıcı tarafından seçilen (veya işaretlenen) tüm bölgeler için oluşturulur.

    • İstatistik tablosu, herhangi bir sütun adı tıklanarak sıralanabilir.

    • Tahmini toplamlar doğrudan sütun başlıklarının altında gösterilir.

    Demiryolu tahminleri

    Şekil 4. Demiryolu tahminleri.

İş parçacığı, işlem veya paket ilişkilendirmelerine göre izlemeyi görüntüleme

Zamanlayıcı izlemelerini etkinleştirdiyseniz ve Perfetto'da iş parçacığı dilimlerini görebiliyorsanız iş parçacığı düzeyinde veya işlem düzeyinde güç ya da enerji ilişkilendirmesi de elde edebilirsiniz:

  1. Perfetto'da ileti dilimlerinin bir bölgesini seçin.
  2. İş parçacığı, işlem veya paketle ilgili ayrıntıları görüntüleyin.

Kanal bazında parça istatistiklerinde olduğu gibi, sütun adlarından herhangi birini tıklayarak ilgili sütuna göre sıralama yapabilirsiniz.

İş parçacığı düzeyinde dökümü analiz etme

Temel güç tahmini için minimum koşullara ek olarak, iş parçacığı başına güç ilişkilendirmesi için wattson.cfg içindeki linux.ftrace bölümüne aşağıdaki yapılandırmayı eklemeniz gerekir:

data_sources: {
    config {
        name: "linux.ftrace"
        ftrace_config {
            ftrace_events: "sched/sched_switch"
        }
    }
}

İleti dizisi düzeyinde dökümler

5.şekil İş parçacığı düzeyinde dökümler.

Süreç düzeyinde döküm

Süreç düzeyinde ilişkilendirme için Perfetto izinde toplanan verilerde process_states özelliğinin etkinleştirilmesi gerekir. wattson.cfg yapılandırma dosyanızda aşağıdaki veri kaynağını etkinleştirin:

data_sources: {
    config {
        name: "linux.process_stats"
        target_buffer: 1
        process_stats_config {
            scan_all_processes_on_start: true
        }
    }
}

Süreç dökümüne göre

6.şekil Süreç dökümüne göre.

Paket düzeyinde döküm

Paket düzeyinde ilişkilendirme için Perfetto izinde toplanan verilerde android.packages_list etkinleştirilmelidir. wattson.cfg yapılandırma dosyanızda aşağıdaki veri kaynağını etkinleştirin:

data_sources {
  config {
    name: "android.packages_list"
    target_buffer: 1
  }
}

İş parçacığı düzeyinde ve süreç düzeyinde ilişkilendirmeye benzer şekilde, bir iş parçacığı dilimi aralığı seçtiğinizde paket düzeyindeki dökümü inceleyin.

İleti dizisi düzeyinde döküm

Şekil 7. İleti dizisi düzeyinde döküm.

SSS

Wattson hakkında sık sorulan bazı soruları aşağıda bulabilirsiniz.

Wattson'ın laboratuvar güç ölçümü donanım çıkışıyla eşleşmesi beklenir mi?

Çoğu iş yükünde Wattson tahmini, laboratuvar güç donanımı ölçümleriyle eşleşir. Ancak bu durum her zaman geçerli değildir ve Wattson'ın amacı bu değildir.

Wattson, güç iyileştirmelerini doğrulamak veya güç gerilemelerini yakalamak için tasarlanmıştır. Bunu yaparken çevresel faktörlerden (sıcaklık) kaynaklanan gürültü, çip sızıntısındaki birimler arası farklılıklar (aynı SoC, birim bazında farklı sızıntılara sahip olabilir) veya laboratuvar güç ölçümü donanımı arasındaki kalibrasyon farklılıkları dikkate alınmaz.

Wattson, CPU süresine veya CPU döngülerine bakmaktan nasıl daha faydalıdır?

CPU süresi ve döngüleri, CPU frekansları ile CPU türleri (küçük, orta ve büyük) arasındaki güç veya enerji tüketimi farkını hesaba katmaz.

CPU frekansının iki katına çıkarılması her zaman CPU gücünün veya performansın iki katına çıkmasıyla sonuçlanmaz.

Wattson, donanım çözümleriyle karşılaştırıldığında doğru sonuçlar veriyor mu?

Wattson'ı, birden fazla ekip tarafından sağlanan çeşitli kullanım alanlarında laboratuvar güç ölçümü donanımıyla karşılaştırdık. Wattson'daki ortalama hata 1 puan ve standart sapma 1,5 puan. Bu korelasyon düzeyi, 10 saniyelik testlerden 4 saat süren testlere kadar korunur. Bu nedenle, zamanla artan veya gizlenen hatalar söz konusu değildir.

Pixel 6 çekirdek yapılandırma denemeleri

Pixel 6 kullanılarak yapılan tipik Wattson dökümlerine ait bazı temel denemeler aşağıda verilmiştir:

Wattson.cfg

Bu bölümde, Perfetto'da Wattson'ın etkinleştirilmesi için tipik yapılandırma sağlanmaktadır:

  write_into_file: true
  flush_period_ms: 30000
  file_write_period_ms: 30000

  buffers: {
      size_kb: 2048
      fill_policy: RING_BUFFER
  }
  buffers: {
      size_kb: 200000
      fill_policy: RING_BUFFER
  }

  # Needed for process level power attribution
  data_sources: {
      config {
          name: "linux.process_stats"
          target_buffer: 0
          process_stats_config {
              scan_all_processes_on_start: true
          }
      }
  }

  # Needed for package level power attribution
  data_sources: {
      config {
          name: "android.packages_list"
          target_buffer: 0
      }
  }

  # Needed for determining CPU freq/idle initial state
  data_sources: {
      config {
          name: "linux.sys_stats"
          sys_stats_config {
              cpufreq_period_ms: 100000000
              cpuidle_period_ms: 100000000
          }
      }
  }

  # Needed for estimating power and thread level power attribution
  data_sources: {
      config {
          name: "linux.ftrace"
          target_buffer: 1
          ftrace_config {
              # Minimum data sources for estimating power
              ftrace_events: "power/cpu_frequency"
              ftrace_events: "power/cpu_idle"
              ftrace_events: "power/suspend_resume"
              ftrace_events: "cpuhp/cpuhp_enter"
              ftrace_events: "cpuhp/cpuhp_exit"
              ftrace_events: "cpuhp/cpuhp_multi_enter"
              ftrace_events: "devfreq/devfreq_frequency"

              # Needed for Wattson start/stop markers
              ftrace_events: "ftrace/print"

              # Needed for thread level power attribution
              ftrace_events: "sched/sched_switch"

              # Needed for process level power attribution
              ftrace_events: "sched/sched_process_free"
              ftrace_events: "task/task_newtask"
              ftrace_events: "task/task_rename"
          }
      }
  }