في هذا المقال، سنشرح إحدى المهام الحرجة في إدارة نظام 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
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
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) خلال الدقائق الخمس عشرة الأخيرة.
قد تعجبك أيضًا:
- 20 أداة سطر أوامر لمراقبة أداء نظام Linux – الجزء 1
- 13 أداة لمراقبة أداء Linux – الجزء 2
- أداء – أداة مراقبة وتحليل الأداء لنظام Linux
- Nmon: تحليل ومراقبة أداء نظام Linux
في الختام، إذا كنت مسؤول نظام حاسوب فإن المتوسطات العالية للحمولة هي شيء حقيقي يجب القلق منه. عندما تكون مرتفعة، فوق عدد أنوية وحدة المعالجة المركزية، فإن ذلك يدل على طلب عالي لوحدات المعالجة المركزية، والمتوسطات المنخفضة للحمولة تحت عدد أنوية وحدة المعالجة المركزية تخبرنا بأن وحدات المعالجة المركزية تعمل بشكل غير فعال.
Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/