مفهوم CPU Load یا لود سرور (دریافت پیوندک)

نوشته شده در تاریخ: 15/09/93 | نویسنده:هادی شهیدی

مفهوم  CPU  Load یا  لود سرور

احتمالاً هر کسی که با یک سرور اختصاصی یا سرور مجازی کار میکند با مفهوم لود سرور یا CPU LOAD آشناست و میداند بالا و پایین رفتن این عدد روی کارکرد صحیح سرور چقدر مهم و تاثیر گذار است.

در محیط لینوکس با یکی از دستورات زیر میتوانید لود سرور را مشاهده کنید :

uptime

و یا

top

خروجی دستورات بالا برای نمایش لود سرور مطابق زیر خواهد بود :

load average: 0.09, 0.05, 0.01

این اعداد به ترتیب از چپ به راست نشان دهنده لود سرور در “یک دقیقه گذشته” ، “5 دقیقه گذشته” و “15 دقیقه گذشته” هستند.
همیشه اعداد پایین و کوچکتر بهتر هستند و بزرگ شدن این اعداد نشان دهنده بار سنگین بر روی سرور میباشد.

برای آنکه بتوانیم وضعیت لود سرور را تشریح کنیم با یک مثال شروع میکنیم و در این مثال فرض میکنیم سرور ما دارای یک سی پی یو یک هسته ای است.

مثال ترافیکی
یک سی پی یو یک هسته ای مانند یک خیابان با یک لاین ترافیکی میباشد.
تصور کنید که شما مسئول ترافیکی یک پل هستید.بعضی وقت ها پل بسیار شلوغ است و ماشین ها برای عبور از آن باید در صف منتظر بمانند.
در این حالت مسئول پل میتواند وضعیت عبور را از پل را به شرح زیر برای خودش تشریح کند.

0.00 : به معنی آنکه هیچ ماشینی روی پل نیست و عددی بین 0.00 و 1.00 بع معنی آن است که انتظار فوری برای عبور از پل وجود ندارد و ماشینی که به پل برسد بدون انتظار از پل عبور میکند.

1.00 : به معنی آن است که هنوز انتظاری وجود ندارد و انتقال به راحتی انجام میشود اما این بدان معناست که در صورتی که ترافیک سنگین تر شود ممکن است ماشین ها در انتظار عبور بمانند.

عدد بزرکتر از 1.00 : این بدان معناست که ترافیک بالا رفته است به عنوان مثال عدد 2.00 نشان میدهد که دو خط ترافیک وجود دارد یک ردیف از ترافیک در حال عبور است و یک ردیف هنوز انتظار هستند.
عدد 3.00 نیز نشان میدهد که 3 خط ترافیک داریم یکی روی پل و دو تا در انتظار عبور هستند.

تصاویر زیر مفاهیم و اعداد بالا را به خوبی تشریح میکنند.

load = 1.00

load = 1.00

load = 0.5

load = 0.5

load = 1.70

load = 1.70

در مثال بالا مفهوم cpu لود شرح داده شده است. ماشین ها پردازش هایی هستند که میخواهند از لاین پل عبور کنند .
در لینوکس مفهومی با نام run-queue length وجود دارد که به معنای مجموع پردازش های در حال انجام بعلاوه پردازش های در حال انتظار هستند.
مانند موضوع مثال بالا پردازش ها نبایند منتظر بمانند و باید به سرعت از پل عبور کنند . به این معنا که پردازش شما نباید از 1 بالاتر برود و بالاتر رفتن آن به معنی صف انتظار برای انجام آن خواهد بود.

البته در نظر داشته باشید که عدد بزرگتر از 1.00 مانند کسی که مسئول پل است فرآیندی است که انجام میشود اما باید نگران ترافیک بوجود آمده باشید.

آیا عدد ایده آل برای لود سرور همان 1.00 است ؟
بسیاری از مدیران شبکه هاست برای حفظ امنیت و سرعت پردازش سرور خط مرزی خودشان را به دلایل زیر روی 0.70 قرار میدهند که صف انتظار پر نشده باشد.

– این عدد خوب است چون هنوز اتفاق بدی برای سرور رخ نداده است و پردازش ها به موقع در حال انجام هستند.

– قبل از آنکه صف پر شود و به عدد 1.00 برسیم میتوانیم کارهای لازم را برای کنترل سرور انجام دهیم.
چه بهتر آنکه حالا که فرصت داریم موضوع را بررسی کنیم قبل از آنکه نیمه شب مجبور به کنترل سرور بعد از عدد های بزرگتر شویم/

– عدد 5.00 عدد خطرناکی است و باعث میشود سرور شما کند شده و شاید بعضی از پردازش ها به موقع انجام نشود و شاید در این زمان است که باید همه کارهایتان را رها کنید و به موضوع لود سرور بپردازید.

سرور هایی که با چند سی پی یو کار میکنند چگونه است ؟
شاید شما دارای یک سرور با چند سی پی یو باشید و لود شما الان روی 3 باشد و شما با هیچ مشکلی روبرو نباشید . پس موضوع عدد 1.00 چیست ؟

توجه شود که لود در سرور هایی با چند سی پی یو موسوم به Multiprocessor را با مجموع تعداد هسته ها (Core) مورد سنجش قرار میدهیم.
در سروری با یک هسته لود 1.00 ترافیک پر شده سی پی یو است و در سروری با دو هسته لود سرور ما میتواند 2.00 باشد.برای رسیدن به موضوع مثالمان در نظر بگیرید که هر هسته مانند یک لاین ترافیکی عمل میکند و در سروری با دو هسته ما دارای دو لاین ترافیکی هستیم و به همین دلیل عدد لود سرور (Server Load) میتواند 2 باشد.

در راندمان و پاسخگویی سرورها ، سرورهایی با دو سی پی یو یک هسته ای عملکرد مشابه با یک سی پی یو یک هسته ای دارند .

سرورهایی با چند سی پی یو و سرور هایی با چند هسته
در راندمان و پاسخگویی سرورها ، سرورهایی با دو سی پی یو یک هسته ای عملکر مشابه با یک سی پی یو یک هسته ای دارند .
بر اساس قانون بالا به نتایج زیر میرسیم :

– مجموع تمام هسته های سرور = حداکثر لود مجاز برای سرور
– هسته ها هسته هستند 🙂 یعنی یک CPU با 4 هسته معادل مثل یک سرور با 2 عددCPU دو هسته ای حساب میشود.

خلاصه موضوع لود سرور (Server Load)
یک سیستم سرور با یک CPU دو هسته ای در نظر بگیرید ما در این سرور دستور uptime را اجرا کرده ایم :

~ $ uptime
23:05 up 14 days, 6:08, 7 users, load averages: 0.65 0.42 0.36

 

در این سرور تا لود 1.75 جای نگرانی نیست و بعد از آن باید به فکر لود سرور بود.

شماره لود 65.0 نشان میدهد در یک دقیقه گذشته لود سرور بالاتر از 5 دقیقه قبل (0.42) و در 15 دقیقه گذشته (0.36) بوده است و وضعیت سرور نسبت به دقایق قبل بهتر و بهتر شده است.

چگونه تعداد هسته های سرور را شناسایی کنیم ؟
دستور زیر اطلاعاتی راجع به CPU سرور در اختیار شما قرار میدهد :

cat /proc/cpuinfo

برای اطلاع از وضعیت هسته ها میتوانیم از دستور مستقیم زیر استفاده نماییم :

grep 'model name' /proc/cpuinfo | wc -l