أداء Raspberry Pi: إضافة ZRAM وتغيير معلمات Kernel

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

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

تفعيل ZRAM على Raspberry Pi

أداء Raspberry Pi: إضافة ZRAM وتغيير معلمات Kernel

زرام يقوم بإنشاء وحدة تخزين كتلة في ذاكرة الوصول العشوائي باسم / 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) يؤخر استنفاد الذاكرة الذي لا مفر منه، عن طريق زيادة الضغط على kernel cache و 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٪ ، لكن النظام لن يفرض إدخال / إخراج متزامن حتى يصل إلى 50٪ dirty_ratio.

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

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

حتى مع تقليل التخزين المؤقت ، إذا تم شغل معظم الذاكرة المثبتة بمرور الوقت ، فستبدأ النواة عملية التبديل في وقت أقرب بكثير ، لذلك لن يتم سحب وحدة المعالجة المركزية (الضغط) ومبادلة الإدخال / الإخراج إلى الأخير واستخدام جميع الموارد في الحال عندما يكون الوقت قد فات. يستخدم 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 ما يقرب من XNUMX جيجا بايت من البيانات غير المضغوطة. ذهب كل شيء إلى ZRAM ولم يتم إدخال أي شيء في ملف المبادلة الأبطأ بكثير. جرب هذه الإعدادات بنفسك ، فهي تعمل على جميع طرز Raspberry Pi. لقد تحول نظام التعليق غير القابل للاستخدام إلى نظام عملي ومستقر.

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

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

المصدر: www.habr.com

إضافة تعليق