یکی از بخش های حساس در مانیتورینگ عملکرد لینوکس، باید cpu usage و system load باشد. ابزارهای مختلفی برای مانیتور کارایی/عملکرد لینوکس وجود دارد که با استفاده از آنها می توان همواره روی چیزهایی که به یکباره در سیستمتان آشکار میشوند، چشم دوخت.

بعضی از این ابزارها به سادگی وضعیت/آمار سیستم را خروجی میدهند، درحالیکه تعداد کم دیگری از این ابزارها برای شما مدیریت عملکرد سیستم را فراهم میاورند. یکی از این چنین ابزاهایی cputool است.

CPUTool یک ابزار کامندی قدرتمند برای کنترل و محدود کردن میزان مصرف cpu برای هر پروسس میباشد و همچنین امکان توقف process در صورتی که load سیستم از یک آستانه مشخصی بالاتر رود را ممکن میسازد.



CPUTool چگونه کار میکند ؟

ابزار cputool به منظور محدود کردن میزان مصرف cpu، سیگنالهای SIGSTOP و SIGCONT به پروسس ها ارسال میکند و این مورد از طریق لود سیستم مشخص است. این ابزار برای خواندن PID ها و اندازه های میزان مصرف cpu آنها بر /proc pseudo-filesystem تکیه میکند.

این ابزار ممکن است برای محدود کردن میزان مصرف cpu به یک میزان مشخص استفاده شود یا load سیستم که ممکن است به واسطه یک process مجزا یا گروهی از پروسس ها باشند و در صورتی که load فراتر از یک مقدار مشخص باشد پروسس ها را suspend کند.



نصب CPUTool برای محدود کردن میزان مصرف CPU و میانگین Load سیستم

امکان نصب ابزار cputool تنها روی دبیان/اوبونتو و مشتقات آن موجود میباشد. و از ریپازیتوری های پیش فرض سیستم و با استفاده از ابزار مدیریت پکیج apt میتوان آنرا نصب کرد.
کد PHP:
sudo apt install cputool 


محدود کردن میزان استفاده CPU در Process ها با استفاده از CPUTool

اکنون به نحوه کار کردن cputool میپردازیم. برای مشخص کردن کامل آن ما دستور dd را که منجر به بالا رفتن درصد cpu میشود را در بک گراند اجرا میکنیم و PID آنرا پیدا میکنیم.
کد PHP:
# dd if=/dev/zero of=/dev/null & 
برای مانیتور کردن میزان مصرف cpu ما میتوانیم از دستورات top یا glances استفاده کنیم که به ما امکان نمایش وضعیت در لحظه (RealTime) و آپدیت شده ی (وضعیتی که به صورت منظم آپدیت میشود) پروسس های در حال اجرای یک سیستم لینوکس را میدهد.
کد PHP:
# top 
top-cputool-command-1-png


از خروجی بالا میتوانیم مشاهده کنیم که دستور dd بالاترین درصد cputime (میزان 99.7%) را به خود اختصاص داده و اکنون ما میتوانیم این میزان را با استفاده از cputool همانند تصویر زیر محدود کنیم.

آپشن های --cpu-limit یا -c برای تعریف یک میزان درصدی برای process یا گروهی از process ها و -p برای مشخص کردن یک pid مورد استفاده قرار میگیرد. دستور زیر کامند dd را (با pid 8275) به مصرف 50 % از یک core cpu محدود خواهد کرد.
کد PHP:
# cputool --cpu-limit 50 -p 27118 
بعد از اجرای cputool ما میتوانیم میزان جدید مصرف cpu برای پروسس (با pid 8275) را یکبار دیگر چک کنیم. اکنون میزان مصرف cpu برای پروسس dd باید در رنج 49 %تا 59 % باشد.
کد PHP:
# top 
top-cputool-command-2-png

برای محدویت بیشتر میزان مصرف cpu در dd (محدودیت تا 20 %) ما میتوانیم دستور cputool را یکبار دیگر و همانند زیر اجرا کنیم.
کد PHP:
# cputool --cpu-limit 20 -p 27118 
سپس بلافاصله میتوانیم نتیجه را با استفاده از ابزاری همانند top یا glances مانند زیر بررسی کنیم. اکنون میزان مصرف cpu برای dd باید در رنج 19 تا 22 درصد باشد.
کد PHP:
# top 
توجه کنید زمانیکه cputool در حال اجراست shell هیچ گونه ورودی را از کاربر قبول نمیکند، بنابراین شل در این مواقع هیچ تسکی را نمیتواند انجام دهد. برای kill کردن ان Ctrl + c را فشار دهید. (عملیات محدودیت میزان مصرف cpu را خاتمه خواهد داد)

برای مشخص کردن یک گروه از process (یک برنامه با چندین برنامه جانبی در حال اجرا که هرکدام با PID های مجزا کار میکنند) برای مثال وب سرور http :
کد PHP:
# pidof apache2
9592 3643 3642 3641 3640 3638 3637 1780 
کافیست از آپشن -P همانند زیر استفاده کنید.
کد PHP:
# cputool --cpu-limit 20 -P 1780 


محدود کردن Load سیستم با استفاده از CPUTool

آپشن -l برای مشخص کردن میزان حداکثر load که ممکن است سیستم برای ادامه اجرای پروسس یا گروه پروسس به آن حد برسد مورد استفاده قرار میگیرد. ما ممکن است یک مقدار کسری (اعشاری) مثلا 2.5 را استفاده کنیم.

مثال زیر به معنای اجرای دستور rsync برای یک بک آپ گیری local تنها زمانیکه لود سیستم بالاتر از 3.5 نرود، میباشد.
کد PHP:
# cputool --load-limit 3.5 --rsync -av /home/tecmint /backup/`date +%Y-%m-%d`/ 
برای اطلاعات بیشتر، صفحه man دستور cputool را مطالعه بفرمایید.
کد PHP:
# man cputool 

همچنین پیشنهاد میشود راهنماهای مفید زیر را برای پیدا کردن اطلاعات cpu و همچنین مانیتورینگ عملکرد cpu بررسی کنید.

9 دستور مورد استفاده برای گرفتن اطلاعات CPU در لینوکس (به زودی)


Cpustat - مانیتور کردن استفاده CPU به وسیله اجرا کردن Process ها در لینوکس (به زودی)

CoreFreq - یک ابزار مانیتورینگ قدرتمند CPU برای سیستم های لینوکسی (به زودی)

پیدا کردن Process های در حال اجرا که CPU و RAM زیادی در Linux مصرف میکنند


در پایان باز هم میگوییم که ابزار cputool واقعا برای مدیریت عملکرد لینوکس آسان و پرکاربرد است. نظرات و سوالات خود را در همین پست با ما مطرح کنید.