bpftune - ضبط Kernel التلقائي مع eBPF (Cheatsheet)
bpftune (من Oracle) هو خيط خفيف الوزن الذي يضبط معاملات kernel Linux تلقائياً باستخدام eBPF. بدلاً من مطالبة مسؤول النظام بتخمين قيم sysctl، فإنه يراقب سلوك النظام الفعلي من خلال فحوصات eBPF — ضغط مخزن TCP، تشبع جدول الاتصال، استعادة الذاكرة — ويضبط المعاملات الذاتية بشكل مستمر عند تغيير الحمل. المبدأ التوجيهي هو أن تكون غير مرئي: حمل زائد تقريباً صفري، بدون إعداد مطلوب، والبوابة بقصد أي معامل قد يكون إداري قد حدده يدوياً.
الضبط التلقائي يغير سلوك kernel على نظام مباشر. جربه على المضيفين غير الحرجة واراقب السجلات قبل الدرج الواسع.
المتطلبات
- Linux kernel مع دعم BPF و BTF (الإصدار 5.15+ موصى به)
- امتيازات جذر (يحمل برامج eBPF، يكتب sysctls)
التثبيت
| النظام الأساسي | الأمر |
|---|
| Oracle Linux / Fedora | sudo dnf install bpftune |
| من المصدر | git clone https://github.com/oracle/bpftune && make && sudo make install |
| الخدمة | sudo systemctl enable --now bpftune |
| التحقق | bpftune -h |
التشغيل
| الأمر | الوصف |
|---|
sudo bpftune | تشغيل في الصدارة |
sudo bpftune -d | تشغيل كخيط معين |
sudo systemctl start bpftune | البدء عبر systemd |
sudo bpftune -s | عرض ملخص المضبوطات والحالة الحالية |
journalctl -u bpftune -f | مراقبة قرارات الضبط مباشرة |
الخيارات الرئيسية
| العلم | التأثير |
|---|
-d | وضع خيط معين |
-s | ملخص/مخرجات الحالة |
-S | اقمع (تشغيل جاف) — سجل ما كان يغيره |
-L | وضع التعليم / السلوك الموروث |
-r | استعادة التغييرات عند الخروج |
-l LEVEL | مستوى كلام السجل |
# انظر ما كان سيضبطه بدون تغيير أي شيء
sudo bpftune -S -l debug
ما الذي يضبطه
| المضبوط | يضبط |
|---|
| مخزن TCP | tcp_rmem / tcp_wmem تحت ضغط الإنتاجية |
| ازدحام TCP | اختيار خوارزمية ضبط الازدحام |
| حدود الاتصال | somaxconn, حجم الجدول الخلفي عند تجاوز قوائم الانتظار |
| جدول الجار | أحجام جدول ARP/ND عند تسقيط المدخلات |
| جدول المسار | حجم ذاكرة تخزين المسار |
| Netns / sysctl | معادلات مساحة الأسماء حيث ينطبق |
كيفية عمل حلقة التغذية الراجعة
| الخطوة | التفاصيل |
|---|
| ملاحظة | فحوصات eBPF حساب الأسقاط والتجاوزات وأحداث الضغط |
| قرار | إذا تم ضرب عتبة بشكل متكرر، فإن المعامل هو اختناق |
| ضبط | رفع الحد بشكل تدريجي (لا أبداً غير محدود) |
| إعادة ملاحظة | تأكيد أن العرض واضح |
| تراجع | إذا حدد المسؤول القيمة يدوياً، اتركه وحده |
هذه دورة “مراقبة، دفعة، تحقق” هي لماذا يمكنها التشغيل بشكل مستمر بدون تذبذب.
التحقق من تأثيره
# ماذا غيّر bpftune؟
sudo bpftune -s
# تأكيد sysctl الذي أبلغ عن ضبطه
sysctl net.ipv4.tcp_rmem net.core.somaxconn
# الارتباط مع العرض الذي كان يعالجه
ss -s # إحصائيات المقبس/الجدول
netstat -s | grep -i drop # يسقط الذي أثار الضبط
متى تستخدمه
| السيناريو | المناسبة |
|---|
| أحمال متغيرة/غير معروفة | قوي — يتكيف مع تغييرات الحمل |
| نسخ السحابة ذات الأحجام المختلفة | قوي — بدون ضبط لكل نسخة |
| حمل عالي الضبط والثابت | ضعيف — القيم اليدوية الخاصة بك أفضل |
| تحكم تغيير صارم | استخدم -S dry-run أولاً، أو تخطي |
bpftune مقابل الضبط اليدوي/الملف الشخصي
| الجانب | bpftune | TuneD | sysctl يدوي |
|---|
| النموذج | مستمر، مدفوع بالتغذية الراجعة | ملفات تعريف ثابتة | قيم لمرة واحدة |
| يتكيف مع الحمل | نعم | لا | لا |
| الإعداد المطلوب | لا شيء | اختر ملف تعريف | الخبرة الكاملة |
| يحترم الإعدادات اليدوية | نعم (يتراجع) | يكتب | N/A |
يكمل TuneD (ملفات تعريف ثابتة واسعة) والأدوات المباشرة مثل cpupower؛ bpftune يستهدف حدود الشبكة/kernel بشكل محدد.
الموارد