اجرای چندین تب مرورگر، ماشینهای مجازی یا برنامههای پرمصرف حافظه در یک سیستم لینوکس با RAM محدود، معمولاً باعث کاهش عملکرد یا قفل شدن سیستم میشود. بخشهای swap سنتی یا فایلهای swap روی هارد دیسکها و SSDها از RAM کندتر هستند و وقتی سیستم حافظه فیزیکی را تمام میکند، تاخیر قابل توجهی ایجاد میکنند. Zram یک راهحل عملی ارائه میدهد که دادههای swap را مستقیماً در RAM فشرده میکند، به این ترتیب سیستمها میتوانند دادههای بیشتری را در حافظه ذخیره کنند و دسترسی کند به دیسکها را به طور قابل توجهی کاهش دهند.
فعالسازی و پیکربندی Zram در لینوکس
مرحله ۱: بسته مدیریت Zram را برای توزیع خود نصب کنید. در Debian، Ubuntu و توزیعهای مشابه، بسته zram-tools فرآیند راهاندازی و پیکربندی را ساده میکند. یک ترمینال باز کنید و دستورات زیر را اجرا کنید:
sudo apt update
sudo apt install zram-tools
این بسته به طور خودکار یک دستگاه Zram راهاندازی میکند و ابزار zramctl را برای نظارت و مدیریت فراهم میکند.
مرحله ۲: پیکربندی Zram را برای تطبیق با بار کاری سیستم و RAM موجود تنظیم کنید. فایل پیکربندی را در مسیر /etc/default/zramswap ویرایش کنید:
sudo nano /etc/default/zramswap
الگوریتم فشردهسازی و درصدی از RAM را که میخواهید برای swap Zram اختصاص دهید، تنظیم کنید. به عنوان مثال، با استفاده از الگوریتم zstd که کارآمد است و اختصاص ۲۰٪ از RAM کل:
ALGO=zstd
PERCENT=20
در سیستمهایی که کمتر از ۸ گیگابایت RAM دارند، ممکن است با افزایش PERCENT به ۵۰ برای فضای بیشتر swap، بهرهوری بهتری داشته باشید. پس از انجام تغییرات، فایل را ذخیره کرده و ببندید.
مرحله ۳:
برای اعمال تغییرات، سرویس Zram را دوباره بارگذاری کنید:
sudo systemctl restart zramswap
برای اطمینان از فعال بودن Zram، دستور زیر را اجرا کنید:
zramctl
یا
swapon --show
خروجی باید دستگاه /dev/zram0 را نمایش دهد، که نشان میدهد swap فشرده شده در RAM اکنون فعال است.
بهینهسازی رفتار حافظه برای کارایی بهتر Zram
به طور پیشفرض، لینوکس ممکن است هنوز از swap مبتنی بر دیسک استفاده کند یا دادههای کش شده را به شیوههایی مدیریت کند که بهرهبرداری کامل از Zram را نداشته باشد. تنظیم دقیق پارامترهای سیستم میتواند باعث بهبود سرعت پاسخدهی و جلوگیری از کندیهای غیرضروری شود.
مرحله ۴:
تنظیمات مدیریت حافظه هسته را با ایجاد یا ویرایش یک فایل پیکربندی sysctl سفارشی تنظیم کنید:
sudo nano /etc/sysctl.d/99-zram-tweaks.conf
سپس تنظیمات زیر را برای تعادل استفاده از swap، نگهداری کش و رفتار نوشتن دیسک اضافه کنید:
vm.swappiness=50
vm.vfs_cache_pressure=50
vm.dirty_background_ratio=5
vm.dirty_ratio=10
- vm.swappiness کنترل میکند که هسته چقدر به استفاده از swap تمایل دارد. مقدار ۵۰ استفاده از swap Zram را تشویق میکند بدون اینکه بیش از حد از آن استفاده کند. مقادیر پایینتر باعث تأخیر در swap میشوند، در حالی که مقادیر بالاتر سریعتر از swap استفاده میکنند.
- vm.vfs_cache_pressure تعیین میکند که کشهای inode و dentry چقدر سریع بازپسگیری شوند. مقدار ۵۰ باعث میشود که متاداده فایلها بیشتر در RAM نگهداری شوند تا دسترسی به فایلها سریعتر شود.
- vm.dirty_background_ratio و vm.dirty_ratio مشخص میکنند که سیستم از چه زمانی شروع به نوشتن دادههای ذخیرهنشده به دیسک میکند. مقادیر پایینتر ریسک نوشتنهای بزرگ ناگهانی روی دیسک که میتواند باعث کندی شود، به ویژه روی HDD ها، را کاهش میدهند.
اعمال تغییرات بهصورت فوری:
برای اعمال تغییرات بهطور فوری، دستور زیر را اجرا کنید:
sudo sysctl --system
برای سیستمهایی که حافظه RAM محدودی دارند یا ذخیرهسازی کندی دارند، ممکن است بخواهید vm.swappiness را به ۱۰–۲۰ کاهش دهید تا استفاده از RAM اولویت داشته باشد، یا آن را به ۱۰۰–۱۸۰ افزایش دهید تا از Zram swap بهطور تهاجمیتری استفاده شود. اگر نیاز دارید تا RAM از کشها سریعتر بازیابی شود تحت بار کاری سنگین، vm.vfs_cache_pressure را به سمت بالا تنظیم کنید (مثلاً ۱۰۰–۲۰۰).
غیرفعال کردن swap دیسک سنتی (اختیاری)
در سیستمهایی که استفاده از swap مبتنی بر دیسک باعث کندی محسوس یا فرسایش بیش از حد SSD میشود، ممکن است بخواهید swap سنتی را بهطور کامل غیرفعال کرده و فقط از Zram استفاده کنید. ابتدا ورودی swap در فایل /etc/fstab را کامنت کنید یا حذف کنید و سپس فایل swap را خاموش کنید:
sudo swapoff /swapfile
پس از غیرفعال کردن swap دیسک، مطمئن شوید که swap Zram اولویتدار است و برای بار کاری معمولی شما کافی است. اگر بهطور مکرر هم RAM و هم Zram را تمام میکنید، پیشنهاد میشود یک swap دیسک کوچک بهعنوان پشتیبان نگه دارید تا از بروز خطاهای out-of-memory جلوگیری کنید.
انتخاب الگوریتم فشردهسازی مناسب و اندازه Zram
Zram از چندین الگوریتم فشردهسازی پشتیبانی میکند که هرکدام دارای مزایا و معایب مختلفی از نظر سرعت و نسبت فشردهسازی هستند. zstd فشردهسازی بالا با سرعت خوب در بیشتر پردازندههای مدرن ارائه میدهد که آن را به انتخاب پیشفرض مناسبی تبدیل میکند. برای مشاهده الگوریتمهای پشتیبانیشده میتوانید دستور زیر را اجرا کنید:
cat /sys/block/zram0/comp_algorithm
برای تغییر الگوریتم، تنظیمات ALGO را در فایل پیکربندی خود مانند بالا بهروزرسانی کنید.
انتخاب اندازه Zram
هنگام انتخاب اندازه Zram، باید توجه داشته باشید که اندازه پیکربندیشده، حداکثر دادههای فشردهنشدهای است که Zram میتواند ذخیره کند. استفاده واقعی از RAM به دلیل فشردهسازی کمتر خواهد بود، اما نباید تمام حافظه سیستم را به Zram اختصاص دهید. برای بیشتر سیستمهای با RAM کمتر از ۸ گیگابایت، اختصاص ۲۰–۵۰٪ مؤثر است. اختصاصهای بیشتر ممکن است حافظه موجود برای فرآیندها و کشهای فعال را کاهش دهد که میتواند باعث کندی دیگر وظایف شود.
مقایسه Zram و Zswap
Zram و Zswap هر دو ویژگیهای هسته لینوکس هستند که حافظه را فشرده میکنند، اما رویکردهای متفاوتی دارند. Zram یک دستگاه swap فشردهشده را کاملاً در RAM ایجاد میکند، که نیاز به swap مبتنی بر دیسک را کاهش داده یا حتی حذف میکند. از طرف دیگر، Zswap به عنوان یک کش فشرده برای صفحات swap عمل میکند پیش از آنکه آنها به دیسک نوشته شوند، بهطور دینامیک از RAM استفاده میکند و تنها زمانی که کش پر شود به دیسک منتقل میشود.
Zram برای دسکتاپها، لپتاپها و دستگاههایی که در آنها swap دیسک کند یا غیرمطلوب است، و جایی که میخواهید ظرفیت swap در حافظه را به حداکثر برسانید، بهترین انتخاب است.
Zswap معمولاً در سرورها یا سیستمهایی با SSDهای سریع ترجیح داده میشود، جایی که هنوز swap دیسک قابل استفاده است، اما کاهش فرکانس نوشتن و اندازه swap مفید است.
هر دو روش میتوانند مؤثر باشند، اما نباید همزمان فعال شوند مگر اینکه یک پیکربندی پیشرفته خاص در نظر داشته باشید. برای بیشتر سیستمهای کمحافظه، Zram بهترین بهبود فوری و قابل مشاهده در پاسخدهی و سرعت تغییر برنامهها را فراهم میکند.
نظارت بر استفاده و عملکرد Zram
پس از فعالسازی Zram، میتوانید کارایی آن را با دستور زیر نظارت کنید:
zramctl --output-all
این دستور اندازه دستگاه Zram، میزان دادههای فشردهنشده ذخیرهشده، اندازه فشردهشده و نسبت فشردهسازی بهدستآمده را نشان میدهد. مقایسه این اعداد به شما کمک میکند تا بفهمید سیستم شما چقدر داده اضافی میتواند در RAM ذخیره کند قبل از اینکه مجبور به استفاده از swap دیسک شود. اگر متوجه شدید که Zram به ندرت پر میشود یا سیستم شما هیچگاه از swap استفاده نمیکند، ممکن است بتوانید اندازه آن را کاهش دهید و RAM بیشتری برای استفادههای دیگر بازیابی کنید.
برای بررسی عملکرد مداوم، پاسخدهی سیستم را در هنگام انجام چندکار سنگین نظارت کنید. برنامهها باید سریعتر جابجا شوند و سیستم باید از یخزدن یا گیر کردن هنگام تمام شدن حافظه جلوگیری کند. اگر همچنان کندیهایی تجربه میکنید، تنظیمات Zram، تنظیمات sysctl یا ارتقاء حافظه فیزیکی RAM را در نظر بگیرید.
اختصاص swap فشردهشده در RAM با استفاده از Zram عملکرد لینوکس را در سیستمهای کمحافظه بهینه میکند و به شما این امکان را میدهد که برنامهها و تبهای مرورگر بیشتری را بدون کندی ناشی از swap دیسک باز کنید. پیکربندی خود را برای سختافزار و بار کاری خود تنظیم کنید تا بهترین افزایش عملکرد را در استفاده روزمره تجربه کنید.