مقدمه

به آخرین درس این دوره خوش آمدید! پس از بررسی دیسک و حافظه‌ی RAM، به سراغ مغز کامپیوتر، یعنی واحد پردازش مرکزی (CPU) می‌رویم. CPU مسئول اجرای تمام دستورالعمل‌ها و محاسبات در سیستم است. نظارت بر وضعیت CPU برای درک عملکرد کلی سیستم و تشخیص گلوگاه‌ها (bottlenecks) حیاتی است. یک پردازنده‌ی همیشه مشغول و تحت فشار، منجر به سیستمی کند و غیرپاسخگو خواهد شد.

در این درس، با مهم‌ترین معیار برای سنجش میزان «مشغولی» یک سیستم لینوکسی، یعنی میانگین بار (Load Average)، آشنا می‌شویم و یاد می‌گیریم که چگونه با ابزارهایی مانند uptime و top آن را تفسیر کرده و پراسس‌های پرمصرف را شناسایی کنیم.

درک مفهوم میانگین بار (Load Average)

مهم‌ترین نکته‌ای که در ابتدا باید بدانید این است: میانگین بار، معادل درصد استفاده از CPU نیست. این عدد، معیاری از تقاضا برای منابع پردازنده است. به بیان ساده‌تر، میانگین بار نشان‌دهنده‌ی تعداد پراسس‌هایی است که در صف اجرا قرار دارند (یا در حال اجرا هستند یا منتظر نوبت برای استفاده از CPU می‌باشند).

برای درک بهتر، یک پردازنده‌ی تک‌هسته‌ای را مانند یک پل تک‌بانده تصور کنید:

  • میانگین بار 0.00: هیچ ماشینی روی پل یا در صف انتظار نیست. جاده کاملاً خلوت است.
  • میانگین بار 1.00: پل دقیقاً در ظرفیت کامل خود کار می‌کند. ماشین‌ها بدون هیچ‌گونه تأخیری در حال عبور هستند.
  • میانگین بار بالاتر از 1.00: ترافیک ایجاد شده است! برای مثال، میانگین بار 2.50 یعنی به اندازه‌ی یک باند پل ماشین در حال عبور است و به اندازه‌ی ۱.۵ برابر ظرفیت پل، ماشین‌ها در صف انتظار هستند.

این مفهوم با تعداد هسته‌های CPU مقیاس‌پذیر است. در یک سیستم ۴ هسته‌ای، میانگین بار 4.00 به معنای استفاده‌ی کامل از تمام هسته‌هاست و میانگین بار بالاتر از 4.00 نشان‌دهنده‌ی وجود صف و فشار روی پردازنده‌هاست.

بررسی میانگین بار با دستور uptime

سریع‌ترین راه برای دیدن میانگین بار سیستم، استفاده از دستور uptime است. این دستور در یک خط، زمان فعلی، مدت زمان روشن بودن سیستم، تعداد کاربران وارد شده و سه عدد جادویی میانگین بار را نمایش می‌دهد.

$ uptime
11:45:10 up 2 days, 15:30,  1 user,  load average: 0.15, 0.08, 0.05

این سه عدد از چپ به راست، میانگین بار سیستم در ۱ دقیقه، ۵ دقیقه و ۱۵ دقیقه‌ی گذشته را نشان می‌دهند. این اعداد به ما یک روند را نشان می‌دهند. برای مثال، اگر عدد ۱ دقیقه بسیار بزرگتر از عدد ۱۵ دقیقه باشد، یعنی بار سیستم اخیراً به شدت افزایش یافته است.

نظارت زنده با top

دستور uptime یک عکس لحظه‌ای به ما می‌دهد، اما top یک فیلم زنده از وضعیت سیستم است. همانطور که در درس‌های قبل دیدیم، top پراسس‌ها را به صورت زنده نمایش می‌دهد. در بالای خروجی top، می‌توانید میانگین بار را مشاهده کنید.

مهم‌تر از آن، ستون %CPU در لیست پراسس‌ها به شما نشان می‌دهد که هر پراسس در همان لحظه چه درصدی از یک هسته‌ی CPU را به خود اختصاص داده است. این ستون به شما کمک می‌کند تا به سرعت پراسس‌هایی را که عامل ایجاد بار بالا بر روی سیستم هستند، شناسایی کنید.

دریافت اطلاعات دقیق پردازنده با lscpu

برای اینکه بتوانید میانگین بار سیستم خود را به درستی تفسیر کنید، ابتدا باید بدانید که سیستم شما چند هسته‌ی پردازنده دارد. دستور lscpu اطلاعات دقیقی در مورد معماری پردازنده‌ی شما ارائه می‌دهد. (این اطلاعات از فایل /proc/cpuinfo خوانده شده و به شکلی خواناتر نمایش داده می‌شود).

$ lscpu
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  2
Core(s) per socket:  2
Socket(s):           1
Vendor ID:           GenuineIntel
Model name:          Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz
...

مهم‌ترین خط در این خروجی برای تفسیر میانگین بار، خط CPU(s) است که تعداد کل هسته‌های منطقی را به شما نشان می‌دهد. در این مثال، با داشتن ۴ هسته، میانگین بار تا 4.00 قابل قبول است.

جمع‌بندی و پایان دوره

در این درس یاد گرفتیم که میانگین بار را به نسبت تعداد هسته‌های پردازنده بسنجیم، با uptime یک نگاه سریع به آن بیندازیم و با top عاملان ایجاد بار بالا را شناسایی کنیم.

تبریک! شما با موفقیت این دوره‌ی آموزشی را به پایان رساندید. شما این سفر را از یادگیری ساده‌ترین دستورات مانند ls و cd آغاز کردید و اکنون با مفاهیم پیشرفته‌ای مانند اسکریپت‌نویسی، مدیریت پراسس‌ها و منابع سیستم آشنا هستید. شما فلسفه‌ی لینوکس، یعنی استفاده از ابزارهای کوچک و قدرتمندی که در کنار هم کارهای بزرگ انجام می‌دهند را در عمل دیدید.

دنیای خط فرمان بسیار گسترده است، اما شما اکنون پایه‌ای محکم و دانشی عملی برای ادامه‌ی مسیر در اختیار دارید. به کاوش، تمرین و ساختن ابزارهای خود ادامه دهید. امیدواریم از این سفر لذت برده باشید!