اقرأ available بدلاً من free
يستخدم Linux الذاكرة غير المستغلة كذاكرة مخبئية للقرص، لذا من الطبيعي انخفاض free على خادم سليم. العمود available هو تقدير النواة لمقدار الذاكرة الذي يمكن إتاحته لعمل جديد دون نقل صفحات إلى swap. هذا هو الرقم الذي ينبغي مراقبته. يعتمد الحساب الدقيق لـ used على إصدار الأداة، لذا لا تقارنه بين أنظمة مختلفة.
free -h
grep -E 'MemAvailable|Shmem:|SReclaimable' /proc/meminfoما يمكن تحريره من الذاكرة المخبئية وما لا يمكن
يمكن عادة تحرير الذاكرة المخبئية للصفحات عندما تحتاج التطبيقات إلى ذاكرة. تظهر الذاكرة المشتركة وtmpfs (Shmem) ضمن الذاكرة المخبئية أيضاً، لكن لا يمكن إسقاطها ببساطة لأنها تحتوي على بيانات ليس لها نسخة على القرص. لذلك غالباً ما تعني ذاكرة مخبئية كبيرة مع انخفاض available وجود tmpfs كبير أو مقطع كبير من الذاكرة المشتركة.
df -h -t tmpfs
sudo slabtop -o | head -15استخدام swap لا يعني وجود مشكلة تلقائياً
قد يحتفظ الخادم بصفحات نادرة الاستخدام في swap لأسابيع دون ضرر. ما يضر هو النقل المستمر. راقب العمودين si وso في vmstat: بقاء القيم أعلى من الصفر يعني أن النظام ينقل الصفحات فعلياً من swap وإليه، وهي علامة على نقص حقيقي في الذاكرة.
swapon --show
vmstat 1 5اعرف ما يستهلك الذاكرة
رتّب العمليات حسب الذاكرة المقيمة. يحتسب RSS الصفحات المشتركة بين العمليات في كل عملية منها، لذا لا يصح جمع قيم عدة عمليات ببساطة. تعطي الأدوات التي توفر PSS، مثل smem، مجموعاً أكثر تمثيلاً للاستخدام الفعلي إذا كانت مثبتة.
ps -eo pid,user,rss,comm --sort=-rss | head -15تعرّف على نقص الذاكرة الحقيقي
العلامات هي انخفاض available والنقل المستمر من swap وإليه وإنهاء العمليات بواسطة آلية out-of-memory killer. افحص سجل النواة. لا تشغّل drop_caches لتحسين مظهر الأرقام: فهذا يجعل الخادم يقرأ من القرص مجدداً فقط، ولا يحل شيئاً.
sudo journalctl -k --no-pager | grep -iE 'out of memory|oom-kill'الذاكرة في CH-J Server Manager
يقرأ System Monitor هذه القيم عبر SSH. في Linux، يعرّف used بأنه MemTotal − MemFree − Buffers − Cached − SReclaimable، وavailable بأنه تقدير النواة. الذاكرة المشتركة جزء من Cached ولا يمكن تحريرها، ولا تتداخل الفئات في الشريط. ولأن المعادلة تختلف عن بعض إصدارات free، قد لا تتطابق الأرقام تماماً. ويعرض أيضاً swap مع سجل استخدامه. لا يُعامل ZFS ARC بصورة منفصلة، لذا يُحتسب على مضيفي ZFS ضمن الذاكرة المستخدمة.