כאשר אנו מדברים על ביצועים במחשוב, אנו מתייחסים לקשר בין המשאבים שלנו והמשימות שהם מאפשרים לנו להשלים בתקופה נתונה.

ביום של תחרות איתנה בין החברות, חשוב שנלמד כיצד להשתמש במה שיש לנו ביכולת הטובה ביותר. הבזבוז של משאבי חומרה או תוכנה, או החוסר היכולת לדעת כיצד להשתמש בהם בצורה יעילה יותר, מסתיים בהפסד שאיננו יכולים להרשות לעצמנו אם רוצים להיות בראש המשחק.
באותו הזמן, עלינו להיות זהירים שלא להביא את המשאבים שלנו לגבול שבו שימוש מתמיד יגרום לנזק לא שיחזור.
במאמר זה נציג לך כלי ניתוח ביצועים יחסית חדש ונספק טיפים שתוכל להשתמש בהם כדי למעקב אחר מערכות ה-Linux שלך, כולל חומרה ויישומים. זה יעזור לך להבטיח שהם פועלים כך שתהיה ביכולת לייצר את התוצאות הרצויות בלי לבזבז משאבים או את האנרגיה שלך.
מציגים ומתקינים את Perf ב-Linux
בין השאר, Linux מספקת כלי ניטור וניתוח ביצועים הנקרא בצורה נוחה perf. אז מה מבדיל את perf מכלים ידועים אחרים שאיתם אתה כבר מוכר?
התשובה היא ש-perf מספק גישה ל-יחידת ניטור ביצועים במעבד, ובכך מאפשר לנו להסתכל מקרוב על ההתנהגות של החומרה והאירועים הקשורים אליה.
בנוסף, הוא יכול להשגיח על אירועי התוכנה, וליצור דוחות מהמידע שנאסף.
ניתן להתקין perf במיזעורים מבוססי RPM באמצעות:
# yum update && yum install perf [CentOS / RHEL / Fedora] # dnf update && dnf install perf [Fedora 23+ releases]
ב Debian והיתר:
# sudo aptitude update && sudo aptitude install linux-tools-$(uname -r) linux-tools-generic
אם uname -r
בפעם הקודמת יחזיר סימנים נוספים בנוסף להיות הגיון הגיוני (3.2.0-23-generic במקרה שלי), אולי תצטרכו להקליד linux-tools-3.2.0-23 במקום להשתמש בתוצאת uname.
חשוב גם לשים לב שperf מעביר תוצאות לא מלאות בעוד הוא מופעל בתור אורח מעל לVirtualBox או VMWare בגלל שהם לא מאפשרים גישה למחשבים הכלליים (כמו KVM או XEN).
בנוסף, שמו לב שחלק מהפקטים perf עלולים להיות מוגבלים למשתמש ראש בהגדרה, שניתן להפעיל באמצעות:
# echo 0 > /proc/sys/kernel/perf_event_paranoid
אם ברצונך לכבות את מצב הפראנויד באופן קבוע, עידכן את ההגדרה הבאה בקובץ /etc/sysctl.conf.
kernel.perf_event_paranoid = 0
הסיסמאות
אחרי שת装置 perf, תוכל להתייחס לדף המנהג שלו עבור רשימת הסיסמאות הזמינות (אתם יכולים לחשוב על סיסמאות כאלטרנטים שפתוחים לחלון ספציפי למערכת). על מנת תוצאות טובות ומלאות יותר, תשתמש ב perf בתור רוט או דרך sudo.
רשימת ההתנהגויות של Perf
רשימת ההתנהגויות של Perf (בלי אפשרויות) מחזירה את כל סוגי הארועים הסימניים. אם רוצים להציג רשימת הארועים הזמינים בקטגוריה ספציפית, תהיו על לשים perf list אחרי שם הקטגוריה ([hw|sw|cache|tracepoint|pmu|event_glob]), כמו למשל:
רשימת הארועים הקדומים לתוכנה בלינוקס:
# perf list sw

Perf stat
perf stat מריצה פקודה ואוסף נתוני ביצועי הביצועים בלינוקס בזמן הביצוע של הפקודה הזו. מה שקורה במערכת שלנו כשאנחנו מבצעים dd?
# perf stat dd if=/dev/zero of=test.iso bs=10M count=1

הנתונים המוצגים למעלה מראים, בין אחרים, את הערימות של:
- הביצוע של הפקודה dd לקח את המחשבה העליונה ב-21.812281 מילישניות. אם אנחנו מחלקים את המספר
- בזמן ביצוע הפקודה, 15 החלפות קונטקסט (שנקראות גם החלפות תהליכים) מציינות שהמעבדים הוחלפו 15 פעמים מתהליך אחד (או תהליך נושא) לאחר.
- 2 העברות מעבד משוערת כאשר ב- CPU דו-ליבי העומס מחולק באופן שווה בין מספר הליבות.
במהלך זמן זה (21.812281 מילישניות), מספר סה"כ של מחזורי CPU שנצרכו היה 62,025,623, שחלוקה ב- 0.021812281 שניות נותנת 2.843 ג'יגה-הרץ. - אם נחלק את מספר המחזורים במספר ההוראות הכולל נקבל 4.9 מחזורים להוראה, שמשמעו שכל הוראה לקחה כמעט 5 מחזורי CPU להשלמה (בממוצע). אנו יכולים להאשים בזאת (לפחות בחלק) את מספר הענפים והפסקות ענפים (ראו למטה), שמסתיימים באסון או בשימוש לא נכון של מחזורי CPU.
- כאשר הפקודה בוצעה, נתקלו בסה"כ 3,552,630 ענפים. זהו הייצוג ברמת ה-CPU של נקודות החלטה ולופים בקוד. ככל שיש יותר ענפים, כך נמוך הביצועים. כדי לפצות לכך, כל המעבדים המודרניים מנסים לחזות את זרימת הקוד.51,348 פסקות ענפים מוכיחות שתכונת החיזוי הייתה שגויה 1.45% מהזמן.
העקרון זה נחל גם על איסוף נתונים (או במילים אחרות, פרופילינג) בעת הפעלת אפליקציה. פשוט הפעל את האפליקציה הרצויה ולאחר תקופת זמן סבירה (שבידיך) סגור אותה, ו- perf יציג את הנתונים במסך. על ידי ניתוח הנתונים אלה ניתן לזהות בעיות פוטנציאליות.
פרף טופ
perf top הוא דומה לפקודת top, בכך שהוא מציג פרופיל מערכת בזמן אמת (הידוע גם בשם ניתוח חי).
עם האפשרות -a
תוכל להציג את כל סוגי האירועים הידועים, ועם האפשרות -e
תוכל לבחור קטגורית אירוע מסוימת (כפי שמוחזר על ידי perf list):
יכול להציג את כל האירועים הקשורים למחזורים.
perf top -a
יכול להציג את כל האירועים הקשורים לשעון המעבד.
perf top -e cpu-clock

העמודה הראשונה בפלט לעיל מייצגת את אחוז הדוגמאות שנלקחו מהתחלת ההרצה, מקובצות לפי סמל הפונקציה ואובייקט השיתוף. ניתן למצוא אפשרויות נוספות ב־man perf-top.
Perf record
perf record מריץ פקודה ושומר את הנתונים הסטטיסטיים לתוך קובץ בשם perf.data בתיקיית העבודה הנוכחית. זה מריץ באופן דומה ל־perf stat.
הקלד perf record ואחריו פקודה:
# perf record dd if=/dev/null of=test.iso bs=10M count=1

Perf report
perf report מציג את הנתונים שנאספו ב־perf.data לדוח ביצועים:
# sudo perf report

כל אחת מהפקודות המשנות לעיל כוללת עמוד man מיועד שניתן להפעיל כך:
# man perf-subcommand
איפה תת-פקודה היא או רשימה, סטאטיסטיקה, מיטה, רשומה או דוח. אלו הם התת-פקודות הנפוצות ביותר; תת-פקודות אחרות מופיעות במסמך המסמך (ראה את סעיף הסיכום עבור הקישור).
סיכום
במדריך זה הצגנו לך את perf, כלי לניטור וניתוח ביצועים עבור לינוקס. אנחנו ממליצים בחום להתנגד לתיעוד שלו המתוחזק בhttps://perf.wiki.kernel.org.
אם מצאת יישומים שצורכים אחוז גבוה של משאבים, ניתן לשקול לשנות את קוד המקור או להשתמש באלטרנטיבות אחרות.
אם יש לך שאלות על מאמר זה או הצעות לשיפור, אנחנו כאן כדי להקשיב. תרגיש חופשי ליצור קשר עם הטופס התגובה למטה.
Source:
https://www.tecmint.com/perf-performance-monitoring-and-analysis-tool-for-linux/