تمهيد
عندما تواجه بطئاً مفاجئاً أو ترغب في تقييم مدى كفاءة استهلاك الموارد داخل خوادم Ubuntu وتوزيعات Linux المختلفة، فإن أداة free تشكل خط الدفاع الأول لأي مدير نظام. يهدف هذا المقال إلى تفكيك آلية عمل هذه الأداة بصورة تطبيقية عميقة؛ حيث سنتناول ضبط وحدات القياس، والفروق الجوهرية غير الواضحة للكثيرين بين حقلي available وfree، وكيفية التعامل مع الذاكرة المخصصة للـ buff/cache، فضلاً عن إجراء اختبار عملي لتتبع استجابة الذاكرة تحت الضغط الفعلي.
1. قراءة الذاكرة بوضوح: خيارات التحكم في وحدات القياس العرضية (-h, -m, -g)
توفر أداة free تقريراً شاملاً يوضح حالة الذاكرة العشوائية الفعلية (RAM) وذاكرة التبديل الافتراضية (Swap)، مفصلة بين الإجمالي، المستهلك، والمتاح.
يؤدي تشغيل الأمر منفرداً دون وسائط إلى إظهار الأرقام بوحدة الكيبي بايت (KiB)، مما يصعّب القراءة والتحليل السريع على مسؤولي الأنظمة.
⚙️ [أبرز الوسائط والمعاملات التكميلية]
-b : استعراض أحجام الذاكرة بصيغة البايت المجرد (Bytes).-k : اعتماد وحدة الكيلوبايت (KiB) كمعيار للنتائج (وهو الإعداد الافتراضي).-m : تحويل كافة القراءات والإحصاءات إلى الميجابايت (MiB).-g : عرض الإحصائيات بوحدة الجيجابايت (GiB).--mega : احتساب القيم وفق النظام العشري المتري (1MB = 1,000,000 بايت) عوضاً عن مضاعفات 1024.--giga : تطبيق الحساب العشري للجيجابايت (1GB = 1,000,000,000 بايت).-h : التنسيق التلقائي المقروء بشرياً (Human-readable) باختيار الوحدة الملائمة تلقائياً (B, Ki, Mi, Gi, Ti).-w : وضع العرض الموسّع (wide mode)، والذي يفصل بين إحصائيات التخزين المؤقت (buffers) والكاش (cache) بشكل مستقل.-c [العدد] : تحديد عدد مرات تكرار الفحص قبل إنهاء تنفيذ الأمر.-s [الثواني] : ضبط الفاصل الزمني بالثواني بين كل تحديث متتالي لبيانات الذاكرة.-t : إضافة سطر إجمالي ختامي (Total) يدمج إحصاءات الذاكرة الفعلية مع ذاكرة التبديل.

يتولى الخيار free -h تحويل مخرجات الذاكرة إلى تنسيق بديهي وسهل الاستيعاب للمهندسين والمشرفين.
تكمن قوة هذا المعامل في إدراجه التلقائي لاختصارات السعة مثل GiB و MiB و KiB، مما يجعله الخيار الأكثر اعتماداً واستخداماً خلال الفحوصات الروتينية واليومية للنظام.

عند تنفيذ free -m، تُوحّد كافة الأعمدة والبيانات لتعتمد الميجابايت (MiB) كوحدة قياس قياسية.
هذا النمط من الإخراج الرقمي الموحد الخالي من الحروف والرموز المتغيرة يمنحك ميزة كبرى عند معالجة النصوص داخل سكربتات باش (Bash Scripts)، أو عند الحاجة لإجراء مقارنات رقمية برمجية بالغة الدقة.

2. التحليل الهيكلي للأعمدة: فهم الفارق بين free و available ودور Buffers/Cache
بمجرد استعراض مخرجات free -h، ستظهر مجموعة أعمدة توضح بنية توزيع الذاكرة في اللحظة الراهنة.
من الضروري الانتباه إلى أن حقل free يعبر حصراً عن الذاكرة الخام غير المستغلة تماماً، والتي تقف خاملة دون أي تخصيص داخل النظام.
في المقابل، يمثل حقل available المؤشر الحقيقي لقدرة النظام الاستيعابية؛ إذ يوضح حجم الذاكرة التقريبي الذي تستطيع نواة لينكس توفيره فوراً لصالح تطبيق جديد عبر تفريغ مساحات التخزين المؤقت والكاش غير الضرورية دون الحاجة إلى اللجوء لذاكرة التبديل (Swap).
لذا، فإن الاعتماد المهني السليم لتقييم وفرة الذاكرة يجب أن يرتكز دوماً على قيمة available وليس free.

يتيح إدخال المعامل -w كما في free -h -w تفكيك العمود المشترك buff/cache وعرض كل من buffers وcache في عمودين مستقلين تماماً.
يخصص قسم buffers لتخزين البيانات الوصفية (Metadata) لملفات النظام وعمليات الإدخال والإخراج المجدولة للأقراص مؤقتاً داخل النواة.
أما قسم cache (المعروف بـ Page Cache)، فيحتفظ بنسخ من الملفات التي تمت قراءتها من الأقراص الصلبة لرفع سرعة الاستجابة اللحظية وتقليل زمن الوصول المستقبلي.
تعد هاتان المساحتان بمثابة صمام أمان؛ فالنواة قادرة على التخلي عنهما وتفريغ محتواهما لصالح البرامج والتطبيقات متى ما استدعت الحاجة دون التأثير على استقرار النظام.

لقراءة الإحصاءات الخام والمباشرة كما تسجلها النواة في نظام الملفات الوهمي، يمكننا فحص الأسطر الأولى عبر head -n 10 /proc/meminfo.
تعتمد أداة free في كافة حساباتها على هذا الملف التكويني لاشتقاق متغيرات MemTotal و MemFree و MemAvailable و Buffers و Cached.
يساعدك هذا الإجراء في التأكد التبادلي من صحة مؤشرات الأدوات السطحية، والتعمق في فحص سلوكيات إدارة الذاكرة على مستوى النواة (Kernel).

3. أدوات المتابعة الحية وحساب السعة التراكمية (-s, -c, -t)
يضيف استخدام المعامل -t ضمن الأمر free -h -t سطر إجمالي جديد تحت مسمى Total، وهو حاصل الجمع الحسابي لذاكرة الوصول العشوائي (Mem) ومساحة التبديل (Swap).
يمنحك هذا السطر المدمج رؤية بانورامية شاملة حول استهلاك الموارد الكلية للخادم دون الحاجة للقيام بعمليات حسابية يدوية بين نوعي الذاكرة.

يوفر الأمر free -h -s 2 -c 3 وسيلة فعالة للمراقبة الآنية؛ حيث يجدد البيانات كل ثانيتين (-s 2) على مدار 3 دورات متتالية (-c 3).
هذه التقنية لا غنى عنها عند مراقبة سلوك النظام وتتبع استهلاك الذاكرة أثناء بدء تشغيل خدمة ثقيلة أو تنفيذ عمليات استعلامية معقدة.

4. محاكاة عملية: فحص الاستجابة الديناميكية للذاكرة تحت أحمال حقيقية
لبدء اختبار التحمل وتقييم استجابة النظام، سنقوم أولاً بتثبيت حزمة الاختبار المتخصصة stress.

نبدأ بتسجيل قراءة مرجعية لحالة الخادم المستقرة قبل تطبيق أي جهد عبر تنفيذ free -h.
توضح المعطيات الأولية أن الذاكرة المستهلكة used تبلغ 5.2GiB، والذاكرة الشاغرة تماماً free تسجل 1.2GiB، بينما تقف الذاكرة المتاحة للتشغيل available عند 2.0GiB، مما يمثل حالة تشغيلية متوازنة.

سنقوم الآن بحقن حمل تجريبي باستهلاك 256 ميجابايت من الذاكرة لمدة خمس ثوانٍ باستخدام stress --vm 1 --vm-bytes 256M --timeout 5s.
تُنشئ هذه العملية عاملاً افتراضياً يحجز هذا الحجم ثم يحرره، مما يسمح بمراقبة مرونة النواة في تخصيص الذاكرة آنياً.

نعيد تنفيذ free -h فوراً لرصد التبدلات الطارئة على المؤشرات جراء ضغط العمل المحاكى.
نلاحظ استجابة النظام الفورية؛ حيث ارتفع الحجم المستهلك used من 5.2GiB إلى 5.3GiB، بينما تقلصت المساحة الخاملة free من 1.2GiB إلى 1.0GiB، وهبطت المساحة المتاحة available من 2.0GiB إلى 1.9GiB، مما يبرهن على سرعة النواة في استقطاع الموارد وتخصيصها لتلبية طلب العملية الحالية.

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