بازگشت به بلاگ
آموزش۲۹ شهریور ۱۴۰۵8 دقیقه مطالعه

چطور با Zram رم دانلود کنیم؟

با نحوه کارکرد Parch Zram و فشرده‌سازی درون حافظه برای افزایش ظرفیت قابل استفاده رم، جلوگیری از لگ و فریز دیسک و روان ماندن لینوکس آشنا شوید.

تیم پارچ لینوکس

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

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

مشکل سواپ سنتی بر روی دیسک

هر سیستم‌عامل کامپیوتری زمانی که برنامه‌های فعال فضایی بیش از آنچه رم فیزیکی می‌تواند فراهم کند طلب می‌کنند، به استراتژی‌های مدیریت حافظه متکی است. پاسخ سنتی همیشه فضای سواپ واقع بر روی یک هارد درایو، دیسک حالت جامد یا کارت micro-SD بوده است.

سواپ مبتنی بر دیسک کار می‌کند، اما افت عملکرد شدیدی به همراه دارد. هارد درایوهای مکانیکی هزاران بار کندتر از حافظه سیستم هستند که همین امر هرگونه سرریز حافظه را به فریزهای دردناک سیستم و ترشینگ تبدیل می‌کند. درایوهای حالت جامد مدرن سریع‌تر هستند، با این حال سواپ مداوم همچنان باعث تأخیر محسوس می‌شود و طول عمر محدود نوشتن سلول‌های حافظه فلش را به اتمام می‌رساند. در رایانه‌های تک‌بوردی مانند رزبری‌پای، سواپ مفرط روی دیسک می‌تواند کارت‌های micro-SD را در مدتی شگفت‌آور کوتاه تخریب و فاسد کند.

هنگامی که دسکتاپ شما شروع به سواپ سنگین روی فضای ذخیره‌سازی می‌کند، افت فریم، قفل شدن نشانگر ماوس و پنجره‌های غیرپاسخگو را تجربه می‌کنید. در بدترین شرایط، قاتل حافظه (out-of-memory killer) هسته لینوکس وارد عمل شده و برنامه‌های فعال شما را می‌کشد تا هسته را زنده نگه دارد.

ماژول ZRAM چگونه در زیر پوسته کار می‌کند

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

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

یک صفحه فشرده‌شده معمولاً بین نصف تا یک‌سوم اندازه اصلی خود را اشغال می‌کند. با معاوضه مقدار ناچیزی از زمان CPU در ازای صرفه‌جویی چشمگیر در فضا، سیستم شما می‌تواند داده‌های فعال به مراتب بیشتری را در همان تراشه‌های حافظه فیزیکی نگهداری کند. برای تمام مقاصد عملی، شما رم بیشتری دانلود کرده‌اید.

تکامل و مهندسی Parch Zram

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

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

ابزار Parch Zram این مشکل را با محاسبه ظرفیت هدف کل از یک درصد متعادل حافظه فیزیکی که به طور پیش‌فرض پنجاه درصد است حل می‌کند. سپس این کل منطقی را به طور مساوی بین تمام هسته‌های شناسایی‌شده CPU تقسیم می‌نماید. این معماری چنددستگاهی به سیستم‌عامل اجازه می‌دهد تا داده‌ها را در چندین رشته CPU به صورت همزمان و بدون تداخل قفل فشرده و بازگشایی کند.

یکی دیگر از بهینه‌سازی‌های حیاتی، همزیستی سواپ است. ابزارهای قبلی به طور مکرر دستوراتی را اجرا می‌کردند که تمام پارتیشن‌های سواپ موجود بر روی سیستم شما را به طور ناگهانی غیرفعال می‌کرد. ابزار Parch Zram به ساختار فضای ذخیره‌سازی شما احترام می‌گذارد. این ابزار صرفاً دستگاه‌های مجازی خود را راه‌اندازی و مدیریت می‌کند و به آن‌ها اولویت سواپ بالایی اختصاص می‌دهد تا هسته حافظه فشرده سریع را در ابتدا ترجیح دهد، در حالی که همچنان هرگونه سواپ از پیش موجود روی حافظه ذخیره‌سازی را به عنوان یک پشتیبان امن و آخرین چاره در دسترس باقی می‌گذارد.

این اسکریپت همچنین استانداردهای دقیق اسکریپت‌نویسی دفاعی شل را پیاده‌سازی می‌کند و پیش از هر اقدامی وابستگی‌های سیستم مانند awk، mkswap و swapon را اعتبارسنجی می‌نماید. این ابزار به عنوان یک سرویس تک‌مرحله‌ای (oneshot) با رفتار استاندارد در systemd کار می‌کند که به طور تمیز با سیستم‌عامل بوت می‌شود و تخصیص‌های هسته خود را هنگام خاموش شدن به آرامی تخلیه می‌کند.

نصب Parch Zram بر روی پارچ لینوکس

شروع کار در پارچ لینوکس بسیار آسان است زیرا بسته به طور مستقیم در مخزن رسمی پارچ لینوکس به عنوان world/parch-zram نگهداری می‌شود. شما نیازی به کلون کردن سورس‌کد یا کامپایل دستی بسته‌ها ندارید.

برای نصب Parch Zram بر روی ماشین پارچ خود، به سادگی آن را با pacman نصب کنید:

bash
sudo pacman -S parch-zram

پس از نصب، سرویس systemd را فعال کنید تا حافظه فشرده بلافاصله فعال شود و در هر بار بوت شروع به کار نماید:

bash
sudo systemctl enable --now parch-zram.service

سیستم شما اکنون به طور فعال در برابر اتمام ناگهانی حافظه محافظت شده است.

اگر در حال اجرای آرچ لینوکس خام یا توزیع مبتنی بر آرچ دیگری هستید که در آن بسته در مخازن سیستم وجود ندارد، می‌توانید آن را با استفاده از بسته‌ساز آرچ از سورس بسازید و نصب کنید:

bash
git clone https://github.com/behdanisohrab/parch-zram
cd parch-zram
makepkg -sic
sudo systemctl enable --now parch-zram.service

استفاده از Parch Zram در سایر توزیع‌های لینوکس

ابزار Parch Zram کاملاً قابل حمل است و در سایر توزیع‌های لینوکس و نصب‌های مستقل Raspberry Pi OS به طور پایدار کار می‌کند. یک اسکریپت نصب خودکار برای محیط‌هایی که مدیر بسته آرچ در آن‌ها موجود نیست درون مخزن فراهم شده است.

شما می‌توانید اسکریپت نصب را مستقیماً بررسی و اجرا کنید:

bash
git clone https://github.com/behdanisohrab/parch-zram
cd parch-zram
sudo chmod +x install.sh
sudo ./install.sh

این اسکریپت فایل‌های باینری و سرویس systemd ضروری را دریافت کرده، آن‌ها را در دایرکتوری‌های سیستمی مناسب قرار می‌دهد و سرویس را بلافاصله فعال می‌سازد.

اگر روزی تصمیم به حذف Parch Zram گرفتید، اسکریپت حذف همراه تمام فایل‌ها را پاکسازی کرده و سیستم شما را با خیال راحت به حالت اولیه بازمی‌گرداند:

bash
sudo chmod +x uninstall.sh
sudo ./uninstall.sh

گزینه‌های تنظیم و پیکربندی

ابزار Parch Zram با پیش‌فرض‌های امن و کاملاً آزمایش‌شده عرضه می‌شود که برای اکثریت قریب به اتفاق کاربران به خوبی کار می‌کنند. کاربران پیشرفته که مایل به سفارشی‌سازی راه‌اندازی خود هستند می‌توانند این کار را به سادگی از طریق متغیرهای محیطی انجام دهند.

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

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

الگوریتم فشرده‌سازی به طور پیش‌فرض روی LZ4 برای ایجاد تعادل ایده‌آل میان سرعت و کارایی تنظیم شده است. کاربرانی که به دنبال نسبت‌های فشرده‌سازی بالاتر به بهای بار پردازشی اندک CPU هستند می‌توانند تنظیم ZRAM_ALGORITHM را به ZSTD تغییر دهند.

سایر پارامترها شامل ZRAMNUMDEVICES برای نادیده گرفتن شناسایی خودکار هسته‌ها و ZRAMSWAPPRIORITY برای تعیین میزان اولویت هسته در هدایت صفحات حافظه به فضای ذخیره‌سازی فشرده نسبت به سایر فایل‌های سواپ است.

بررسی راه‌اندازی فعال شما

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

bash
zramctl

این ابزار هر دستگاه فعال ZRAM، الگوریتم فشرده‌سازی در حال استفاده، حافظه فیزیکی مصرف‌شده و اندازه کلی غیرفشرده ذخیره‌شده را نمایش می‌دهد. همچنین می‌توانید وضعیت کلی مصرف سواپ خود را با دستور swapon زیر نظر بگیرید:

bash
swapon --show

شما چندین دستگاه بلاکی zram را مشاهده خواهید کرد که با اولویت بالا کار می‌کنند و آماده هستند تا جهش‌های ناگهانی حافظه را بدون اینکه دستگاه شما متوقف شود مهار کنند.

یک تجربه محاسباتی روان‌تر

پارچ لینوکس همیشه کارایی، سادگی و یک تجربه دسکتاپ پیراسته را در اولویت قرار داده است. ابزارهایی مانند Parch Zram با استخراج حداکثر پتانسیل از سخت‌افزار فعلی شما، تجسم این فلسفه هستند.

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

#پارچ لینوکس#Parch Zram#ZRAM#رم#بهینه‌سازی#لینوکس

برای ادامه خواندن