tgoop.com/linuxtnt/4575
Last Update:
نکته #لینوکس_پیشرفته 2
⭐️ مدیریت حافظههای کش در کرنل لینوکس
🔹سیستمعامل لینوکس بهصورت هوشمند از حافظهی RAM نهفقط برای اجرای برنامهها، بلکه برای افزایش کارایی I/O از طریق مکانیزمهای Cache و Buffer استفاده میکند. در کرنلهای مدرن لینوکس (از حدود سال ۲۰۰۱ به بعد)، Page Cache و Buffer Cache ادغام شدهاند
🔹کرنل لینوکس برای مدیریت و آزادسازی این حافظههای کش، از الگوریتمهای پیشرفتهای مانند LRU/Active و Inactive بهره میبرد. وقتی سیستم با کمبود RAM روبهرو میشود، کرنل ابتدا صفحات کماستفادهتر (غیرفعال) را از کشهایی مانند Page Cache یا Slab آزاد میکند.
🔻 مراحل کلی آزادسازی حافظه کش توسط کرنل:
🔻آزاد کردن صفحات تمیز (Clean Pages): این صفحات یک کپی معتبر در دیسک دارند و میتوانند بلافاصله دور ریخته شوند.
🔻نوشتن صفحات کثیف (Dirty Pages): صفحاتی که تغییر کردهاند، ابتدا باید روی دیسک نوشته (Sync) شوند تا پس از آن به عنوان صفحه تمیز آزاد گردند.
🔻کوچک کردن حافظه Slab: در این مرحله ساختارهای کرنلی کماستفاده مانند dentry و inode cache آزاد میشوند.
🔹 مشاهده وضعیت Cache
برای بررسی وضعیت کش، از دستورات زیر استفاده کنید:
$ free -h
$ cat /proc/meminfo | grep -E "Cached|Buffers|SReclaimable"
$ vmstat -s | grep cache
📘 انواع حافظههای کش در لینوکس
🔹 Page Cache
دادههای فایلها و دادههای خوانده شده از دیسک در این حافظه نگهداری میشوند.
🎯 هدف: افزایش سرعت عملیات خواندن و نوشتن (از طریق بهتعویق انداختن نوشتن).
🔹 Dentry Cache
ساختارهای مربوط به مسیرها و نام فایلها (directory entries) را در حافظه ذخیره میکند.
🎯 هدف: افزایش سرعت دسترسی به فایلها و دایرکتوریها.
🔹 Inode Cache
ساختارهای *inode* فایلهای باز شده را در حافظه نگه میدارد.
🎯 هدف: کاهش بار روی فایلسیستم و تسریع عملیات فایل.
*(توضیح: در کرنلهای مدرن، "Buffers" عمدتاً به متادیتای فایلسیستم و دادههای بلاکدیوایس در حال انتقال اشاره دارد).*
نویسنده: حسین سیلانی. آموزش بیشتر در:
https://learninghive.ir
BY linuxtnt(linux tips and tricks)
Share with your friend now:
tgoop.com/linuxtnt/4575