این صفحه دستورالعمل های دقیقی را برای جمع آوری ردیابی های Perfetto برای استفاده با Wattson و برای تجزیه و تحلیل داده های قدرت حاصل در Perfetto UI ارائه می دهد.
در حالی که روشهای زیادی برای جمعآوری ردیابی Perfetto وجود دارد، روشهای موجود در این صفحه شامل الزامات و گردشهای کاری خاص برای ایجاد ردیابی سازگار با Wattson است.
حداقل نیازهای ساخت
برای تأیید اینکه Wattson متادیتای لازم برای عملکرد صحیح را دارد، باید ردیابیها را از دستگاهی که یک ساخت اخیر اجرا میکند جمعآوری کنید. حداقل نسخه های ساخت برای تخمین توان CPU و GPU بسته به دستگاه متفاوت است.
دستگاه | حداقل نیاز ساخت: تخمین CPU | حداقل نیاز ساخت: تخمین GPU |
---|---|---|
پیکسل واچ 2 | بدون نیاز به حداقل ساخت | پشتیبانی نمی شود |
پیکسل واچ 3 | 25 Q2 | پشتیبانی نمی شود |
پیکسل 6 | بدون نیاز به حداقل ساخت | 25 Q2 |
پیکسل 9 | 25 Q2 | پشتیبانی نمی شود |
Trace Perfetto را از خط فرمان جمع آوری کنید
این بخش یک نمونه گردش کار برای جمع آوری ردیابی Perfetto برای استفاده با Wattson ارائه می دهد. تمام دستورات فهرست شده در مراحل زیر به این معنی است که از میزبان Android Debug Bridge (adb) صادر می شوند.
با ایجاد یک فایل پیکربندی Perfetto در دستگاه، ردیابی را پیکربندی و شروع کنید. یک نمونه پیکربندی را می توان در
wattson.cfg
در درخت منبع یافت.پیکربندی شما باید شامل رویدادهای ردیابی زیر باشد:
# 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، رویداد
fttrace/print
فعال کنید: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
(اختیاری) شروع پنجره Wattson را تنظیم کنید، یک نشانگر تعبیه شده در ردیابی Perfetto که شروع رکورد را نشان می دهد. این نشانگر دقت بیشتری را به اندازه گیری واتسون اضافه می کند.
# Optional adb shell "echo 'I|0|wattson_start' >/sys/kernel/tracing/trace_marker"
حجم کاری مورد علاقه را اجرا کنید.
(اختیاری) رویداد
ftrace/print
trace را برای تنظیم انتهای پنجره Wattson فعال کنید:# Optional adb shell "echo 'I|0|wattson_stop' >/sys/kernel/tracing/trace_marker"
بافرهای ردیابی را بشویید و فایل ردیابی Perfetto را بکشید:
adb shell killall -w perfetto adb pull /data/misc/perfetto-traces/trace my_perfetto_trace.pb
ردیابی Perfetto را با استفاده از Perfetto UI جمع آوری کنید
برای جمع آوری ردیابی با استفاده از Perfetto UI ، باید تنظیمات خاصی را برای Wattson فعال کنید. هنگام ضبط یک ردیابی جدید در Perfetto UI، جزئیات زمانبندی و فرکانس CPU و حالت های بیکار را فعال کنید:
شکل 1. جزئیات زمان بندی و فرکانس CPU و حالت های بیکار تغییر می کند.
برای دستگاههای Pixel 9، در تنظیمات Ftrace ، کادر devfreq را انتخاب کنید تا جمعآوری فرکانس دستگاه فعال شود:
شکل 2. فرکانس دستگاه را فعال کنید.
از واتسون UI استفاده کنید
با Perfetto، با انتخاب یک محدوده زمانی برای مشاهده آمار هر ریل، یا فعال کردن پیکربندیهای ردیابی خاص برای نسبت دادن مصرف برق در سطح رشته، فرآیند یا بسته، تخمینهای توان Wattson را تجزیه و تحلیل کنید.
مشاهده در هر ریل خراب می شود
برای تعامل با واتسون در Perfetto:
ردی را در Perfetto باز کنید.
اگر دستگاه شما توسط Wattson پشتیبانی می شود، ردیابی Wattson به طور خودکار لیست می شود:
شکل 3. آثار Wattson را در Perfetto مشاهده کنید.
روی Wattson کلیک کنید تا به تفکیک ریل مجازی بزرگ شود و مشاهده شود:
همه نمودارهای ریل به طور خودکار به یک مقدار مقیاس می شوند تا نسبت بین ریل ها را نشان دهند.
آمار برای هر منطقه انتخاب شده (یا علامت گذاری شده) توسط کاربر ایجاد می شود.
جدول آمار را می توان با کلیک کردن روی نام هر ستون مرتب کرد.
مجموع برآورد مستقیماً در زیر عنوان ستون ها نمایش داده می شود.
شکل 4. برآورد راه آهن.
مشاهده ردیابی در هر رشته، فرآیند، یا اسناد بسته
اگر ردیابی زمانبندی را فعال کردهاید و میتوانید برشهای رشته را در Perfetto ببینید، میتوانید قدرت یا انرژی در سطح رشته یا سطح فرآیند را نیز دریافت کنید:
- در Perfetto، منطقه ای از برش های نخ را انتخاب کنید.
- تفکیک موضوع، فرآیند یا بسته را مشاهده کنید.
همانطور که در مورد آمار مسیر راه آهن، شما می توانید بر روی هر یک از نام ستون برای مرتب سازی بر اساس آن ستون کلیک کنید.
تجزیه و تحلیل سطح نخ
علاوه بر حداقل الزامات برای تخمین توان پایه، باید پیکربندی زیر را به بخش linux.ftrace
در wattson.cfg
برای تخصیص توان در سطح رشته اضافه کنید:
data_sources: {
config {
name: "linux.ftrace"
ftrace_config {
ftrace_events: "sched/sched_switch"
}
}
}
شکل 5. شکست سطح نخ.
تجزیه در سطح فرآیند
انتساب در سطح فرآیند مستلزم فعال شدن process_states
بر روی داده های جمع آوری شده در ردیابی Perfetto است. منبع داده زیر را در فایل پیکربندی wattson.cfg
خود فعال کنید:
data_sources: {
config {
name: "linux.process_stats"
target_buffer: 1
process_stats_config {
scan_all_processes_on_start: true
}
}
}
شکل 6. بر اساس تجزیه فرآیند.
تجزیه در سطح بسته
انتساب در سطح بسته نیازمند فعال کردن android.packages_list
در دادههای جمعآوریشده در ردیابی Perfetto است. منبع داده زیر را در فایل پیکربندی wattson.cfg
خود فعال کنید:
data_sources {
config {
name: "android.packages_list"
target_buffer: 1
}
}
مشابه انتساب سطح رشته و سطح فرآیند، وقتی طیفی از برشهای رشته را انتخاب میکنید، تفکیک در سطح بسته را بررسی کنید.
شکل 7. تجزیه در سطح موضوع.
سوالات متداول
در اینجا چند سوال متداول در مورد واتسون وجود دارد.
آیا انتظار می رود واتسون با خروجی سخت افزار اندازه گیری توان آزمایشگاهی مطابقت داشته باشد؟
برای اکثر بارهای کاری، تخمین واتسون با اندازه گیری های سخت افزاری توان آزمایشگاهی مطابقت دارد. با این حال، همیشه اینطور نیست و هدف واتسون نیست.
Wattson به منظور اعتبارسنجی بهبود توان یا گرفتن رگرسیون توان بدون نویز ناشی از عوامل محیطی (دما)، تغییرات واحد به واحد در نشت تراشه (همان SoC میتواند نشت متفاوتی بر اساس هر واحد داشته باشد)، یا تفاوتهای کالیبراسیون بین سختافزار اندازهگیری توان آزمایشگاهی است.
چگونه Wattson مفیدتر از بررسی زمان CPU یا چرخه CPU است؟
زمان و چرخه های CPU تفاوت در توان یا مصرف انرژی بین فرکانس های CPU و انواع CPU (کم در مقابل متوسط در مقابل بزرگ) را به حساب نمی آورند.
دو برابر شدن فرکانس CPU همیشه منجر به دو برابر شدن قدرت CPU یا عملکرد دو برابر نمی شود.
آیا واتسون در مقایسه با راه حل های سخت افزاری دقیق است؟
ما واتسون را با سخت افزار اندازه گیری توان آزمایشگاهی در موارد استفاده چندگانه ارائه شده توسط تیم های متعدد مقایسه کرده ایم. میانگین خطا در واتسون 1% امتیاز و انحراف معیار 1.5% امتیاز است. این سطح از همبستگی در آزمونهایی که 10 ثانیه نسبت به آزمونهایی که 4 ساعت اجرا میشوند حفظ میشود. بنابراین هیچ خزش خطا یا پنهان کردن خطا وجود ندارد که این عامل زمان است.
آزمایشات پیکربندی هسته پیکسل 6
در اینجا چند آزمایش پایه از خرابیهای معمولی واتسون با استفاده از Pixel 6 آورده شده است:
Wattson.cfg
این بخش پیکربندی معمولی برای فعال سازی Wattson در Perfetto را ارائه می دهد:
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"
}
}
}