להבין את ממוצע העומס (Load Average)

בודאי יצא לכם להיתקל באנשי IT או תמיכה פולטים "המכונה עמוסה, תסתכל על ה-Load Average!", או לראות את ה-Load Average על המחשב הביתי שלכם, ולא בדיוק להבין מה משמעות המספרים. אם לא שמעתם על Load Average מעולם, אלה הם אותם שלושה מספרים שמתקבלים כפלט לפקודה "uptime":

$ uptime
 00:46:59 up 15:39,  2 users,  load average: 0.24, 0.12, 0.10

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

אז מה זה בעצם Load Average? ממה מורכבים הערכים? כדי להבין את זה, קודם צריך להבין מה מחזירה הפקודה. שלושת הערכים הם ממוצע העומס בפרקים של דקה, 5 דקות ו-15 דקות בהתאמה.

משתנה העומס מחושב כממוצע התהליכים שהם ברי הרצה (מחכים לזמן CPU), תהליכים שבריצה כרגע ותהליכים שמחכים לסיום פעולת כלשהיא (Uninterpretable sleep), בד"כ פעולת IO (דיסק או רשת). חשוב לדעת, כי לחישוב לא נכנסים כמות המעבדים במערכת. כלומר, שרת עם Load Average של 1, אומר שמעבד אחד (בממוצע) פעיל כל הזמן. בשרת עם מעבד אחד, זו מערכת עמוסה, בשרת עם 4 מעבדים, המערכת עובדת ב-75% (בממוצע כמובן)

מה זה אומר אם יש לשרת Load Average גבוהה? בכלליות, זהו סימן שהשרת לא מצליח להתמודד עם דרישת התהליכים הרצים עליו לזמן CPU. הגורמים יכולים להיות רבים: יותר מדי תהליכים רעבי CPU, יותר מדי IO, למשל בגישה ל-swap ועוד.

כדי ל"אבחן" את סיבת העומס, ניתן להשתמש בפקודה top. רוב המידע שנצטרך נמצא בראש המסך:

top - 08:56:53 up 41 min,  2 users,  load average: 0.09, 0.10, 0.15
Tasks: 166 total,   1 running, 165 sleeping,   0 stopped,   0 zombie
Cpu(s):  3.2%us,  0.9%sy,  0.0%ni, 92.3%id,  3.0%wa,  0.2%hi,  0.4%si,  0.0%st
Mem:   5966228k total,  4111868k used,  1854360k free,    67016k buffers
Swap:  8060924k total,        0k used,  8060924k free,  2916392k cached

באופן כללי, אם הערכים של us או sy גבוהים, המערכת כנראה עמוסה בתהליכים רעבי CPU. במידה והערך wa גבוהה באופן קבוע, כנראה שמערכת עסוקה בהרבה I/O. את המשך האבחון אפשר לעשות בעזרת:

  1. שאר המידע ב-top
  2. כלים כמו iostat, vmstat
  3. ps

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

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

 

 

This entry was posted in linux and tagged , , . Bookmark the permalink.

כתיבת תגובה

האימייל שלך לא יוצג באתר. (*) שדות חובה מסומנים

*

תגי HTML מותרים: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">