تقدّم هذه الصفحة تعليمات مفصّلة حول جمع عمليات تتبُّع Perfetto لاستخدامها مع Wattson، وحول تحليل بيانات الطاقة الناتجة في واجهة مستخدم Perfetto.
على الرغم من توفّر العديد من الطرق لجمع بيانات تتبُّع Perfetto، تتضمّن الطرق الواردة في هذه الصفحة المتطلبات ومسارات العمل المحدّدة لإنشاء بيانات تتبُّع متوافقة مع Wattson.
الحد الأدنى لمتطلبات الإصدار
للتحقّق من أنّ Wattson يتضمّن البيانات الوصفية المطلوبة ليعمل بشكل صحيح، عليك جمع عمليات تتبُّع من جهاز يعمل بإصدار حديث. تختلف الحد الأدنى لإصدارات البنية لتقدير استهلاك الطاقة في وحدة المعالجة المركزية ووحدة معالجة الرسومات حسب الجهاز.
جهاز | الحدّ الأدنى لمتطلبات الإصدار: تقدير وحدة المعالجة المركزية | الحدّ الأدنى لمتطلبات الإصدار: تقدير وحدة معالجة الرسومات |
---|---|---|
Pixel Watch 2 | ما مِن حدّ أدنى مطلوب لعدد الإصدارات | غير متاح |
Pixel Watch 3 | 25Q2 | غير متاح |
Pixel 6 | ما مِن حدّ أدنى مطلوب لعدد الإصدارات | 25Q2 |
Pixel 9 | 25Q2 | غير متاح |
جمع بيانات تتبُّع 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" } } }
لتفعيل تقديرات استخدام الطاقة في ذاكرة التخزين المؤقت من المستوى 3، فعِّل الحدث
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 تشير إلى بداية التسجيل. تضيف هذه العلامة دقة إضافية إلى قياسات Wattson.
# Optional adb shell "echo 'I|0|wattson_start' >/sys/kernel/tracing/trace_marker"
نفِّذ عبء العمل الذي يهمّك.
(اختياري) فعِّل حدث التتبُّع
ftrace/print
لضبط نهاية فترة 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
لجمع بيانات التتبُّع باستخدام واجهة مستخدم Perfetto، يجب تفعيل إعدادات معيّنة في Wattson. عند تسجيل عملية تتبُّع جديدة في واجهة مستخدم Perfetto، فعِّل خيارَي تفاصيل الجدولة وتردد وحدة المعالجة المركزية وحالات عدم النشاط:
الشكل 1. تفاصيل الجدول الزمني ومفاتيح تبديل معدّل تكرار وحدة المعالجة المركزية وحالات عدم النشاط
بالنسبة إلى أجهزة Pixel 9، ضَع علامة في مربّع الاختيار devfreq ضمن إعدادات Ftrace لتفعيل ميزة جمع بيانات تردد الجهاز:
الشكل 2. فعِّل معدّل تكرار استخدام الجهاز.
استخدام واجهة مستخدم Wattson
باستخدام Perfetto، يمكنك تحليل تقديرات استهلاك الطاقة في Wattson من خلال اختيار نطاق زمني للاطّلاع على إحصاءات كل مسار، أو تفعيل إعدادات تتبُّع معيّنة لتحديد مصدر استهلاك الطاقة على مستوى سلسلة التعليمات أو العملية أو الحزمة.
عرض تفاصيل كل سكة حديد
للتفاعل مع 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.
هل من المتوقّع أن تتطابق قراءات Wattson مع قراءات أجهزة قياس الطاقة في المختبر؟
بالنسبة إلى معظم أحمال العمل، يتطابق تقدير Wattson مع قياسات أجهزة الطاقة في المختبر. ومع ذلك، لا يكون هذا هو الحال دائمًا، وليس هذا هو الهدف من Wattson.
تم تصميم Wattson للتحقّق من التحسينات على استهلاك الطاقة أو رصد أي تراجع في استهلاك الطاقة بدون أي تشويش ناتج عن عوامل بيئية (مثل درجة الحرارة) أو اختلافات بين الوحدات في تسريب الرقاقة (يمكن أن يكون للمنظومة على الرقاقة نفسها معدل تسريب مختلف لكل وحدة)، أو اختلافات في المعايرة بين أجهزة قياس الطاقة في المختبر.
كيف تكون أداة Wattson أكثر فائدة من النظر إلى وقت وحدة المعالجة المركزية أو دورات وحدة المعالجة المركزية؟
لا يوضّح وقت وحدة المعالجة المركزية ودوراتها الفرق في استهلاك الطاقة بين ترددات وحدة المعالجة المركزية وأنواعها (صغيرة ومتوسطة وكبيرة).
لا يؤدي مضاعفة سرعة وحدة المعالجة المركزية دائمًا إلى مضاعفة طاقتها أو أدائها.
هل Wattson دقيق عند مقارنته بالحلول المستندة إلى الأجهزة؟
قارنّا بين Wattson وأجهزة قياس الطاقة في المختبرات في عدة حالات استخدام قدّمتها عدة فرق. يبلغ متوسط الخطأ في Wattson 1%، ويبلغ الانحراف المعياري 1.5%. ويتم الحفاظ على مستوى التطابق هذا في جميع الاختبارات التي تتراوح مدتها بين 10 ثوانٍ و4 ساعات. وبالتالي، لا يحدث أي تراكم للأخطاء أو إخفاء لها بمرور الوقت.
تجارب إعدادات نواة Pixel 6
في ما يلي بعض التجارب الأساسية لتقسيمات Wattson النموذجية باستخدام هاتف 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"
}
}
}