درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
دوره های مرتبط
دوره های توسینسو
دوره آموزشی فوق تخصصی Shell Scripting در BASH Shell
مدرس: محمد عابدینی
این دوره را در 19 قسط خریداری کنید
دوره آموزشی کنترل پنل هاستینگ CWP
مدرس: فربد رستم صولت
این دوره را در 6 قسط خریداری کنید
گام به گام تخصصی مدیریت و پیکربندی سرورها با Ansible در لینوکس
مدرس: مجتبی اسمائی
این دوره را در 10 قسط خریداری کنید
دوره آموزشی بین المللی لینوکس LPIC1 کد 101
مدرس: محمد نصیری
این دوره را در 18 قسط خریداری کنید
دوره آموزشی راه اندازی سرویس های تحت شبکه در لینوکس CentOS
مدرس: آرش حیدری
این دوره را در 12 قسط خریداری کنید
دوره آموزشی رایگان نصب انواع لینوکس بصورت عادی و Dual Boot
مدرس: محمد عابدینی
این دوره را در 4 قسط خریداری کنید
دوره آموزشی جامع CentOS Web Panel یا CWP
مدرس: کاظم تقندیکی
این دوره را در 10 قسط خریداری کنید
دوره آموزشی بین المللی لینوکس LPIC1 کد 102
مدرس: محمد نصیری
این دوره را در 16 قسط خریداری کنید
دوره آموزشی بین المللی لینوکس LPIC2 کد 202
مدرس: امیرحسین احمدی
این دوره را در 29 قسط خریداری کنید
دوره اموزشي فوق تخصصي سيستم عامل لينوكس RHCSA قسمت اول
مدرس: علیرضا سیفی و هومن برازنده
این دوره را در 10 قسط خریداری کنید
دوره آموزشی بین المللی لینوکس LPIC2 کد 201
مدرس: محمد نصیری
این دوره را در 27 قسط خریداری کنید
آموزش نصب سیستم عامل اندروید روی کامپیوترهای شخصی با Android PC
مدرس: محمد عابدینی
این دوره را در 1 قسط خریداری کنید
دوره آموزشی Linux Essentials = دریچه ورود شما به دنیای لینوکس
مدرس: محمد نصیری
این دوره را در 17 قسط خریداری کنید
دوره آموزشی راه اندازی ایمیل سرور iRedMail در OpenBSD
مدرس: محمد عابدینی
این دوره را در 2 قسط خریداری کنید
دوره آموزشی مقدماتی BASH Scripting در لینوکس
مدرس: مجتبی اسمائی
این دوره را در 10 قسط خریداری کنید

نحوه آزاد سازی فضای Cache سیستمی در لینوکس

0 نظرات
59 بازدیدها
مثل همه ی سیستم عامل های دیگه, GNU/Linux نیز مدیریت حافظه خود را به صورت خیلی کارآمد تر از سایر سیستم عامل ها پیاده سازی کرده است, اما اگر پروسه ای شروع به نوشخوار کردن حافظه شما نماید و شما بخواهید آن را آزاد کنید, لینوکس راهی را به منظور flush یا آزادسازی ram cache در اختیار شما قرار میدهد.

چطور cache لینوکس را خالی کنیم؟


هر سیستم عامل لینوکس سه گزینه به منظور پاک کردن Cache سیستم بدون ایجاد وقفه هیچ در پروسه ها یا سرویس ها در نظر گرفته است:

۱) پاک کردن PageCache :
PageCache دسترسی های فراوان به فایل ها بر روی حافظه های غیرفرار (مانند ROM و Flash) برای شما تسریع خواهد کرد. زمانی که شما برای بار اول میخواهید بخوانید (از)/ بنویسید (به) داده مدیا مثل Hard Drive ها, لینوکس داده ها را بر روی فضای بدون استفاده از حافظه که بعنوان Cache شناخته میشود ذخیره میکند. به همین جهت دسترسی به آن فایل در دفعات بعدی سریع تر خواهد بود.

دستور آن به این صورت میباشد:
 sync; echo 1 > /proc/sys/vm/drop_caches

2) پاک کردن dentries و inode ها :
Inode ها یک ساختار داده ای هستن که بیانگر یک فایل هستن و dentries ها نیز ساختار داده ای هستن که بیانگر یک دایرکتوری میباشد. این ساختارها میتوانند به منظور ساخت یک cache حافظه , که بیانگر ساختار فایل برای روی دیسک هستند مورد استفاده قرار میگیرد.

دستور آن به صورت زیر میباشد:

sync; echo 2 > /proc/sys/vm/drop_caches

3) پاک کردن PageCache, dentries و inode :
دستور آن به صورت زیر میباشد:

sync; echo 3 > /proc/sys/vm/drop_caches

توضیح دستورات بالا:

دستور sync بافر فایل سیستم را flush خواهد کرد. دستورات به منظور اجرای دنباله دار با ; از یکدیگر جدا شده اند. همانطور که در مستندات Kernel آمده است, نوشتن داخل drop_cache بدون نابود کردن برنامه یا سرویسی cache را پاک خواهد کرد. دستور echo وظیفه نوشتن بر روی فایل را انجام خواهد داد.
اگر فقط بخواهید cache دیسک را پاک کنید, دستور اول امن ترین دستور میباشد (echo 1>...) که PageCache را پاک خواهد کرد. دستور سوم تا زمانی که از محتویات cache خود برای پاک سازی اطمینان ندارید, در سطح وسیع و سازمانی توصیه نمیشود.

آیا آزاد کردن Buffer و Cache در لینوکس که ممکن است توسط هسته لینوکس استفاده شده باشد ایده خوبی است؟


زمانی که شما دستگاه ورودی/خروجی را به سیستم متصل کرده اید و میخواهید تنظیمات مختلفی را اعمال و آن را چک نمایید, پس ممکن است که نیاز داشته باشید تا cache بافر را پاک کنید و میتوانید cache را بدون ریبوت کردن یا زمان خاموشی پاک نمایید.
لینوکس به نحوی طراحی شده است که قبل از جستجو داخل دیسک به disk cache نگاه میندازد, اگر منبعی که نیاز داشت را داخل cache پیدا کرد در نتیجه درخواست به دیسک نخواهد رسید و در صورت پاک کردن Cache, حافظه Disk Cache برای سیستم عامل کاربردی ندارد و به منظور دسترسی به منابع مستقیم به سراغ Disk خواهد رفت. همچنین برای لحظاتی سیستم را به جهت بازیابی و ذخیره لاگ توسط سیستم عامل درون disk cache کند خواهد کرد.

حال میخواهیم اسکریپتی به منظور پاک سازی RAM cache هر روز راس ساعت ۲ صبح به وسیله ی زمان بندی کار Cron ایجاد نمایم. یک shell script با دستور:

vi clearcache.sh

ایجاد مینماییم و خطوط زیر را در آن وارد میکنیم:

#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production instead use "echo 1"
echo "echo 3 > /proc/sys/vm/drop_caches"

نوع permission فایل clearcache.sh را جهت اجرایی شدن به صورت زیر تعیین مینماییم:
chmod 755 clearcache.sh

حال اسکریپت را هر زمان که بخواهیم میتوانیم با زدن دستور:
<powershell>
./clearchache.sh
<powershell>

اجرا نماییم ولی میتوانیم به صورت زمان بندی شده (که در بالا ذکر شد) نیز این روند را طی نماییم. ابتدا cron را به منظور اعمال زمان بندی خودکار باز میکنیم:

crontab -e

خط زیر را داخل فایل قرار میدهیم ذخیره کرده و خارج میشویم تا اسکریپت هر روز راس ساعت ۲ صبح اجرا شود.

0  2  *  *  *  /path/to/clearcache.sh

آیا پاک کردن خودکار RAM cache بر روی سرورهای مهم ایده مناسبی است؟


به هیچ وجه! یک لحظه چشم ها رو ببندید و به افتضاحی که ممکن است هر روز برای شما رقم بخورد فکر کنید. حال فرض کنید روزهای عادی مشکلی برای سرور شما به وجود نخواهد آمد چون مشتریان با تعداد عادی سر میزدند و بار زیادی بر روی سرورها نبود. حال مدیر فروشگاه برنامه تخفیف سراسری را میخواهد در فروشگاه پیاده سازی کند و به طبع درخواست بسیاری است که به وب سایت و سرور شما خواهد آمد. در نتیجه بعد از پاک شدن cache تمامی کاربران داده ها را از دیسک خواهند گرفت و در نتیجه باعث پایین آمدن سرور و اختلال در پایگاه داده سایت شما خواهد شد. پس ram cache را هر وقت نیاز است پاک نمایید نه به صورت خودکار.


چگونه فضای SWAP‌ را پاک کنیم؟


اگر بخواهید فضای SWAP را پاک کنید میتوانید دستور زیر را اجرا نمایید:

swapoff -a && swapon -a

همچنین بعد از متوجه شما تمام مخاطرات موجود میتوانید دستور بالا را به صورت فایل اجرایی داخل cron خود قرار دهید.
حال میتوانیم هر دو دستور را به صورت همزمان داخل یک خط دستور برای ایجاد یک اسکریپت مناسب جهت پاک سازی RAM cache و فضای SWAP با یکدیگر ترکیب نماییم.


echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'
OR
$ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root

بعد از اجرای دستور بالا, دستور free -h را قبل و بعد از اجرای اسکریپت به منظور چک کردن Cache اجرا خواهیم کرد.


نویسنده : امین سالم
منبع : ITPRO
هرگونه نشر و کپی برداری با ذکر منبع و نام نویسنده و یا بدون ذکر نام منبع به منظور نشر اطلاعات و وسیع تر شدن جامعه لینوکس و متن باز باعث خوشحالی بنده می باشد.
برچسب ها
مطالب مرتبط

در حال دریافت اطلاعات

نظرات
هیچ نظری ارسال نشده است

    برای ارسال نظر ابتدا به سایت وارد شوید

    arrow