מדידת ביצועי האפליקציה
במאמר הזה מוסבר איך מגדירים את Cloud Profiler ואיך משתמשים בו. משתמשים ב-Cloud Shell כדי להוריד תוכנית לדוגמה ב-Go, מריצים אותה עם פרופיל מופעל ואז משתמשים בממשק של Profiler כדי לבדוק את הנתונים שנאספו.
אם אתם מתכננים ליצור פרופילים של אפליקציות שפועלות מחוץ ל-Google Cloud, תצטרכו לבצע כמה שלבי הגדרה שלא מפורטים במסמך הזה. מידע על השלבים האלה זמין במאמר בנושא יצירת פרופילים של אפליקציות שפועלות מחוץ ל- Google Cloud.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
מפעילים את Cloud Profiler API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים - כדי לפתוח את Cloud Shell, בסרגל הכלים של המסוף Google Cloud , לוחצים על הפעלת Cloud Shell:

אחרי כמה דקות ייפתח סשן של Cloud Shell בתוך המסוףGoogle Cloud :

בחירת תוכנית ליצירת פרופיל
תוכנית הדוגמה, main.go, נמצאת במאגר golang-samples ב-GitHub. כדי לקבל את חבילת דוגמאות Go, מריצים את הפקודה הבאה ב-Cloud Shell:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
התהליך של אחזור החבילה נמשך כמה רגעים.
יצירת פרופיל של הקוד
ב-Cloud Shell, עוברים לספרייה של קוד לדוגמה עבור Profiler בחבילה שאוחזרה:
cd golang-samples/profiler/profiler_quickstart
תוכנית main.go יוצרת עומס עבודה שדורש הרבה משאבי CPU כדי לספק נתונים לכלי ליצירת פרופילים. ב-Cloud Shell, מריצים את הפקודה הבאה כדי להפעיל את התוכנית, ומשאירים אותה פועלת:
go run main.go
התוכנית הזו מיועדת לטעינת ה-CPU בזמן שהיא פועלת. הוא מוגדר להשתמש ב-Profiler, שאוסף נתוני פרופילים מהתוכנית בזמן שהיא פועלת ושומר אותם מדי פעם.
כמה שניות אחרי שתתחילו את התוכנית, תופיע ההודעה
profiler has started. אחרי דקה בערך, מוצגות עוד שתי הודעות:
successfully created profile CPU
start uploading profile
ההודעות האלה מציינות שנוצר פרופיל והועלה לפרויקט Cloud Storage שלכם. התוכנית ממשיכה לפלוט את שתי ההודעות האחרונות, פעם בדקה בערך, כל עוד היא פועלת.
אם מופיעה הודעת שגיאה על כך שההרשאה נדחתה אחרי הפעלת השירות, אפשר להיעזר במאמר שגיאות בהגדרת הפרויקט. Google Cloud
ממשק הכלי לניתוח ביצועים (profiler)
כמה רגעים אחרי שמפעילים את האפליקציה, Profiler מציג את נתוני הפרופיל הראשוניים. הממשק מציע מגוון אמצעי בקרה וגרף להבה כדי לבחון את נתוני הפרופיל:

בנוסף לאמצעי בקרה על הזמן, יש אפשרויות שמאפשרות לבחור את קבוצת נתוני הפרופיל שבהם רוצים להשתמש. כשמבצעים פרופיל של כמה אפליקציות, משתמשים בService כדי לבחור את המקור של הנתונים שנוצרו בפרופיל. סוג הפרופיל מאפשר לכם לבחור את סוג נתוני הפרופיל שיוצגו. האפשרויות שם האזור וגרסה מאפשרות להגביל את התצוגה לנתונים מאזורים של Compute Engine או מגרסאות של האפליקציה. Weight מאפשר לבחור פרופילים שצולמו במהלך שיא צריכת המשאבים.
כדי לשנות את אופן ההצגה של הפרופילים שבחרתם לניתוח בתרשים הלהבות, מוסיפים מסננים. בצילום המסך הקודם, בסרגל המסננים filter_list מוצג מסנן אחד. אפשרות הסינון היא Metric וערך המסנן הוא CPU time.
עיון בנתונים
בתרשים הלהבות מוצגים מחסניות הקריאות של התוכנית. כל פונקציה מיוצגת בתרשים הלהבות באמצעות פריים. הרוחב של המסגרת מייצג את שיעור צריכת המשאבים של הפונקציה. המסגרת העליונה מייצגת את התוכנית כולה. במסגרת הזו תמיד מוצג 100% מצריכת המשאבים. במסגרת הזו מפורט גם מספר הפרופילים שמשוקללים בתרשים הזה.
לתוכנית לדוגמה אין קבוצה מסובכת של מחסניות קריאות. בצילום המסך הקודם אפשר לראות 5 פריימים:
- המסגרת האפורה מייצגת את כל הקובץ הניתן להפעלה, שמהווה 100% מהמשאבים שנצרכים.
- המסגרת הירוקה
mainהיא ה-Goruntime.main. - המסגרת הכתומה
mainהיאmainהשגרה של תוכנית הדוגמה. - המסגרת הכתומה
busyloopהיא שגרה שנקראת מתוךmainשל הדוגמה. - המסגרת הכתומה
main.loadהיא שגרה שנקראת מתוךmainשל הדוגמה.
המסנן מאפשר לכם לבצע פעולות כמו סינון פונקציות שתואמות לשם מסוים. לדוגמה, אם יש ספרייה רגילה של פונקציות עזר, אפשר להסיר אותן מהתרשים. אפשר גם להסיר ערימות קריאות (call stacks) שמקורן בשיטה מסוימת, או לפשט את הגרף בדרכים אחרות.
האפליקציה main.go פשוטה, כך שאין הרבה מה לסנן.
גם באפליקציה פשוטה, המסננים מאפשרים להסתיר פריימים לא מעניינים כדי שתוכלו לראות בצורה ברורה יותר את הפריימים המעניינים. לדוגמה, בצילום המסך של הפרופיל עבור קוד לדוגמה, המסגרת האפורה גדולה קצת יותר מהמסגרת הראשונה main שמתחתיה. למה? האם יש משהו אחר שקורה ולא ברור מיד כי main סטאק ביצוע
צורכת אחוז כל כך גבוה מהמשאבים?
כדי לראות מה קורה מחוץ לתרחיש main של האפליקציה, צריך להוסיף מסנן שמסתיר את סטאק הביצוע של התרחיש main.
רק 0.227% מצריכת המשאבים מתרחשת מחוץ ל-main:

מידע נוסף על סינון ועל דרכים אחרות לבדיקת נתוני הפרופילים זמין במאמר בחירת הפרופילים לניתוח.
המאמרים הבאים
מידע כללי על פרופילים זמין במאמרים הבאים:
- סקירה כללית על Cloud Profiler
- מושגים שקשורים ליצירת פרופילים
- אפשר גם לקרוא את המשאבים שלנו בנושא DevOps ולעיין בתוכנית המחקר של DORA.
- יצירת פרופילים של אפליקציות Go
- יצירת פרופילים של אפליקציות Java
- יצירת פרופיל של אפליקציות Node.js
- יצירת פרופילים של אפליקציות Python
- יצירת פרופילים של אפליקציות שפועלות מחוץ ל- Google Cloud