” برای شروع توضیحی در مورد این مفهوم، مثال فوق را درنظر بگیرید.. تصور کنید شما به عنوان یک مدیرعامل کارمندی دارید که باید چند وظیفه مختلف را به سرانجام برساند. مطمئنا این موضوع بر کیفیت امور انجام شده تاثیر میگذارد. اگر از کیفیت این موضوع نیز چشم پوشی کنیم، سرعت رسیدگی به اموری که برعهدهی آن فرد است نیز کاهش مییابد. این کاهش سرعت میتواند برروی عملکرد کل تیم شما نیز تاثیر بگذارد. حال این موضوع را برای قطعهای الکترونیکی در نظر بگیرید! CPU Load Average در سرور لینوکس نیز چنین مفهومی دارد. با آشنایی با این مفهوم می توانید وضعیت کلی سرورهای خود را مورد ارزیابی قرار دهید و متوجه شوید که به صورت کلی چه باری روی سرور شما می باشد. این پارامتر می تواند در اثر اجرای اسکریپت های تحت سرور و یا بدافزارهای مخرب روی سرور شما بالا رفته و سبب جوب داون شدن سرور شما شود. “
|
System Load چیست؟
منظور از System Load، فرایندهای محاسباتیای هستند که داخل هسته کرنل سرور لینوکسی درحال انجام شدن می باشند.
همانطور که میدانید، برخی از این پردازشها سبک هستند و برخی دیگر فشار زیادی به دستگاه وارد میکنند؛ اما بنا به دلایلی، برای محاسبه میزان بار وارده بر سیستم، به میانگین این فرایندهای محاسباتی یا همان System Load نیاز داریم.
نوسانات زیادی در تعداد System Loadها وجود دارد. ممکن است سرور در یک ثانیه درگیر دهها فرایند مختلف باشد و فقط چند ثانیه بعد کاملاً بیکار! به همین دلیل مقدار میانگین اهمیت دارد.
مفهوم CPU Load Average در سیستم عامل لینوکس
” Load Average یا به عبارت دیگر (میانگین بار)، میانگین تمام System Loadهای یک سرور لینوکسی در یک بازه زمانی مشخص است. “
|
همانطور که میدانید، CPU پردازشگر سیستم محسوب میشود و مسئولیت رسیدگی به فرایندهای پردازشی را دارد. به همین خاطر، Load Average هم مربوط به این قطعه است.
” Load average در حقیقت، بار اندازه گیری شده متوسط سیستم در دوره های زمانی ۱ دقیقه، ۵ دقیقه و ۱۵ دقیقه می باشد. “
|
نحوه بررسی میزان Load Average سیستم لینوکس
برای دریافت محاسبات و فرآیندها می توان از دو دستور Uptime یا Top استفاده کرد.
با اجرای این دستور ما سه عدد دریافت می کنیم، اعداد نمایش داده شده میانگین را در بازههای زمانی مختلفی نشان میدهند:
- عدد اول میانگین را در بازهی زمانی یک دقیقه
- عدد دوم میانگین را در بازه زمانی ۵ دقیقه
- عدد سوم میانگین را در بازه زمانی ۱۵ دقیقه
نکتهای که باید در مورد این اعداد بدانید این است که هرچه اعداد کوچکتر باشند، سرور شما هم سریعتر است. دلیل این امر این است که فرآیندهای شما نیز سریعتر انجام میشوند.
کدامیک از اعداد CPU Load Average مهمتر هستند؟
عدد دوم و سوم از آنجایی که میانگین بار CPU در ۵ دقیقه و ۱۵ دقیقه گذشته را نشان میدهند، تصویر کلیتری از عملکرد سرور در اختیارتان میگذارند. گاهی ممکن است بسته به سنگینی یکی از فرایندها، عدد اول که میانگین دقیقه آخر را نشان میدهد از ظرفیت حداکثری بیشتر شود.
این اتفاق به این خاطر میافتد که ممکن است یکی از فرایندها بهقدری بزرگ باشد که بخش زیادی از توان CPU را درگیر کند. سپس پس از رسیدگی به آن، باقی فرایندها اندازه معقولی داشته باشند و همهچیز طبق روال پیش رود.
اما اگر عدد دوم و سوم اعدادی بیش از ظرفیت را نشان میدهند، باید بلافاصله مشکل را پیدا و آن را برطرف کنید؛ چراکه احتمالاً تعداد و اندازه بسیاری از فرایندها بیشتر از توان محاسباتی سیستم است.
در این فرایند تعداد هستهها اهمیت دارد یا تعداد CPU
هر هسته در CPU، توانایی رسیدگی به یک فرایند در آن واحد را دارد؛ پس اگر مجموع هستههای موجود در سیستم عدد ۸ باشد، سیستم میتواند بهصورت همزمان به ۸ درخواست رسیدگی کند.
توجه کنید که حرفی از تعداد CPUها نزدیم؛ یعنی اگر دستگاه تنها یک CPU با ۴ هسته داشته باشد، توانایی بیشتری نسبت به دستگاهی دیگر با دو CPU تکهستهای را دارد.
” در مواقعی که با کمک تکنولوژی مجازیسازی یک هسته به دو یا چند هسته تقسیم میشود، هرکدام از آنها می توانند مسئولیت یک تسک را بهصورت جداگانه برعهده بگیرند. بنابراین، مجموع تعداد هستههای پردازشگر در یک سیستم، مهمتر از تعداد CPUها است. “
|
اگر میخواهید از تعداد هستههای موجود در سرور مطلع شوید، از دستور زیر کمک بگیرید:
cat /proc/cpuinfo |
با این دستور اطلاعات مربوط به پردازنده سیستم خود را دریافت می کنید.
روش هایی برای کنترل Load Average بالا در سیستم عامل لینوکس
دلایل زیادی برای افزایش میانگین بار وجود دارد که وجود فراینده های آماده زیاد، بالا بودن درخواست ورودی/خروجی و کمبود حافظه از مهم ترین آنها هستند. برای کنترل کردن این مسئله می توانید روش های زیر را امتحان کنید:
۱) فرآیندهایی که باعث بار اضافی می شوند را شناسایی کنید
برای این کار می توانید از همان دستور Top استفاده کنید. این دستور تمام فرآیندهایی که درحال حاضر در سیستم یا سرور لینوکس اجرا می شوند را نشان می دهد و شما با بررسی دقیق آنها می توانید متوجه شوید که هر کدام آنها از چه مقدار CPU استفاده می کنند. بعد می توانید با دستوراتی مثل kill هر فرایندی که باعث بار اضافی CPU می شود را متوقف کنید:
kill <pid> pid : آی دی یک فرآیند خاص است. |
۲) سخت افزار خود را ارتقاء دهید
افزایش تعداد هسته های CPU و میزان حافظه رم باعث افزایش قدرت پردازشی سیستم می شود. با یک سیستم قدرتمند، فرآیندها به صورت یکنواخت توزیع می شوند و این باعث پایین آمدن Load Average و بهبود عملکرد CPU می شود.
۳) مانیتور سیستم را فراموش نکنید
اگر بتوانید مدام عملکرد سیستم را نظارت داشته باشید، مطمئناً در شناسایی فرآیندهایی که منابع زیادی را مصرف می کنند، سریع تر خواهید بود. atop htop ،top و iotop از جمله ابزارهایی هستند که برای نظارت عملکرد سیستم استفاده می شوند.
۴) اولویت فرآیندها را تنظیم کنید
امکان ندارد که همه فرآیندها به یک اندازه مهم باشند پس بهترین کاری که می توانید انجام دهید این است که فرآیندها را بر اساس اولویتشان ترتیب بندی کنید تا CPU مدت زمان بیشتری در اختیار آنها قرار دهد. برای این کار می توانید از دستورات nice و renice استفاده کنید.
۵) وضعیت شبکه را بررسی کنید
اگر Load Average سرور شما بالا است می توانید با استفاده از دستور netstat تمام شبکه های متصل به سرور را شناسایی کنید. بالا بودن تعداد اتصالات هم می تواند بار اضافی سرور را افزایش دهد و باعث ایجاد تاخیر شود.
۶) منابع اختصاص یافته به فرآیندها را کنترل کنید
استفاده انحصاری چند فرآیند پرمصرف از منابع سیستم یکی از دلایل Load Average بالا است پس برای جلوگیری از این مسئله می توانید از دستور cgroups استفاده کنید. این دستور برای محدود کردن مقدار منابع مورداستفاده فرآیند یا گروهی از فرآیندها به کار می رود.
۷) فرآیندهای کرش شده را مجدداً راه اندازی کنید
فرآیندهایی که دچار کرش شده اند یا دیگر پاسخگو نیستند، بدون اینکه کار مفیدی انجام دهند باعث بالا رفتن میانگین بار می شوند. در وهله اول، کاری که باید انجام دهید این است که با استفاده از system یا هر ابزار مدیریت فرآیند دیگر، این فرآیندها را دوباره Restart کنید.
۸) حافظه و منابع ورودی/خروجی را بهینه کنید
بهینه سازی این عوامل، تاثیر زیادی در مقدار میانگین بار دارد که برای این کار می توانید از پارامترهای تنظیم هسته لینوکس مثل swappiness و dirty_ratio استفاده کنید.
۹) به فکر متعادل سازی بار کاری باشد
برای توزیع یکنواخت بار کاری سیستم، تکنیک های متعادل سازی بار زیادی وجود دارد که استفاده از load balancerها یا اجرای چند نمونه از یک سرویس در چند سرور از رایج ترین آنها هستند.
در کل، سرورها و سیستم های تعبیه شده بیشتر از بقیه با مسائل مربوط به میانگین بار روبرو می شوند و به همین خاطر است که باید متناسب کاری که انجام می دهید یا ویژگی های سیستم از روش های بهینه سازی مناسب استفاده کنید.
در انتهامی توان گفت CPU Load Average میانگین تمام فرایندهای محاسباتیای هستند که داخل هسته کرنل یک سرور لینوکس در یک بازه زمانی مشخص انجام می شوند را نشان میدهد. شما همراهان تلاش نت می توانید با انجام کارهای مطرح شده هنگامی که Load average در سیستمتان بالا بود، میانگین بار فرآیند را به راحتی کاهش دهید.
|