فهم متوسطات التحميل في نظام Linux ومراقبة أداء Linux

في هذا المقال، سنشرح إحدى المهام الحرجة في إدارة نظام Linux – مراقبة الأداء فيما يتعلق بحمل النظام/CPU ومتوسطات الحمل.

قبل أن نتقدم أكثر، دعونا نفهم هاتين العبارتين المهمتين في جميع أنظمة Unix-like:

  • حمل النظام/حمل الـ CPU – هو قياس لزيادة أو نقص في استخدام وحدة المعالجة المركزية في نظام Linux؛ عدد العمليات التي يتم تنفيذها بواسطة وحدة المعالجة المركزية أو في حالة الانتظار.
  • متوسط الحمل – هو متوسط حمل النظام المحسوب على مدى فترة زمنية معينة من 1، 5 و 15 دقيقة.

في Linux، يعتقد تقنياً أن متوسط الحمل هو متوسط تشغيل العمليات في طابور التنفيذ (kernel) والتي تم وضع علامة عليها كتشغيلية أو غير قابلة للانقطاع.

يرجى ملاحظة:

  • جميع الأنظمة التي تعمل بنظام Linux أو غيرها من أنظمة Unix-like ستظهر على الأرجح قيم متوسط الحمل في مكان ما للمستخدم.
  • A downright idle Linux system may have a load average of zero, excluding the idle process.
  • تعتبر جميع أنظمة Unix-like فقط العمليات في حالة التشغيل أو الانتظار. ولكن هذا ليس الحال مع Linux، حيث يتضمن العمليات في حالات السبات غير القابلة للانقطاع؛ تلك التي تنتظر موارد النظام الأخرى مثل إدخال/إخراج القرص الصلب وما إلى ذلك.

كيفية مراقبة متوسط حمل النظام في Linux

هناك طرق عديدة لمراقبة متوسط حمل النظام بما في ذلك uptime الذي يظهر مدى زمن تشغيل النظام، عدد المستخدمين معاً مع متوسطات الحمل:

$ uptime

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

يتم قراءة الأرقام من اليسار إلى اليمين، والناتج أعلاه يعني أن:

  • متوسط الحمل خلال الدقيقة الأخيرة هو 1.98
  • المتوسط ​​المرتفع على مدى آخر 5 دقائق هو 2.15
  • المتوسط ​​المرتفع على مدى آخر 15 دقيقة هو 2.21

المتوسطات المرتفعة تعني أن النظام محمل بشكل زائد؛ هناك العديد من العمليات في انتظار وقت وحدة المعالجة المركزية.

سنكشف عن هذا في القسم التالي فيما يتعلق بعدد أنوية وحدة المعالجة المركزية. بالإضافة إلى ذلك، يمكننا أيضًا استخدام أدوات معروفة أخرى مثل 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 command كما هو موضح أدناه:

$ cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

لمراقبة المتوسطات المرتفعة بتنسيق رسم بياني، تحقق من: ttyload – يعرض رسم بياني ملون للمتوسط ​​المرتفع لنظام Linux في الطرفية

على أجهزة سطح المكتب، هناك أدوات واجهة مستخدم رسومية يمكننا استخدامها لعرض متوسطات الحمل على النظام.

فهم المتوسط ​​النظامي للحمل بالنسبة لعدد وحدات المعالجة المركزية

لا يمكننا شرح حمل النظام أو أداء النظام من دون إلقاء الضوء على تأثير عدد أنوية وحدة المعالجة المركزية على الأداء.

متعدد المعالجات مقابل متعدد النوى

  • متعدد المعالجات – حيث يتم دمج معالجات معددة اثنتان أو أكثر في نظام كمبيوتر واحد.
  • معالج متعدد النوى – هو معالج مادي واحد يحتوي على ما لا يقل عن نواتين أو أكثر منفصلتين (أو ما يمكننا أيضًا الإشارة إليها بوحدات معالجة) تعمل بشكل متواز. مما يعني أن لديه نواة ثنائية النواة تحتوي على وحدتي معالجة، ولديه رباعية النواة تحتوي على 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/