مجموعات التحكم (Control Groups)
Control Groups (cgroups)
الشرح المبسط
الشرح التقني المتقدم
تعد مجموعات التحكم (cgroups) ميزة جوهرية في نواة (Kernel) لينكس، مسؤولة عن إدارة ومراقبة وتقييد استهلاك الموارد المادية مثل المعالج (CPU) والذاكرة والمدخلات والمخرجات (I/O) لمجموعات العمليات.
البنية الهيكلية والتحول إلى الإصدار الثاني (cgroups v2)
تعتمد النواة على نظام ملفات افتراضي لتنظيم العمليات وتطبيق القيود عليها بشكل شجري منظم:
المسار الموحد /sys/fs/cgroup: يمثل نقطة التحكم المركزية في الإصدار الثاني (Unified Hierarchy)، حيث تنتمي كل عملية لمجموعة واحدة تخضع لعدة متحكمات في آن واحد دون تضارب.
التحكم العملي في استهلاك الموارد باستخدام مدير النظام (systemd)
يمكن تقييد استهلاك الذاكرة وحصة المعالج لعملية معينة بشكل فوري دون الحاجة إلى تعديل ملفات الإعدادات الدائمة:
أمر التنفيذ:
systemd-run --scope -p MemoryMax=500M -p CPUQuota=50% stress --vm 1 --vm-bytes 600M
أبرز المتحكمات التقنية ووظائفها داخل النواة:
- متحكم الذاكرة (Memory Controller): يحدد السقف الأعلى عبر memory.max، وعند تجاوزه يتدخل قاتل العمليات (OOM Killer) لإنهاء المهمة المتجاوزة فقط داخل المجموعة.
- متحكم المعالج (CPU Controller): ينظم الحصص الزمنية عبر cpu.weight و cpu.max، مما يمنع أي عملية من احتكار مسارات المعالجة.
- متحكم عدد العمليات (PIDs Controller): يحمي النظام من هجمات حجب الخدمة مثل القنابل الشوكية (Fork Bombs) عن طريق تحديد سقف العمليات عبر pids.max.
- متحكم الإدخال والإخراج (I/O Controller): يضبط معدلات القراءة والكتابة على وسائط التخزين لمنع اختناق النظام عند تشغيل الحاويات (Containers).
ملاحظة ختامية: الصورة الكبرى (نصيحة احترافية)
في خوادم الإنتاج الحديثة، تجنب تعديل ملفات /sys/fs/cgroup يدوياً واعتمد كلياً على وحدات systemd لإدارة القيود، مع التحقق من تفعيل cgroups v2 للاستفادة الكاملة من ميزات مراقبة ضغط الموارد (PSI).