ما حدّ الذاكرة الذي ينبغي تعيينه لـ Home Assistant؟

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

لا يوجد حد واحد صحيح لذاكرة Home Assistant. حدّد الحد انطلاقًا من ذروة الاستخدام التي قستها بنفسك، واترك ذاكرة RAM قابلة للاستخدام للمضيف والحاويات الأخرى، واعتبر أي إنهاء بسبب نفاد الذاكرة دليلًا على أن الحد أو عبء العمل يحتاج إلى التحقيق.

على خادم منزلي مشترك، لا تكفي قراءة حالة الخمول: فقد تنتج مهام Recorder والنسخ الاحتياطية وإعادة تحميل التكاملات ولوحات المعلومات وتسلسل أتمتة المنزل بالكامل النشط ذُرى مختلفة. يتمثل المسار الآمن في تسجيل خط أساس، واختيار حد قابل للتراجع أعلى من ذروة عبء العمل التي تم التحقق منها، والتأكد من أن المضيف لا يزال يملك هامشًا كافيًا، ثم إعادة اختبار فترة الانشغال الأصلية قبل جعل الإعداد دائمًا.

ابدأ بالاستخدام الأقصى، لا برقم عام لذاكرة RAM

قِس استهلاك حاوية Home Assistant والمضيف في الوقت نفسه لعدة أيام عادية. أدرج إعادة التشغيل والنسخ الاحتياطي وتنظيف قاعدة البيانات أو إعادة حزمها إن كنت تستخدم أحدهما ونشاط لوحات المعلومات وأشد فترة أتمتة يمكنك إعادة إنتاجها بأمان. سجّل ذروة استهلاك الحاوية والذاكرة المتاحة للمضيف ونشاط الذاكرة المبادلة وما إذا كان زمن الاستجابة يتغير.

حد الذاكرة هو حد لمجموعة التحكم (cgroup)، وليس هدفًا للأداء. عندما تتجاوز الحاوية حدًا صارمًا، يمكن للنواة إنهاء إحدى العمليات؛ ويُعد رمز الخروج 137 مع حالة الإنهاء بسبب نفاد الذاكرة المؤشر المفيد. ولهذا تهم ذروة الاستخدام المرصودة أكثر من المتوسط أو توصية منسوخة.

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

احجز ذاكرة للمضيف ولكل خدمة مستضافة معه

أدرج الخدمات التي يجب أن تظل سريعة الاستجابة عندما يكون Home Assistant في أشد حالاته انشغالًا: نظام التشغيل وDocker وقاعدة البيانات وMQTT وDNS ولوحات المعلومات وخدمات الوسائط ومهام النسخ الاحتياطي. يجب أن يحمي الحد تلك الخدمات بالإضافة إلى Home Assistant؛ فإعطاء حاوية واحدة تقريبًا كل ذاكرة RAM المثبتة لا يفعل سوى نقل العطل إلى المضيف.

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

هذا قرار يتعلق بالسعة، وليس مجرد إعداد في Docker. يشرح دليل ZimaSpace ذي الصلة حول قياس Home Assistant بعد الذاكرة المؤقتة الدافئة سببَ منح عبء عمل بارد ونشط قابل للتكرار خط أساس أكثر موثوقية من لقطة مريحة لحالة الخمول.

طبّق حدًا قابلًا للتراجع وتحقق من فرضه

أضف إعداد الذاكرة إلى التهيئة التي تعيد إنشاء الحاوية فعليًا، مثل ملف Compose أو واجهة إدارة التنسيق. تجنّب الاعتماد على تحديث مباشر مؤقت إذا كان النشر التالي سيلغيه. احفظ التهيئة السابقة حتى تتمكن من استعادتها فورًا.

بعد إعادة الإنشاء، افحص الحاوية قيد التشغيل وتأكد من ظهور الحد المكوَّن. ثم راقب استخدام الحاوية والذاكرة المتاحة للمضيف والذاكرة المبادلة وعدد مرات إعادة التشغيل وزمن الاستجابة. إن ظهور إعداد معروض من دون أن يفرضه cgroup الخاص بالمضيف يمنح ثقة زائفة، لا سيما في المحاكاة الافتراضية المتداخلة.

إذا أعيد تشغيل الحاوية، فلا ترفع الحد تلقائيًا. تحقق مما إذا كان وقت التشغيل يُبلغ عن OOMKilled وعن رمز الخروج 137. وإذا لم يحدث ذلك، فابحث في مسار إيقاف آخر. أما إذا حدث، فقارن الطابع الزمني بعبء العمل: تشير الذروة القصيرة القابلة للتكرار إلى عدم كفاية مساحة التشغيل، بينما يشير النمو المستمر إلى تسرب أو تكامل خارج عن السيطرة.

أعد الاختبار تحت عبء عمل Home Assistant المنزلي النشط الأصلي

كرّر السيناريو نفسه المستخدم لإنشاء خط الأساس: أعد تحميل التكاملات نفسها، وافتح لوحات المعلومات نفسها، وشغّل تسلسل التحكم بالمنزل بالكامل نفسه، وأدرج النسخ الاحتياطي أو نشاط Recorder نفسه. فتغيير عبء العمل لن يثبت إلا أن نظامًا أخف يناسب.

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

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

الأسئلة الشائعة

هل ينبغي أن يكون لدى Home Assistant دائمًا حد صارم للذاكرة؟ على مضيف Docker مشترك، يمكن لحد مختبَر أن يحمي الخدمات الأخرى. أما جهاز HAOS أو الآلة الافتراضية المخصصة فتُضبط سعتهما بطريقة مختلفة، لذلك لا تنسخ حد حاوية إلى تخصيص آلة افتراضية من دون قياس الضيف بالكامل.

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

هل ينبغي تعطيل الذاكرة المبادلة؟ ليس كخطوة أولى. تعرّف أولًا إلى ما إذا كانت الذاكرة المبادلة تخفي ضغط المضيف أو تمنع حدوث عطل مفاجئ، ثم غيّرها فقط مع مسار تراجع مختبَر وذاكرة RAM فعلية كافية لعبء العمل الكامل.

الدعم والنصائح

المزيد للقراءة

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.