הבנת עומסי טעינה ב-Linux וניטור ביצועי Linux

במאמר זה, נסביר אחת מהמשימות המנהליות המערכתיות הקריטיות ב-Linux – מעקב אחר ביצועים ביחס לעומס המערכת/CPU וממוצעי העומס.

לפני שנתקדם קדימה, בואו נבין שתי הביטויים החשובים הללו בכל מערכות דומות ל-Unix:

  • עומס מערכת/CPU – הוא מדידת התפעלות יתר או פחות של ה-CPU במערכת Linux; מספר התהליכים שמתבצעים על ידי ה-CPU או במצב הממתין.
  • ממוצע העומס – הוא הממוצע של העומס במערכת מחושב על פי תקופת זמן נתונה של 1, 5 ו-15 דקות.

ב-Linux, יש לאמות כי הממוצע של העומס נחשב באופן טכני לממוצע רץ של התהליכים בתור הרצה או בתור המניעה של הליבה (kernel);

שימו לב כי:

  • כל, אם לא רוב המערכות המופעלות על ידי Linux או מערכות דומות ל-Unix יציגו אולי את ערכי ממוצע העומס במקום מסוים למשתמש.
  • A downright idle Linux system may have a load average of zero, excluding the idle process.
  • רוב המערכות דומות ל-Unix מספרות רק תהליכים במצבים הרץ או הממתין. אבל זה אינו המקרה עם Linux, הוא כולל תהליכים במצבי שינה בלתי ניתנים להפסקה; אלה הממתינים למשאבים אחרים במערכת כמו פעולות קריאה/כתיבה של דיסק וכו'

כיצד לעקוב אחרי ממוצע העומס במערכת Linux

ישנם שיטות רבות לעקיבה אחרי ממוצע העומס במערכת כולל uptime שמציג כמה זמן המערכת פועלת, מספר המשתמשים יחד עם ממוצעי העומס:

$ uptime

07:13:53 up 8 days, 19 min,  1 user,  load average: 1.98, 2.15, 2.21

המספרים נקראים משמאל לימין, והפלט לעיל אומר:

  • ממוצע העומס לאחרונה 1 דקות הוא 1.98
  • ערכת העומס במשך ה-5 דקות האחרונות היא 2.15
  • ערכת העומס במשך ה-15 דקות האחרונות היא 2.21

ערכי עומס גבוהים מרמזים על עומס יתר; הרבה תהליכים ממתינים לזמן CPU.

נחשוף זאת בקטע הבא ביחס למספר ליבות CPU. בנוסף, נוכל גם להשתמש בכלים ידועים נוספים כמו top ו-glances שמציגים מצב רציף של מערכת Linux פועלת, וגם כלים נוספים רבים:

פקודת Top

$ top
Display Running Linux Processes
top - 12:51:42 up  2:11,  1 user,  load average: 1.22, 1.12, 1.26
Tasks: 243 total,   1 running, 242 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.4 us,  2.9 sy,  0.3 ni, 74.8 id,  4.6 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8069036 total,   388060 free,  4381184 used,  3299792 buff/cache
KiB Swap:  3906556 total,  3901876 free,     4680 used.  2807464 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 6265 tecmint   20   0 1244348 170680  83616 S  13.3  2.1   6:47.72 Headset                                                                                                                                        
 2301 tecmint    9 -11  640332  13344   9932 S   6.7  0.2   2:18.96 pulseaudio                                                                                                                                     
 2459 tecmint   20   0 1707692 315628  62992 S   6.7  3.9   6:55.45 cinnamon                                                                                                                                       
 2957 tecmint   20   0 2644644 1.035g 137968 S   6.7 13.5  50:11.13 firefox                                                                                                                                        
 3208 tecmint   20   0  507060  52136  33152 S   6.7  0.6   0:04.34 gnome-terminal-                                                                                                                                
 3272 tecmint   20   0 1521380 391324 178348 S   6.7  4.8   6:21.01 chrome                                                                                                                                         
 6220 tecmint   20   0 1595392 106964  76836 S   6.7  1.3   3:31.94 Headset                                                                                                                                        
    1 root      20   0  120056   6204   3964 S   0.0  0.1   0:01.83 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.10 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H   
....

כלי Glances

$ glances
Glances – Linux System Monitoring Tool
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic)                                                                                                                                               Uptime: 2:16:06

CPU      16.4%  nice:     0.1%                                        LOAD    4-core                                        MEM     60.5%  active:    4.90G                                        SWAP      0.1%
user:    10.2%  irq:      0.0%                                        1 min:    1.20                                        total:  7.70G  inactive:  2.07G                                        total:   3.73G
system:   3.4%  iowait:   2.7%                                        5 min:    1.16                                        used:   4.66G  buffers:    242M                                        used:    4.57M
idle:    83.6%  steal:    0.0%                                        15 min:   1.24                                        free:   3.04G  cached:    2.58G                                        free:    3.72G

NETWORK     Rx/s   Tx/s   TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0     525Kb   31Kb
lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command 
wlp2s0        0b     0b     14.6  13.3 2.53G 1.03G  2957 tecmint      0 S 51:49.10     0   40K /usr/lib/firefox/firefox 
                             7.4   2.2 1.16G  176M  6265 tecmint      0 S  7:08.18     0     0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O     R/s    W/s      4.9   3.9 1.63G  310M  2459 tecmint      0 R  7:12.18     0     0 cinnamon --replace
ram0           0      0      4.2   0.2  625M 13.0M  2301 tecmint    -11 S  2:29.72     0     0 /usr/bin/pulseaudio --start --log-target=syslog
ram1           0      0      4.2   1.3 1.52G  105M  6220 tecmint      0 S  3:42.64     0     0 /usr/lib/Headset/Headset 
ram10          0      0      2.9   0.8  409M 66.7M  6240 tecmint      0 S  2:40.44     0     0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11          0      0      2.9   1.8  531M  142M  1690 root         0 S  6:03.79     0     0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12          0      0      2.6   0.3 79.3M 23.8M  9651 tecmint      0 R  0:00.71     0     0 /usr/bin/python3 /usr/bin/glances
ram13          0      0      1.6   4.8 1.45G  382M  3272 tecmint      0 S  6:25.30     0    4K /opt/google/chrome/chrome 
...

ערכי העומס המוצגים על ידי כלים אלה נקראים מתוך קובץ /proc/loadavg, שניתן לצפות בו באמצעות פקודת cat כך:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

כדי לעקוב אחר ערכי העומס בפורמט גרפי, ניתן לבדוק: ttyload – מציג גרף בצבעים של ערכי עומס ב-Linux בטרמינל

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

הבנת ערך העומס הממוצע ביחס למספר המעבדים המרכזיים

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

מרובי-מעבד נגד מרובי-ליבות

  • מרובי-מעבד – הוא כאשר שני או יותר מעבדי CPU פיזיים משולבים במערכת מחשב יחידה.
  • מעבד מרובי-ליבות – הוא מעבד CPU פיזי אחד שיש לו לפחות שתיים או יותר ליבות נפרדות (או את אותן יחידות עיבוד שניתן גם להפנות אליהן כיחידות עיבוד) שעובדות במקביל. במובן של ליבה כפולה יש שתי יחידות עיבוד, ליבה רב-ליבות יש 4 יחידות עיבוד וכן הלאה.

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

בהיפר-טרידינג, ליבת מעבד פיזית אחת מופיעה כשתי ליבות מעבד לוגיות למערכת ההפעלה (אך במציאות יש רכיב חומרה פיזי אחד).

שימו לב שליבת מעבד פיזית אחת יכולה לבצע רק משימה אחת בכל פעם, לכן טכנולוגיות כגון מעבדים/מעבדים מרובים, מעבדי ליבה מרובים והיפר-טרידינג הובאו לחיים.

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

כדי למצוא את מספר היחידות עיבוד הזמינות במערכת, ניתן להשתמש בפקודות nproc או lscpu כדלקמן:

$ nproc
4

OR
lscpu

אופן נוסף למציאת מספר יחידות עיבוד באמצעות פקודת grep כפי שמוצג.

$ grep 'model name' /proc/cpuinfo | wc -l

4

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

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
על מערכת עם ליבה אחת זה יהיה אומר:
  • המעבד היה בשימוש מלא (100%) בממוצע; תהליכים אחדים רצים על המעבד (1.00) במשך הדקה האחרונה.
  • המעבד היה במצב פנוי ב-60% בממוצע; אין תהליכים הממתינים לזמן מעבד (0.40) במשך חמש הדקות האחרונות.
  • המעבד היה מוטעה ב-235% בממוצע; 2.35 תהליכים הממתינים לזמן מעבד (3.35) במשך חמישה עשר דקות האחרונות.
על מערכת עם שתי ליבות זה יהיה אומר:
  • הליבה האחת הייתה פנויה ב-100% בממוצע, ליבה אחת הייתה בשימוש; אין תהליכים הממתינים לזמן מעבד (1.00) במשך הדקה האחרונה.
  • הליבות היו במצב פנוי ב-160% בממוצע; אין תהליכים הממתינים לזמן מעבד. (0.40) במשך חמש הדקות האחרונות.
  • הליבות היו מוטעות ב-135% בממוצע; 1.35 תהליכים הממתינים לזמן מעבד. (3.35) במשך חמישה עשר דקות האחרונות.

כדאי גם לך:

  1. 20 כלים לשורת פקודה לניטור ביצועי Linux – חלק 1
  2. 13 כלים לניטור ביצועי Linux – חלק 2
  3. פרפ – כלי לניטור וניתוח ביצועים עבור Linux
  4. Nmon: ניתוח וניטור ביצועי מערכת Linux

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

Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/