تخصيص النواة (Kernel Tuning) عبر ملفات /proc و /sys
مقدمة
يُعد تخصيص النواة في لينكس من أهم المهارات التي تميز مدير النظام المحترف، لأنه يتيح ضبط سلوك النظام على مستوى عميق دون الحاجة إلى إعادة بناء النواة أو تعديل الشيفرة المصدرية. عند التعامل مع خوادم الإنتاج أو البيئات الحساسة للأداء، يصبح فهم آليات الضبط الديناميكي عاملاً أساسياً لتحقيق التوازن بين السرعة، الاستقرار، واستهلاك الموارد.
تعتمد هذه العملية غالباً على واجهتين محوريتين داخل لينكس: /proc و/sys. هذان المساران لا يمثلان ملفات تقليدية، بل يقدمان طبقة تفاعلية بين المستخدم والنواة لقراءة القيم الحالية وتعديل بعض المعاملات مباشرة أثناء التشغيل. وإذا كنت قد قرأت سابقاً مقدمة إلى عالم لينكس: التاريخ، الفلسفة، وفهم النواة (Kernel) فستدرك أن النواة هي القلب الذي يدير الذاكرة، العمليات، والأجهزة.
في هذا المقال سنشرح الفرق بين /proc و/sys، وكيفية استخدامهما بشكل آمن، وما هي أفضل الممارسات لجعل التعديلات مؤقتة أو دائمة، مع أمثلة عملية مرتبطة بالأداء والشبكات والذاكرة.
ما هو دور /proc و/sys؟
المسار /proc هو نظام ملفات افتراضي يعرض معلومات تشغيلية مباشرة من النواة، مثل العمليات الجارية، استخدام الذاكرة، وضبط معاملات الشبكة. أما /sys فهو واجهة أحدث وأكثر تنظيماً، ويرتبط غالباً بالأجهزة، برامج التشغيل، وبعض سياسات الطاقة والأداء.
لفهم مكانهما ضمن بنية النظام، يفيد الرجوع إلى مقال هيكلية ملفات لينكس (Filesystem Hierarchy Standard – FHS)، لأن كلاً من هذين المسارين يدخل ضمن الملفات الافتراضية التي لا تُخزن بياناتها بشكل دائم على القرص بنفس الطريقة المعهودة.
الفرق العملي بينهما
/procيركّز على معلومات النواة والعمليات والضبط العام./sysيركّز أكثر على بنية الأجهزة، الوحدات، والخصائص القابلة للتغيير.- كلاهما يوفّر ملفات يمكن قراءتها باستخدام أوامر عادية مثل
catوكتابتها أحياناً باستخدامecho. - بعض الإعدادات فيهما مؤقتة حتى إعادة التشغيل، ما لم تُربط بآلية حفظ دائمة.
كيفية استكشاف القيم الحالية بأمان
قبل تعديل أي قيمة، يجب أولاً فحص الوضع الحالي وفهم تأثيرها. كثير من الأخطاء تنتج من تغيير إعدادات دون خط أساس للمقارنة. يمكنك استخدام أدوات الطرفية الأساسية التي تم شرحها في الدخول الأول إلى الطرفية (Terminal): الأوامر الأساسية والمساعدة (man, help) وأدوات عرض ومعالجة النصوص (cat, nano, vim, less, tail) لقراءة الملفات ومتابعة تأثير التعديلات.
cat /proc/sys/vm/swappiness
cat /proc/sys/net/ipv4/ip_forward
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
إذا أردت العثور على إعدادات مرتبطة بكلمة محددة مثل الذاكرة أو الشبكة، فإن أدوات البحث المذكورة في البحث المتقدم في النظام باستخدام (find, locate, grep) تكون مفيدة جداً.
find /proc/sys -type f | grep swappiness
find /sys -type f | grep governor
التعديل المؤقت عبر echo وsysctl
أبسط طريقة لتعديل قيمة داخل /proc هي الكتابة المباشرة إلى الملف. لكن عملياً، يُفضل غالباً استخدام sysctl مع الإعدادات التابعة للمسار /proc/sys، لأنه أوضح وأسهل للإدارة.
مثال على تعديل swappiness
القيمة vm.swappiness تتحكم في ميل النظام لاستخدام الذاكرة التبادلية swap. تخفيضها قد يفيد الخوادم التي تملك ذاكرة كافية وتحتاج إلى تقليل الكتابة على القرص.
sysctl vm.swappiness=10
أو بالطريقة المباشرة:
echo 10 > /proc/sys/vm/swappiness
مثال على تفعيل توجيه الحزم
في بيئات الشبكات أو عند إعداد بوابة مرور، قد تحتاج إلى تفعيل IP forwarding:
sysctl net.ipv4.ip_forward=1
هذا الإعداد يرتبط مباشرة بموضوعات الشبكات والحماية، خصوصاً عند العمل مع أساسيات شبكات لينكس: العناوين، المنافذ، والبروتوكولات (IP, SSH, DNS) أو جدار الحماية (Firewall) وتأمين النظام (UFW, Firewalld, Iptables).
التعديل عبر /sys للأداء والطاقة
الكثير من إعدادات /sys يرتبط بأجهزة المعالج، الطاقة، وجدولة الأداء. من أشهر الأمثلة تغيير نمط حاكم المعالج CPU governor بين أوضاع مثل performance وpowersave.
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
هذا النوع من التخصيص مهم خاصة عند تشخيص اختناقات الأداء، ويمكن ربطه بمقال مراقبة أداء المعالج والذاكرة وتحليل الاختناقات (I/O Wait, CPU Throttling) وكذلك تحسين أداء النظام (Performance Tuning) وحل المشكلات المتقدمة (Troubleshooting).
أي تغيير في ملفات
/sysقد يختلف توفره وتأثيره حسب نوع العتاد، برنامج التشغيل، وإصدار النواة. لا تنسخ إعدادات من خادم إلى آخر دون التحقق من التوافق.
كيف تجعل التعديلات دائمة بعد إعادة التشغيل؟
التعديلات التي تُجرى مباشرة على /proc و/sys غالباً تكون مؤقتة. لجعلها دائمة، يمكن استخدام ملف /etc/sysctl.conf أو ملفات مخصصة داخل /etc/sysctl.d/ لإعدادات sysctl.
nano /etc/sysctl.d/99-custom-kernel-tuning.conf
ثم أضف مثلاً:
vm.swappiness = 10
net.ipv4.ip_forward = 1
بعدها طبّق الإعدادات:
sysctl --system
أما إعدادات /sys فغالباً تُثبّت عبر وحدات systemd أو سكربتات إقلاع. وهنا يظهر دور إدارة الخدمات باستخدام (systemd) و (systemctl) وجدولة المهام التلقائية باستخدام (Cron Jobs) إذا كانت هناك حاجة لتنفيذ ضبط مخصص تلقائياً.
أفضل الممارسات قبل أي عملية Kernel Tuning
- ابدأ بقياس الأداء الحالي قبل التعديل، ولا تعتمد على الانطباع الشخصي فقط.
- عدّل قيمة واحدة في كل مرة لتتمكن من معرفة الأثر الحقيقي.
- وثّق كل تغيير في ملف إداري أو نظام متابعة داخلي.
- اختبر على بيئة غير إنتاجية قبل التطبيق على الخوادم الفعلية.
- راقب السجلات بعد التعديل باستخدام أدوات مثل
journalctlأو ملفات/var/logكما في مراقبة السجلات (Logs) وتحليل الأخطاء (journalctl, /var/log). - تأكد من امتلاكك صلاحيات مناسبة عبر
sudo، خصوصاً أن كثيراً من هذه الملفات لا يمكن تعديلها دون امتيازات مرتفعة، وهو ما يرتبط بمقال إدارة الصلاحيات والملكية (Chmod, Chown, Sudo).
بعض قيم النواة قد تبدو مغرية للتعديل بهدف “تسريع” النظام، لكن الضبط غير المدروس قد يؤدي إلى عدم استقرار الشبكة، زيادة استهلاك الذاكرة، أو حتى تراجع الأداء بدل تحسينه. القاعدة الذهبية: افهم أولاً، ثم عدّل، ثم راقب.
حالات استخدام شائعة في الخوادم
في خوادم الويب عالية الحمل، قد تُستخدم تعديلات net.core وtcp لتحسين التعامل مع الاتصالات الكثيفة. وفي خوادم قواعد البيانات، يكون الاهتمام غالباً موجهاً نحو الذاكرة والسلوك المرتبط بـ swap. أما في البيئات الافتراضية أو الحاويات، فقد تظهر الحاجة إلى موازنة الاستهلاك بين الأداء والعزل.
مع ذلك، لا توجد “إعدادات سحرية” تصلح لكل الأنظمة. نوع الحمل، مواصفات الخادم، وطبيعة الخدمة هي التي تحدد ما إذا كان الضبط ضرورياً أصلاً أم لا. لهذا السبب يُعد الربط بين المراقبة الفعلية والتعديل التدريجي هو النهج الاحترافي الصحيح.
خاتمة
يمنحك تخصيص النواة عبر /proc و/sys قدرة كبيرة على مواءمة لينكس مع متطلبات بيئتك الفعلية، سواء كنت تدير خادماً شبكياً، منصة استضافة، أو جهازاً يحتاج إلى توازن دقيق بين الأداء والطاقة. لكن هذه القوة تتطلب فهماً عميقاً، واختباراً منهجياً، والالتزام بأفضل ممارسات الإدارة.
كلما تعمقت في قراءة قيم النواة وربطتها بمراقبة الأداء والسجلات، أصبحت قراراتك أكثر دقة وأقل مخاطرة. وهنا يتحول Kernel Tuning من مجرد تعديلات تقنية إلى مهارة تشغيلية استراتيجية ترفع كفاءة النظام واستقراره على المدى الطويل.
3 comments