بررسی لود سرور در گنو/لینوکس

لود سرور عاملی است که در صورت بررسی و مانیتورینگ دایم و مناسب آن و بالانس نگه داشتن درستش باعث میشه منابع سیستم در بهترین حالت مورد استفاده قرار بگیرن و بتونیم حداکثر توان سیستم رو به خوبی بکار بگیریم که رعایت این اصل مهم باعث جلوگیری از اتلاف انرژی و صرفه جویی در هزینه هامون میشه. در این پست در مورد لود سرورهای گنو/لینوکس صحبت میکنیم.

لود سیستم یا لود CPU چیه؟

اندازه گیری میزان مصرف پردازنده(CPU) توسط پردازه(Process) های مختلف سیستم رو لود میگن که این اندازه گیری در لینوکس برای تمام پردازه های “در حال اجرا”، “منتظر اجرا شدن”، “در وضعیت خواب” و “منتظر ورودی/خروجی” محاسبه می شود. این محاسبه در فواصل دوره ای 1, 5, 15 دقیقه در سیستم قابل نمایش است که به آن میانگین لود یا load average میگویم. با بدست آوردن این میانگین میتوان متوجه شد که پردازنده در زمان مناسب پردازه ها را پردازش نموده و پردازه ها برای اجرا شدن بیش از حد معقول منتظر پردازنده نمانده اند.

به طور کلی وضعیت استفاده از توان سیستم در 3 حالت خلاصه می شود:

1- استفاده کمتر از توان سیستم = اتلاف انرژی و هزینه

2- استفاده معقول از توان سیستم = مصرف بهینه

3- استفاده بیش از توان سیستم = فشار و کاهش کیفیت

چطوری لود سیستم رو بدست بیاریم؟

دستور uptime رو روی سیستمتون اجرا کنید.

این دستور چنین خروجی خواهد داشت:

17:34:38 up  7:42,  1 user,  load average: 0.84, 0.89, 0.80

اگر به 3 عدد روبروی load average نگاه کنید به ترتیب لود سیستم در فاصله های زمانی 1 دقیقه، 5 دقیقه و 15 دقیقه را خواهید دید که این اعداد بیانگر میزان مصرف توان پردازشی سیستم در فواصل زمانی گفته شده را نشان می دهند که در یک سیستم “یک پردازنده، یک هسته، یک نخ(Thread)” معنای این اعداد به شرح زیر خواهد بود:

مقدار x<1: پردازه ها کمتر از توان پردازشی سیستم از CPU استفاده کرده اند.

مقدار x=1: پردازه ها بدون انتظار برای پردازش از حداکثر توان سیستم استفاده می کنند.

مقدار x>1: پردازه ها برای پردازش توسط CPU مدتی در انتظار مانده اند.

به عنوان مثال در نمونه بالا پردازه ها در 1, 5, 15 دقیقه گذشته کمتر از توان پردازنده از CPU استفاده نموده اند و همچنین برای پردازش منتظر CPU نمانده اند.

load average

چه عددی برای load average مناسب است؟

محاسبه عدد مناسب load یا load average به تجربه شما و سرویس های فعال سیستم شما بستگی دارد ولی به طور کلی میتوان برای بالانس مناسب “کمی بیشتر از 2/3” را در نظر گرفت. به عنوان مثال در یک سیستم “یک پردازنده، یک هسته، یک نخ(Thread)” عدد 0.7 بهترین گزینه است. در این حالت پردازه ها به خوبی از توان سیستم استفاده می کنند و در زمان مواجه شدن با وضعیت بحران پردازشی نیز سیستم overload نخواهد شد و پردازه ها در وضعیت انتظار قرار نمی گیرند.

اگر چند پردازنده داشته باشیم چطوریه؟

تفاوت نداره شما یک پردازنده 8 هسته ای داشته باشید یا 2 پردازنده 4 هسته ای! چون شما در نهایت 8 واحد پردازشی در سیستم خودتون دارید که میتونه به صورت مجزا و همزمان دستورات رو اجرا کنه. در سیستم هایی که پردازنده چند نخ یا Thread داره هم همین داستان صدق میکنه. برای اینکه ببینید سیستم تون چند واحد پردازشی داره می تونید از دستورات زیر استفاده کنید:

# nproc
8
# grep 'model name' /proc/cpuinfo | wc -l
8

با فرض اینکه سیستم شما 8 واحد پردازشی داشته باشه، load average کمتر از 8 یعنی همه چیز خوبه و پردازه ها در انتظار قرار نگرفتن. حالا به مثال زیر توجه کنید تا تفاوت اون برای یک سیستم با 1 واحد پردازشی و یک سیستم با 8 واحد پردازشی رو به خوبی درک کنید.

18:31:25 up  8:39,  1 user,  load average: 1.03, 9.22, 3.04

محاسبه برای سیستم با 1 واحد پردازنده:

در 1 دقیقه: “1.03” کمی بیشتر از توان پردازشی سیستم(1)

در 5 دقیقه: “9.22” حدود 9 برابر بیشتر از توان پردازشی سیستم(1)

در 15 دقیقه: “3.04” حدود 3 برابر بیشتر از توان(1)

محاسبه برای سیستم با 8 واحد پردازنده:

در 1 دقیقه: “1.03” حدود 1/8 توان سیستم(8)

در 5 دقیقه: “9.22” کمی بیشتر از توان پردازشی سیستم(8)

در 15 دقیقه: “3.04” کمتر از توان پردازشی(8)

چطوری بالانس مناسب ایجاد کنیم؟

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

بیشتر بهش توجه کنید! 😎

نظرات و تجربیات خوبتون رو برام کامنت کنید. 😉

موفق و پیروز باشید.

14

4 دیدگاه

  1. سلام. مطلب خوبی بود. منبعی برای load average بهینه که تقریبا بیشتر از ۲/۳ در نظر گرفته شده وجود داره یکم بیشتر مطالعه کنم ؟‌

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *