TMWeb
تم النشر في
لينكس

ZRAM على أوبونتو: دليل شامل للتثبيت والضبط الأمثل لكل استخدام

المؤلف

enter image description here - مزايا ZRAM: - يقلل من استخدام سواب القرص (Disk Swap) بضغط البيانات في الذاكرة العشوائية (RAM). - مفيد لأنظمة ذات ذاكرة محدودة (مثل أجهزة Raspberry Pi أو أجهزة قديمة). - يحسن الأداء عند استخدام بيانات قابلة للضغط (نصوص، ملفات برمجية).

  • سلبيات ZRAM:

    • يستهلك موارد وحدة المعالجة المركزية (CPU) عند ضغط/فك الضغط.
    • قد لا يكون فعّالًا للبيانات المضغوطة مسبقًا (مثل الفيديوهات).
    • إذا امتلأت ذاكرة ZRAM، يلجأ النظام إلى السواب التقليدي (مما يبطئ الأداء).
  • مقارنة مع بدائل:

    • السواب التقليدي على القرص (Disk Swap):
    • أبطأ بسبب I/O القرص، لكنه لا يستهلك CPU.
    • قد يكون خيارًا أفضل إذا كان القرص سريعًا (SSD).
    • zswap:
    • يجمع بين ضغط البيانات في الذاكرة وتخزينها في سواب القرص عند الضرورة.
    • يعمل كطبقة وسيطة بين الذاكرة والسواب.
    • زيادة الذاكرة الفعلية (RAM): الحل الأمثل إذا كان ممكنًا.
  • توليفات مقترحة:

    • استخدام ZRAM مع سواب صغير على قرص سريع (لحالات الذاكرة الممتلئة تمامًا).
    • تفعيل zswap مع ZRAM لتحقيق توازن بين الضغط والتخزين.

2. العوامل المحددة للحل الأفضل:

  • نوع النظام واستخدامه:

    • أجهزة قديمة/منخفضة الموارد: ZRAM + ضبط إعدادات الضغط (مثل خوارزمية lz4 للسُرعة).
    • أنظمة بها SSD: دمج ZRAM مع سواب صغير على SSD.
    • خوادم/أنظمة حرجة: تجنب الاعتماد الكلي على ZRAM بسبب استهلاك الـ CPU.
  • نوع البيانات:

    • إذا كانت البيانات قابلة للضغط (غير مضغوطة مسبقًا)، ZRAM سيُحدث فرقًا كبيرًا.
    • إذا كانت البيانات مضغوطة (صور، فيديوهات)، قد يكون السواب التقليدي أفضل.
  • إصدار النواة (Kernel):

    • النواة الأحدث (مثل 5.19+) تدعم خوارزميات ضغط أفضل (مثل zstd).

3. التوصيات بناءً على السيناريوهات:

السيناريو الحل المقترح
ذاكرة منخفضة (≤4GB) تفعيل ZRAM مع خوارزمية lz4 أو zstd، وإعداد swappiness بين 30-60.
نظام مع SSD ZRAM + سواب صغير (1-2GB) على SSD.
بيانات غير قابلة للضغط الاعتماد على سواب تقليدي أو زيادة الذاكرة الفعلية.
استهلاك عالٍ للـ CPU تقليل حجم ZRAM أو استخدام خوارزمية أسرع (lz4).
أنظمة بدون ذاكرة قابلة للترقية دمج ZRAM مع zswap لتحسين إدارة الذاكرة.

4. أدوات مساعدة مُذكورة :

  • EarlyOOM: لإنهاء العمليات تلقائيًا قبل تعطل النظام.
  • Systemd-swap: لإدارة ديناميكية لملفات السواب وZRAM.
  • Tuned: لتحسين إعدادات الذاكرة تلقائيًا بناءً على نوع الحمل (Desktop/Server).

1. السيناريو الأول: أنظمة بذاكرة منخفضة (≤4GB)

تفعيل ZRAM مع خوارزمية lz4 أو zstd:

# تثبيت حزمة إدارة ZRAM
sudo apt install zram-tools

# تعديل إعدادات ZRAM (افتح الملف للتعديل):
sudo nano /etc/default/zramswap

# اضبط الخوارزمية والحجم (مثال):
ALGO=zstd  # أو lz4 للسرعة
PERCENT=50 # يستخدم 50% من الذاكرة لـ ZRAM

# إعادة تشغيل الخدمة:
sudo systemctl restart zramswap

ضبط إعداد swappiness:

# تعديل ملف sysctl.conf:
sudo nano /etc/sysctl.conf

# أضف السطر التالي لضبط swappiness:
vm.swappiness=40

# تطبيق التغييرات دون إعادة التشغيل:
sudo sysctl -p

2. السيناريو الثاني: أنظمة مع SSD

إنشاء سواب تقليدي صغير (1-2GB) على SSD:

# إنشاء ملف سواب بحجم 2GB:
sudo fallocate -l 2G /swapfile

# تعيين الصلاحيات:
sudo chmod 600 /swapfile

# تهيئة الملف كسواب:
sudo mkswap /swapfile

# تفعيل السواب:
sudo swapon /swapfile

# جعله دائمًا عبر إضافته إلى /etc/fstab:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

3. السيناريو الثالث: بيانات غير قابلة للضغط

الاعتماد على السواب التقليدي (HDD/SSD):

# إلغاء تفعيل ZRAM (إذا كان مفعلًا):
sudo systemctl stop zramswap
sudo systemctl disable zramswap

# إنشاء سواب تقليدي (اتبع الخطوات في السيناريو الثاني).

4. السيناريو الرابع: استهلاك عالٍ للـ CPU

تقليل ضغط ZRAM أو استخدام خوارزمية أسرع:

# افتح إعدادات ZRAM:
sudo nano /etc/default/zramswap

# غيّر الخوارزمية إلى lz4 (الأقل استهلاكًا للـ CPU):
ALGO=lz4

# قلل حجم ZRAM إذا كان CPU ضعيفًا:
PERCENT=30

# إعادة تشغيل الخدمة:
sudo systemctl restart zramswap

5. السيناريو الخامس: أنظمة لا يمكن ترقية ذاكرتها

دمج ZRAM مع zswap:

# تفعيل zswap عبر تعديل إعدادات النواة:
sudo nano /etc/default/grub

# ابحث عن السطر GRUB_CMDLINE_LINUX_DEFAULT وأضف:
zswap.enabled=1 zswap.compressor=lz4

# تحديث GRUB:
sudo update-grub

# أعد تشغيل النظام:
sudo reboot

6. أدوات مساعدة إضافية

تثبيت EarlyOOM (لإنهاء العمليات تلقائيًا):

sudo apt install earlyoom
sudo systemctl enable --now earlyoom

تثبيت Systemd-swap (لإدارة ديناميكية):

sudo apt install systemd-swap
sudo systemctl enable --now systemd-swap

التحقق من الإعدادات

  • تحقق من فعالية ZRAM/zswap:

    swapon --show
    free -h
    dmesg | grep -i zram  # أو zswap
    
  • لمعرفة خوارزمية الضغط المستخدمة:

    cat /sys/block/zram0/comp_algorithm
    

ملاحظات مهمة

  1. في أوبونتو 22.04+، يكون ZRAM مفعلًا افتراضيًا عبر حزمة zram-tools.
  2. إذا كان النظام يستخدم الذاكرة العشوائية (RAM) بكثافة، قلل vm.swappiness إلى 20.
  3. لخوادم البيانات الضخمة، يُفضل استخدام سواب تقليدي على NVMe مع ZRAM.
  4. اختبر الأداء بعد التعديلات بأدوات مثل htop أو sysstat.

الخلاصة:

  • ZRAM هو الحل الأمثل لمعظم الأنظمة محدودة الذاكرة، خاصة مع ضبط خوارزمية الضغط (zstd للأداء المتوازن).
  • في الحالات القصوى (مثل بيانات غير قابلة للضغط أو أنظمة حرجة)، يُفضّل الجمع بينه وبين سواب تقليدي على قرص سريع أو زيادة الذاكرة الفعلية.
  • لا يوجد حل واحد يناسب جميع السيناريوهات، لذا يُنصح باختبار الأداء تحت الحمل الفعلي.