[ad_1]
تسک بیشتر، سرعت پایینتر! این یک قانون نانوشته است. فرقی نمیکند صحبت از یک کارمند باشد یا قطعهای الکترونیکی. مسلماً هرچقدر وظایف بیشتر باشند، سرعت رسیدگی به آنها و در نتیجه سرعت کل مجموعه کاهش پیدا میکند.
CPU Load Average برای سرور لینوکس هم چنین مفهومی دارد. CPU پردازشگر مرکزی سرور است که وظیفه انجام فرایندهای محاسباتی را دارد. با محاسبه این پارامتر، میتوان فهمید که سرعت کلی پردازش در سرور چگونه است.
اگر دوست داشته باشید میتوانید مقاله CPU چیست را بخوانید.
در این مقاله میخواهیم ببینیم چطور میتوان این پارامتر را به دست آورد و بهترین حالت چه چیزی است؟ قبل از هرچیز باید با System Load آشنا باشیم.
System Load چیست؟
منظور از System Load، فرایندهای محاسباتیای هستند که داخل هسته کرنل سرور لینوکسی در حال انجام شدن هستند. (البته این اصطلاح فقط مربوط به لینوکس نیست و شامل تمام سیستمعاملهای مبتنی بر یونیکس میشود.)
همانطور که میدانید، برخی از این پردازشها سبک هستند و برخی دیگر فشار زیادی به دستگاه وارد میکنند؛ اما بنا به دلایلی، برای محاسبه میزان بار وارده بر سیستم، به میانگین این فرایندهای محاسباتی یا همان System Load نیاز داریم.
چرا میانگین مهم است؟
نوسانات زیادی در تعداد System Loadها وجود دارد. ممکن است سرور در یک ثانیه درگیری دهها فرایند مختلف باشد و فقط چند ثانیه بعد کاملاً بیکار! به همین دلیل است که مقدار میانگین اهمیت بیشتری دارد.
اینجا به مفهوم Load Average یا بار میانگین میرسیم.
منظور از CPU Load Average چیست؟
به میانگین تمام System Loadهای یک سرور لینوکس در یک بازه زمانی مشخص، CPU Load Average میگویند.
همانطور که میدانید، CPU پردازشگر سیستم محسوب میشود و مسئولیت رسیدگی به فرایندهای پردازشی را دارد. به همین خاطر، Load Average هم مربوط به این قطعه است.
برای به دست آوردن Load Average یک سرور لینوکسی باید از دستور Uptime یا Top استفاده کرد. سپس پاسخی در قالب ۳ عدد به شما نمایش داده خواهد شد:
Load average: ۱.۵۰, ۰.۷, ۲.۰ |
عدد اول میانگین را در بازه زمانی ۱ دقیقه، عدد دوم میانگین را در بازه زمانی ۵ دقیقه و عدد سوم میانگین را در بازه زمانی ۱۵ دقیقه نشان میدهند.
بهطور کلی، هرچقدر اعداد کوچکتر باشند، سرور هم سریعتر است ؛ چراکه فرایندها هم سریعتر انجام میشوند.
قبل از اینکه راجع به مقادیر این پارامتر صحبت کنیم، باید به یک سوال بسیار مهم پاسخ دهیم:
تعداد هستهها اهمیت دارد یا تعداد CPU؟
هر هسته در CPU، توانایی رسیدگی به یک فرایند در آن واحد را دارد؛ پس اگر مجموع هستههای موجود در سیستم عدد ۸ باشد، سیستم میتواند بهصورت همزمان به ۸ درخواست رسیدگی کند!
توجه کنید که حرفی از تعداد CPUها نزدیم؛ یعنی اگر دستگاه تنها یک CPU با ۴ هسته داشته باشد، توانایی بیشتری نسبت به دستگاهی دیگر با دو CPU تکهستهای دارد.
نکته: در مواقعی که با کمک تکنولوژی مجازیسازی یک هسته به دو یا چند هسته تقسیم میشود، هرکدام از آنها میتوانند مسئولیت یک تسک را بهصورت جداگانه برعهده بگیرند.
بنابراین، مجموع تعداد هستههای پردازشگر در یک سیستم، مهمتر از تعداد CPUها است.
اگر میخواهید از تعداد هستههای موجود در سرور مطلع شوید، از دستور زیر کمک بگیرید:
همانطور که بالاتر هم گفتیم، پس از اجرای یکی از دو دستور لازم برای دریافت CPU Load Average، سه عدد بهعنوان خروجی نمایش داده خواهند شد. ۳ عددی که میانگین را در سه بازی زمانی یک، پنج و پانزده دقیقه نشان میدهند.
فرض میکنیم اعدادی که نمایش داده میشوند به شرح زیر هستند:
Load average: ۰.۰۹, ۰.۰۵, ۰.۰۱ |
حالا میخواهیم معنای این اعداد را در دو حالت مختلف بررسی کنیم. اولین حالت زمانی است که فقط یک پردازشگر تکهستهای در سرور موجود باشد.
وقتی پردازشگر تکهستهای باشد
اگر موافق باشید تشبیه کنیم. تکهستهای که وظیفه رسیدگی به فرایندها را دارد، در نقش صندوق یک فروشگاه است. افرادی که با خریدهایشان به این صندوق مراجعه میکنند، همان فرایندهای مختلفی هستند که باید توسط پردازشگر به آنها رسیدگی شود.
وقتی فقط یک صندوق وجود داشته باشد یا پردازشگر تکهستهای باشد (مثل این مثال)، تمام فرایندها باید به آن مراجعه کنند.
در این حالت، عدد ۱.۰۰ بهمعنای استفاده از ۱۰۰ درصد ظرفیت پردازشگر است؛ یعنی متصدی صندوق با نهایت توان در حال محاسبه خرید هر مشتری است. صف کوتاهی هم شکل گرفته است که هرچند کند، اما در حال جلو رفتن است!
اعداد کوچکتر از ۱.۰۰ این معنا را میرسانند که فقط بخشی از ظرفیت پردازشگر در حال استفاده است. مثلاً اگر عدد ۰.۵ را مشاهده میکنید، یعنی فقط ۵۰ درصد از توان آن هسته درگیر است؛ به عبارت دیگر، صندوقدار نیمی از زمان کارش را در استراحت به سر میبرد.
اما اعداد بزرگتر از ۱.۰۰، نوعی خطر محسوب میشوند! یعنی تعداد فرایندها، بیشتر از توان رسیدگی هسته هستند و همین موضوع منجر به کندی سرور میشود. اگر بخواهیم به مثال صندوق فروشگاه رجوع کنیم، صندوقدار را در حال کار با تمام توان میبینیم و در عین حال صفی که منتظر رسیدن نوبتشان هستند. (همان فرایندهایی که در صف رسیدگی هستند).
حالا اگر یک پردازشگر ۴ هستهای داشته باشیم چه میشود؟
وقتی پردازشگر ۴ هستهای باشد
زمانی که پردازشگر ۴ هسته داشته باشد، درست مثل این است که بهجای ۱ صندوق، ۴ صندوق در حال رسیدگی به مشتریان باشند.
در چنین حالتی، عدد ۴.۰۰ استفاده از ۱۰۰ درصد ظرفیت را نشان میدهد؛ یعنی چهار صندوقدار در حال خدمترسانی هستند و صف کوتاهی از مشتریان هم وجود دارد؛ صندوقدارها (هستهها) هم فرصت سر خاراندن ندارند و دائماً در حال کار هستند.
در این شرایط، اعداد کوچکتر از ۴.۰۰، سبکتر بودن کار هستهها را نشان میدهند و اعداد بزرگتر از آن، تحت فشار بودن آنها و در نتیجه کندی سرور را!
نکته: با اینکه استفاده از ظرفیت ۱۰۰ درصد هم در سرعت سرور تاثیر آنچنانی ندارد، اما بهتر است عدد خروجی، نشاندهنده درگیری ظرفیت کمتری باشد. به این ترتیب، اگر احیاناً موقعیت غیرمنتظرهای پیش بیاید، فضای جداگانهای برای آن وجود خواهد داشت.
اما خب اهمیت هرکدام از این اعداد هم با یکدیگر متفاوت است.
کدامیک از اعداد CPU Load Average مهمتر هستند؟
عدد دوم و سوم! از آنجایی که این دو عدد میانگین بار سیپییو در ۵ دقیقه و ۱۵ دقیقه گذشته را نشان میدهند، تصویر کلیتری از عملکرد سرور در اختیارتان میگذارند.
بگذارید اینطور بگوییم:
گاهی ممکن است بسته به سنگینی یکی از فرایندها، عدد اول که میانگین دقیقه آخر را نشان میدهد از ظرفیت حداکثری بیشتر شود!
این اتفاق به این خاطر میافتد که ممکن است یکی از فرایندها بهقدری بزرگ باشد که بخش زیادی از توان CPU را درگیر کند. سپس پس از رسیدگی به آن، باقی فرایندها اندازه معقولی داشته باشند و همهچیز طبق روال پیش رود.
اما اگر عدد دوم و سوم اعدادی بیش از ظرفیت را نشان میدهند، باید بلافاصله مشکل را پیدا و آن را برطرف کنید؛ چراکه احتمالاً تعداد و اندازه بسیاری از فرایندها بیشتر از توان محاسباتی سیستم است.
سخنان پایانی
رصدن کردن و مانیتورینگ دائم CPU Load Average برای سرورهای لینوکس یک ضرورت است. با این کار میتوان هم مشکلات کنونی را شناسایی و هم وقوع مشکلات احتمالی را پیشبینی کرد.
همانطور که در مقاله هم گفتیم، هر هسته از پزدازشگرهای سرور فقط میتواند یک فرایند را در آن واحد پردازش کند. به همین خاطر، زیاد شدن تسکها (مخصوصاً وقتی بیشتر از تعداد هستهها باشند) منجر به کندی سرور خواهد شد.
برای تهیه این مقاله از سایتهای Site24x7، TecMint و بلاگ AppSignal کمک گرفتهایم.
با فرستادن این مقاله برای دوستانتان، ما را در انتشار گستردهتر آن یاری کنید.
با تشکر از همراهیتان.
[ad_2]