אחת מהבעיות הקשות ביותר למפתחי אפליקציות היא להבטיח אנימציה חלקה, ללא תקלות וללא תנודות. קשה במיוחד לנפות באגים במצב כזה, במיוחד אם המערכת מבצעת גם משימות רקע שצורכות הרבה משאבים. אין דרך קלה לקבוע אם התנודות בתנועה נגרמות על ידי האפליקציה או על ידי המערכת. עם זאת, יש כלי לניתוח פרופיל שיכול לעזור לכם לזהות את המקור האפשרי להתנהגות הלא תקינה.
רינדור ב-ChromeOS
באפליקציה שעברה שיפורים, כמו משחק, בדרך כלל נעשה שימוש בשני מאגרי נתונים כדי שהזמן להגיב למשתמש יהיה קצר ככל האפשר. עם זאת, יש הרבה דברים שיכולים לפגוע בביצועים. לדוגמה, אם עיבוד הפריימים נמשך יותר מדי זמן, התוצאה שעברה עיבוד לא מוכנה להחלפת המאגר הבאה, וכתוצאה מכך הפריימים הקודמים חוזרים על עצמם.
במקרה כזה, ה-renderer לא יכול להתחיל עיבוד של המסגרת הבאה, וכתוצאה מכך נוצרות בעיות נוספות. התרחיש הזה מוכר למפתחי אפליקציות לנייד ב-Android. כשאפליקציה פועלת ב-ChromeOS, ההקשר מורכב עוד יותר.
אפליקציה שפועלת במחשב לא מבצעת רינדור ישירות למסגרת התצוגה של המסך. במקום זאת, הוא מעבד את הנתונים שלו לתוך טקסטורה. בדרך כלל יש כמה אפליקציות, שכל אחת מהן מעבדת את הגרפיקה שלה למרקם. המערכת יוצרת את התצוגה במסך באמצעות מעבד תמונות (compositor) כדי לשלב את כל הטקסטורות בתמונה אחת של שולחן העבודה.
המאגר פועל באופן שקוף ברקע. עם זאת, היא מובילה לעיכוב של פריים אחד כדי למקסם את השימוש בצינור עיבוד הנתונים של ה-GPU. במצב אידיאלי, אולי לא יהיה צורך בכך, אבל זה עוזר לצמצם את התנודות בביצועי המערכת ולשמור על איזון בעומס אסימטרי.
כשמערכת ההפעלה עובדת קשה מאוד, יכול להיות שה-GPU ייאלץ לעבוד קשה יותר. יכול להיות עיכוב מהרגע שבו הפריימים עוברים עיבוד ועד שהם מופיעים במסך. בהתאם לחומרה, המערכת עשויה להשתמש באגירת נתונים כפולה כדי לפצות על כך. גם עם אגירת נתונים עמוקה יותר, צינור עיבוד הנתונים הגרפי עדיין עלול להיתקל בשיבושים.
הכלי למעקב אחר גרפיקה ב-ARC
ב-ChromeOS יש כלי ליצירת פרופילים שמראה איך מאגרי הנתונים עוברים דרך המערכת, מתי מתרחשים החלפות זיכרון, מידת הפעילות של המעבד (CPU) או המעבד הגרפי (GPU) ומה האפליקציה עושה בכל רגע נתון. התמונה הבאה ממחישה את הנתונים האלה:
הגדרת הכלי למעקב בזמן אמת אחרי ביצועים
כדי להשתמש בפרופילר, צריך להריץ את M75 ואילך. לקבלת התוצאות הטובות ביותר, מומלץ להשתמש במכשיר Intel.
לפני שמשתמשים בפרופילר, צריך להוסיף לאפליקציה נתוני מעקב.
מוסיפים את Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>);
לקוד בכל מקום שבו רוצים לכלול מעקב. משתמשים ב-Event
שמתחיל בקידומת customTrace
. הקידומת לא מופיעה בהודעת המעקב.
כדי להגדיר את הכלי לניתוח פרופיל, פועלים לפי השלבים הבאים:
- מפעילים את מצב הפיתוח.
- מפעילים את ההגדרות של Chrome ומפעילים את הכלי להצגה חזותית של מאגרי הגרפיקה של ARC.
- נווט אל
chrome://arc-graphics-tracing
.
הרצת הכלי לניתוחי פרופיל
- בוחרים באפשרות stop on jank.
- מפעילים את האפליקציה ל-Android.
- כשאפליקציית Android פעילה ומתמקדים בה, מקישים על Control+Shift+G.
כשיש תנודות מסוימות, חלון דפדפן קופץ. משתמשים במקשים W ו-S כדי להגדיל או לכווץ את ציר הזמן.