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.
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" } } }
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
(İ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"
İlgilendiğiniz iş yükünü çalıştırın.
(İ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"
İ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:
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:
Ş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:
Perfetto'da bir izleme açın.
Cihazınız Wattson tarafından destekleniyorsa Wattson izleri otomatik olarak listelenir:
3.Şekil Wattson izlerini Perfetto'da görüntüleyin.
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.
Ş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:
- Perfetto'da ileti dilimlerinin bir bölgesini seçin.
- İş 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"
}
}
}
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
}
}
}
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.
Ş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"
}
}
}