We are aware of a potentially service impacting issue. Learn more

تغییر اولویت پردازش فرایند ها در لینوکس Print


در لینوکس به صورت پیشفرض فرایند ها مقدار یکسانی از زمان CPU   برای پردازش استفاده می کنند بدین معنی که تمام فرایند ها هم زمان به صورت موازی در حال پردازش می باشند، گاهی ممکن است که یک برنامه نیاز باشد تا با اولویت و زمان بیشتری نسبت به بقیه فرایند ها پردازش شود تا نتیجه و خروجی زودتر انجام شود این عمل را می توانیم با برنامه هایی نظیر nice  و یا renice  انجام دهیم.
برنامه Nice   ابتدا در سیستم عامل یونیکس مشاهده شد و بعد از ان به لینوکس نیز منتقل شد و هدف ان نیز تغییر اولویت پردازش می باشد، این برنامه تفاوت جزئی نسبت به renice  دارد و ان این است که برخلاف Nice  که در ابتدا و قبل از اجرای برنامه،اولویت انرا تغییر می دهد renice  می توانید در حین پردازش و اجرای برنامه اولویت یک فرایند را نیز تغییر دهید.
این اولویت ها با اتخاذ یک عدد تغییر می کنند که این عدد از -20 تا 19 متغیر می باشد، اعداد کمتر از 19 به معنی اولویت بیشتر می باشند و -20 به معنی بالا ترین اولویت است.


تغییر اولویت پردازش فرایند ها در لینوکس

در دستور top  پارامتر PR  نشان دهنده اولویت فرایند ها می باشد که در این سیستم اولویت بیشتر فرایند ها 20 می باشد.
همان طور که مشاهده می کنید مقدار NI  که مربوط به nice  می باشد به صورت پیشفرض 0 می باشد.
برای نمونه  فرض می کنیم که یک فایل با حجم 100 گیگ را نیاز است که در مسیر جاری extract کنیم ممکن است این روند چندین ساعت بطول انجامد، شما می توانید با تغییر اولویت پردازش این فرایند، زمان آنرا کاهش دهید.
screen nice -n -5 tar xzvf tengigfile.tar.gz
دستور screen  برای قرار گرفتن پروسه در Background  می باشد و سویچ –n  برای مقدار دهی اولویت فرایند extract  می باشد  و مطابق تصویر زیر اولویت این فرایند از 20 به 15 تغییر داده شده است و مقدار NI  نیز 5-  می باشد.


تغییر اولویت پردازش فرایند ها در لینوکس

دستور gzip  مربوط به این فرایند می باشد.
 
screen nice -n -5 tar xzvf tengigfile.tar.gz
screen nice --5 tar xzvf tengigfile.tar.gz
screen nice –adjustment= -5 tar xzvf tengigfile.tar.gz
هر 3 دستور بالا مشابه می باشند دقت نمایید که برای حالت دوم از 2 خط فاصله در کنار عدد استفاده شده است.
موارد بالا برای حالتی است که می خواهید اولویت اجرای یک برنامه تغییر داده شود.
حال می خواهیم اولویت فرایند های در حال اجرا را با renice تغییر دهیم
 فرض کنید می خواهیم اولیوت فرایند mysql  را تغییر دهیم بدین منظور نیاز به PID  این فرایند هست که با دستور ps  می توان انرا پیدا کرد
[root@server ~]# ps -ef | grep mysqld
root     20338     1  0 05:14 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/server.phpextension.com.pid
mysql    20429 20338  0 05:14 pts/0    00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/server.phpextension.com.err --pid-file=/var/lib/mysql/server.phpextension.com.pid
root     21461 20094  0 05:32 pts/0    00:00:00 grep mysqld
 
PID  مربوط به این سرویس 20429 می باشد
renice -n -15 20429
با دستور top –p 20429 می توانید این فرایند را مشاهده نمایید.


تغییر اولویت پردازش فرایند ها در لینوکس

همچنین شما می توانید اولویت فرایند ها را به صورت گروهی  مانند الگوی زیر تغییر دهید.
renice priority [[-p] pids] [[-g] pgrps] [[-u] users]
می توانید با دستور زیر تمامی فرایند های کاربر nasri  را با اولویت بیشتر پردازش کنید.
renice -n -5 -unasri
یکی از مشکلاتی که در سرور های اشتراکی وجود دارد اجرای فرایند ها به صورت همزمان می باشد، گاهی نیاز است که یک فرایند مثل بکاپ گیری با اولویت بالا انجام شود و بکاپ گیری زود به اتمام برسد برای این منظور می توانیم از یکی از ویژگی های دایرکت ادمین استفاده کرد
 شما می توانید این قابلیت را از طریق پارامتر backup_nice تغییر دهید کافیست موارد زیر را انجام دهید
nano /usr/local/directadmin/conf/directadmin.conf
عبارت backup_nice=-15 را در انتهای فایل اضافه نمایید و فایل را ذخیره کنید.
مقدار پیشرفض 19 می باشد که در دایرکت ادمین اعمال شده است. شما می توانید مقدار کمتر نیز اعمال کنید حتی مقادیر منفی.
پس از ان نیاز است سرویس directadmin  با دستور زیر restart  شوید
service directadmin restart
 
 همچنین برای افزایش سرعت فرایند بکاپ گیری پیشنهاد می شود که از pigz  بجای tgz  استفاده شود، این قابلیت را از روش زیر  با استفاده از CustomBuild 2  فعال نمایید. 
 cd /usr/local/directadmin/custombuild
./build update
./build pigz
 

Was this answer helpful?

  • 0
« Back