أداء Raspberry Pi: أضف ZRAM وغيّر معلمات kernel

قبل أسبوعين ، نشرت مراجعة Pinebook Pro . نظرًا لأن Raspberry Pi 4 يعتمد أيضًا على ARM ، فإن بعض التحسينات المذكورة في المقالة السابقة مناسبة تمامًا له. أود مشاركة هذه الحيل ومعرفة ما إذا كان لديك نفس التحسينات في الأداء.

بعد تثبيت Raspberry Pi في غرفة الخادم الرئيسية ، لاحظت أنه في أوقات النقص في ذاكرة الوصول العشوائي ، أصبحت غير مستجيبة للغاية وحتى معلقة. لحل هذه المشكلة ، أضفت ZRAM وأدخلت عدة تغييرات على معلمات kernel.

تفعيل ZRAM على Raspberry Pi




تقوم ZRAM بإنشاء تخزين كتلة في ذاكرة الوصول العشوائي (RAM) بالاسم / dev / zram0 (أو 1 ، 2 ، 3 ، إلخ.). الصفحات المسجلة هناك مضغوطة ومخزنة في الذاكرة. يسمح هذا بإدخال / إخراج سريع للغاية ، كما أنه يحرر الذاكرة بسبب الضغط.

يأتي Raspberry Pi 4 مع 1 أو 2 أو 4 أو 8 غيغابايت من ذاكرة الوصول العشوائي. سأستخدم طراز 1 جيجا بايت ، لذا اضبط التعليمات حسب طرازك. مع 1 جيجا بايت من ZRAM ، سيتم استخدام ملف المبادلة الافتراضي (البطيء!) بشكل أقل. لقد استخدمت مثل هذا البرنامج النصي للتثبيت zram للتثبيت والتكوين التلقائي.

يتم توفير التعليمات في المستودع على الرابط أعلاه. التركيب:

git clone https://github.com/foundObjects/zram-swap.git
cd zram-swap && sudo ./install.sh

إذا كنت تريد تعديل التكوين:

vi /etc/default/zram-swap

بالإضافة إلى ذلك ، يمكنك تنشيط ZRAM عن طريق التثبيت zram-tools. إذا كنت تستخدم هذه الطريقة ، فتأكد من تحرير التكوين في الملف /etc/default/zramswap، وتثبيت حوالي 1 جيجابايت من ZRAM:

sudo apt install zram-tools

بعد التثبيت ، يمكنك عرض إحصائيات مستودع ZRAM باستخدام الأمر التالي:

sudo cat /proc/swaps
Filename				Type		Size	Used	Priority
/var/swap                               file		102396	0	-2
/dev/zram0                              partition	1185368	265472	5
pi@raspberrypi:~ $

إضافة معلمات kernel لاستخدام ZRAM بشكل أفضل


الآن قم بإصلاح سلوك النظام عندما يتحول Raspberry Pi للتبديل في اللحظة الأخيرة ، مما يؤدي غالبًا إلى التجمد. أضف بضعة أسطر إلى الملف /etc/sysctl.conf وأعد التشغيل.

هذه الخطوط 1) تؤخر استنفاد الذاكرة الذي لا مفر منه ، وتزيد من الضغط على ذاكرة التخزين المؤقت للنواة ، و 2) تبدأ في وقت سابق في التحضير لاستنفاد الذاكرة ، مع بدء المبادلة مسبقًا. ولكنها ستكون أكثر فعالية من الذاكرة المضغوطة من خلال ZRAM!

فيما يلي الأسطر المطلوب إضافتها في نهاية الملف /etc/sysctl.conf :

vm.vfs_cache_pressure=500
vm.swappiness=100
vm.dirty_background_ratio=1
vm.dirty_ratio=50

ثم نقوم بإعادة تشغيل النظام أو تنشيط التعديلات بالأمر التالي:

sudo sysctl --system

vm.vfs_cache_pressure = 500 يزيد الضغط على ذاكرة التخزين المؤقت ، مما يزيد من ميل النواة لاستعادة الذاكرة المستخدمة لتخزين كائنات الدليل والفهارس. ستستخدم ذاكرة أقل لفترة أطول. يتم إلغاء الانخفاض الحاد في الإنتاجية من خلال المقايضات السابقة.

vm.swappiness = 100 يزيد من المعلمة إلى أي مدى ستتبادل النواة صفحات الذاكرة ، حيث نستخدم ZRAM أولاً.

vm.dirty_background_ratio = 1 & vm.dirty_ratio = 50 - ستبدأ عمليات الخلفية بالتسجيل فورًا بعد الوصول إلى الحد الأقصى البالغ 1٪ ، لكن النظام لن يفرض إدخال / إخراج متزامن حتى يصل إلى dirty_ratio بنسبة 50٪.

ستساعد هذه الخطوط الأربعة (عند استخدامها مع ZRAM) على تحسين الأداء إذا نفدت ذاكرة الوصول العشوائي حتمًا وبدأت في التبديل إلى التبديل ، مثل الخط الخاص بي. بمعرفة هذه الحقيقة ، بالإضافة إلى مراعاة ضغط الذاكرة في ZRAM ، من الأفضل ثلاث مرات بدء هذا التبادل مقدمًا.

يساعد الضغط على ذاكرة التخزين المؤقت لأننا في الواقع نقول للنواة: "مهلاً ، اسمع ، ليس لدي ذاكرة إضافية لاستخدامها في ذاكرة التخزين المؤقت ، لذا يرجى التخلص منها في أقرب وقت ممكن والاحتفاظ فقط بالبيانات الأكثر استخدامًا / المهمة".

حتى مع انخفاض التخزين المؤقت ، إذا كانت معظم الذاكرة المثبتة مشغولة بمرور الوقت ، ستبدأ النواة مبادلة انتهازية في وقت أبكر بكثير ، بحيث لا يسحب المعالج (الضغط) والتبديل I / O إلى الأخير ويستخدم كل الموارد في وقت واحد ، عندما يكون الوقت متأخرًا جدًا. تستخدم ZRAM القليل من وحدة المعالجة المركزية للضغط ، ولكن في معظم الأنظمة التي تحتوي على كمية صغيرة من الذاكرة ، يؤثر هذا على الأداء أقل بكثير من المقايضة بدون ZRAM.

أخيرا


دعونا نلقي نظرة على النتيجة مرة أخرى:

pi@raspberrypi:~ $ free -h
total used free shared buff/cache available
Mem: 926Mi 471Mi 68Mi 168Mi 385Mi 232Mi
Swap: 1.2Gi 258Mi 999Mi

pi@raspberrypi:~ $ sudo cat /proc/swaps 
Filename Type Size Used Priority
/var/swap file 102396 0 -2
/dev/zram0 partition 1185368 264448 5

264448 في ZRAM هو تقريبًا واحد غيغابايت من البيانات غير المضغوطة. ذهب كل شيء إلى ZRAM ولم يصل أي شيء إلى ملف المبادلة أبطأ بكثير. جرب هذه الإعدادات بنفسك ، فهي تعمل على جميع طرازات Raspberry Pi. لقد تحول نظام التجميد غير المناسب لي إلى نظام عملي ومستقر.

في المستقبل القريب ، آمل في متابعة هذه المقالة وتحديثها ببعض نتائج اختبار النظام قبل تثبيت ZRAM وبعده. الآن ليس لدي الوقت لذلك. في هذه الأثناء ، لا تتردد في تشغيل اختباراتك الخاصة وإخبارنا بذلك في التعليقات. إن Raspberry Pi 4 هو مجرد وحش بمثل هذه الإعدادات. استمتع بها!

حول هذا الموضوع:

All Articles