سیستم عامللینوکس

نحوه پاک کردن حافظه Buffer ، Cache و Swap در لینوکس

پیش از اینکه به نحوه پاک کردن حافظه Buffer ، Cache و Swap در لینوکس بپردازیم، بهتر است بدانیم که هر کدام از این موارد به چه مفهوم هایی اشاره دارد.

حافظه کش صفحه (PageCache)

حافظه PageCache شامل اطلاعاتی است که برای کارایی و سرعت بیشتر سیستم در حافظه نگهداری می‌شوند. این اطلاعات می‌توانند از دیسک‌ها، شبکه یا حافظه RAM باشند و می‌توانند شامل فایل‌ها، برنامه‌های اجرا شده و … باشند. هنگامی که سیستم به یک فایل یا برنامه‌ای نیاز دارد، در ابتدا به دنبال آن در حافظه Cache می‌گردد و در صورتی که در آنجا پیدا شود، به سرعت در اختیار سیستم قرار می‌گیرد. اگر نیز در حافظه Cache پیدا نشود، در این صورت به دیسک نوشته و از آنجا خوانده می‌شود.

حافظه بافر (Buffer)

حافظه Buffer مجموعه‌ای از داده‌هایی است که برای پردازش ورودی/خروجی (Input/Output) به کار می‌رود. برای مثال، هنگامی که یک فایل را باز می‌کنید، داده‌های آن در حافظه Buffer ذخیره می‌شوند و سپس به برنامه ارسال می‌شوند. هدف از استفاده از حافظه Buffer افزایش سرعت پردازش داده‌های ورودی/خروجی است.

حافظه سواپ (Swap)

حافظه Swap برای افزایش ظرفیت حافظه استفاده می‌شود. در صورتی که حجم حافظه فیزیکی (RAM) سیستم کافی نباشد، حافظه Swap برای ذخیره داده‌هایی استفاده می‌شود که بیشتر از یکبار استفاده نمی‌شوند. به عبارت دیگر، در صورتی که حافظه RAM پر شده و نیاز به ذخیره بیشتر داده‌ها باشد، داده‌هایی که در حافظه RAM کمتر استفاده می‌شوند به حافظه Swap منتقل می‌شوند. این عمل باعث آزاد شدن حافظه RAM می‌شود تا بتواند برای ذخیره داده‌های جدید استفاده شود.

در لینوکس، حافظه Swap معمولاً در یک پارتیشن از هارد دیسک تعریف می‌شود. این حافظه Swap برای نوشتن داده‌های پیوسته (contiguous data) به هارد دیسک استفاده می‌شود. هنگامی که داده‌هایی در حافظه Swap ذخیره می‌شوند، سیستم به صورت خودکار تصمیم می‌گیرد کدام داده‌های در حافظه RAM باقی بمانند و کدام داده‌ها به حافظه Swap منتقل شوند.

استفاده از حافظه Swap در لینوکس معمولاً به صورت خودکار تنظیم می‌شود، اما می‌توانید با استفاده از دستور swapon و swapoff وضعیت حافظه Swap را مشاهده و تغییر دهید. همچنین، می‌توانید با استفاده از دستورات free و vmstat وضعیت استفاده از حافظه Swap را مشاهده کنید.

نحوه پاک کردن حافظه Buffer ، Cache و Swap در لینوکس

همانطور که گفته شد حافظه Buffer و Cache در لینوکس برای ذخیره داده‌هایی که به طور مکرر استفاده می‌شوند و دسترسی به آن‌ها سریعتر باشد، استفاده می‌شوند. همچنین، حافظه Swap برای ذخیره داده‌هایی که بیشتر از یکبار استفاده نمی‌شوند و حجم حافظه فیزیکی کافی نیست، استفاده می‌شود.

اما در برخی مواقع، حجم حافظه Buffer، Cache و Swap بیش از حد بالا می‌رود و باعث کندی سیستم می‌شود. برای رفع این مشکل، می‌توانیم حافظه‌های فوق را پاک کنیم تا فضای کافی برای استفاده در دسترس سیستم قرار بگیرد و سرعت سیستم بهبود یابد.

همچنین، در برخی موارد، این حافظه‌ها ممکن است حاوی داده‌های حساس یا خطرناک باشند که بهتر است پاک شوند تا جلوی دسترسی به این داده‌ها توسط افراد غیرمجاز گرفته شود.

پاک کردن PageCache

برای این کار ابتدا یک ترمینال لینوکس با دسترسی root بازم کنیم. برای رسیدن به دسترسی روت در لینوکس میتوانید از دستورات زیر استفاده کنید:

su -
or
sudo su -

سپس با اجرای دستور زیر کش سیستم لینوکس خود را آزاد کنید:

echo 1 > /proc/sys/vm/drop_caches

پاک کردن PageCache در لینوکس

این دستور با تنظیم مقدار 1 در فایل drop_caches، بافر و کش صفحه‌های سیستم را پاک می‌کند. این کار بهبود عملکرد سیستم، افزایش سرعت و بهبود پاسخگویی آن می‌تواند منجر شود.

پس از پاک کردن Cache لینوکس، با استفاده از دستور free -w -h می توانید میزان حافظه‌ی موجود در سیستم را بررسی کنید. در این دستور، ستون “cache” نشان‌دهنده‌ی حجم حافظه‌ی کش صفحه است. با بررسی این ستون، می توانید مشاهده کنید که چه مقدار از حافظه‌ی کش صفحه در لینوکس آزاد شده است.

پاک کردن حافظه dentries and inodes

دندانه ها (dentries) و inode ها ساختارهای داده‌ای هستند که یک دایرکتوری و فایل‌ها را به ترتیب نشان می‌دهند. هر دایرکتوری شامل یک لیست از دندانه‌ها است که هر دندانه به یک فایل یا دایرکتوری اشاره دارد و هر فایل هم با یک inode مربوط به خود مشخص می‌شود.

هم دندانه‌ها و هم inode ها می‌توانند برای ذخیره کش استفاده شوند. حافظه پنهان برای این است که نیازی به خواندن و نوشتن مجدد inode و دندانه‌ها از فضای ذخیره‌سازی نباشد که باعث بهینه‌سازی کارایی سیستم عامل میشود.

اما همانند کش صفحه، داشتن یک کش دندانه‌دار و یک کش inode در سیستم مهم است و ممکن است پر شود و سبب کندی سیستم شود. به خوشبختی، می‌توان کش دندانه‌ها و inode ها را پاک کرد تا فضای لازم را در دسترس سیستم قرار دهد.

برای پاک کردن این کش ها، با دسترسی روت در ترمینال، دستور زیر را وارد میکنیم:

echo 2 > /proc/sys/vm/drop_caches

پاک کردن حافظه dentries and inodes

پاک کردن حافظه سواپ (Swap)

در صورتی که متوجه شدید حافظه swap در توزیع لینوکس شما زیادی مورد استفاده قرار می گیرد و به صورت مداوم پر می شود، ممکن است نیاز باشد آن را پاک کنید. برای پاک کردن حافظه swap در لینوکس، می توانید از دستور swapon و swapoff استفاده کنید.

swapoff -a && swapon -a

پاک کردن حافظه سواپ (Swap)پاک کردن حافظه سواپ (Swap)

نتیجه گیری

حذف کش در لینوکس ممکن است در برخی موارد به سیستم شما آسیب بزند. کش در لینوکس به منظور بهبود عملکرد سیستم عامل استفاده می شود. با ذخیره برخی از داده ها در حافظه پنهان، برای اجرای سریع تر فرآیندهایی که در آینده ممکن است تکرار شوند، کمک می کند. با حذف کش، برخی از داده هایی که برای سریع تر کردن فرآیندها ذخیره شده بودند، پاک می شوند و سیستم مجبور می شود برای اجرای مجدد آنها، از منابع سیستم استفاده کند که زمان بر و نسبتاً کندتر است.

به علاوه، در برخی موارد، حذف کش می تواند باعث تنظیم مجدد برخی اطلاعات و تنظیمات سیستم شود که ممکن است برخی از نرم افزارها یا فرآیندهای سیستم با آنها مشکل داشته باشند.

با این حال، در برخی موارد نیز حذف کش می تواند مفید باشد. به عنوان مثال، در صورتی که کش به دلیل مشکلاتی از جمله پر شدن فضای ذخیره سازی، از کار افتادگی و یا خطای دیگر مشکل داشته باشد، حذف آن می تواند باعث بهبود عملکرد سیستم شود.

بنابراین، در کل، حذف کش در لینوکس باید با احتیاط و با توجه به موارد خاصی که ممکن است در هر سیستم وجود داشته باشد، انجام شود.

بیشتر بخوانید:

یوسف وفایی

فارغ التحصیل کارشناسی IT، علاقه مند به برنامه نویسی و علم امنیت، عاشق یادگیری حرفه های جدید، کنجکاو برای همه چیز، همچنین همیشه تلاش میکنم تا به هدفم برسم...

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


دکمه بازگشت به بالا