الشرح المبسط
الشرح التقني المتقدم
يعد مفهوم أولوية التنفيذ (Nice) من الأساسيات في إدارة الموارد داخل نظام لينكس (Linux)، حيث يتحكم في كيفية تخصيص وقت المعالج (CPU) للعمليات (Processes) المختلفة. تعمل جدولة المهام (Process Scheduling) بناء على هذه القيمة لتحديد أي عملية يجب أن تحصل على الموارد أولا.
فهم قيم الأولوية وجدولة المهام
تتراوح قيم الأولوية في النظام من -20 إلى 19. القيمة الافتراضية لأي عملية جديدة هي 0. كلما زادت القيمة نحو 19، أصبحت العملية ألطف وتنازلت عن وقت المعالج للعمليات الأخرى. وكلما انخفضت القيمة نحو -20، زادت شراستها واستحوذت على موارد المعالج.
مجدول المهام في النواة (Kernel): يلعب مجدول المهام الدور الرئيسي هنا، حيث يقرأ هذه القيم لضمان توزيع الموارد بكفاءة ودون تعليق النظام (System Hang).
استخدام الأوامر العملية لتعديل الأولوية
يمكنك تشغيل برنامج بأولوية معينة باستخدام أمر التعيين، أو تعديل أولوية برنامج يعمل بالفعل باستخدام أمر التعديل (Renice).
لتشغيل عملية جديدة مع أولوية منخفضة جدا بحيث لا تستهلك موارد الخادم بكثافة:
nice -n 15 tar -czf backup.tar.gz /var/log
ولتعديل أولوية عملية تعمل حاليا (بمعرف العملية 1234) لإعطائها أولوية قصوى (تحتاج لصلاحيات الجذر):
sudo renice -n -10 -p 1234
أهم الفروقات والقواعد التقنية التي يجب مراعاتها أثناء إدارة العمليات:
- المستخدم العادي (Regular User): يمكنه فقط زيادة قيمة الأولوية (جعل العملية ألطف من 0 إلى 19) لعملياته الخاصة فقط، ولا يمكنه إعطاء أفضلية سالبة.
- المستخدم الجذر (Root User): يمكنه تعيين أي قيمة من -20 إلى 19، ويمكنه تعديل عمليات أي مستخدم آخر في النظام.
- الفرق عن الأولوية الفعلية (Priority): قيمة أولوية التنفيذ هي مجرد تلميح، بينما الأولوية الفعلية (PR) التي تراها في أدوات مثل
topأوhtopتحسب تقنيا بجمع الرقم 20 مع قيمة أولوية التنفيذ.
ملاحظة ختامية: الصورة الكبرى (نصيحة احترافية)
لا تقم بتعيين قيمة -20 لعمليات ثقيلة جدا إلا إذا كنت تدرك تماما ما تفعله، لأن ذلك قد يؤدي إلى حرمان العمليات الأساسية للنظام من المعالج (CPU Starvation)، مما يجعل النظام غير مستجيب. استخدم هذه الأداة بحكمة لتشغيل مهام النسخ الاحتياطي في الخلفية بقيم موجبة لضمان استقرار أداء الخادم.