free کے بجائے available پڑھیں
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 -15swap کا استعمال خود بخود مسئلے کی علامت نہیں
سرور کم استعمال ہونے والے صفحات کو کئی ہفتوں تک swap میں بغیر نقصان رکھ سکتا ہے۔ نقصان مسلسل منتقلی سے ہوتا ہے۔ vmstat میں si اور so کالم دیکھیں: مسلسل صفر سے زیادہ رہنے والی قدروں کا مطلب ہے کہ سسٹم فعال طور پر صفحات 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 ہوسٹس پر اسے استعمال شدہ میموری میں شمار کیا جاتا ہے۔