در نسخههای قبلی Ubuntu، مقدار رم توصیه شده توسط شرکت Canonical برای اجرای روان، حداقل 4GB بود. اما در نسخه Ubuntu ۲۲.۰۴ LTS، با استفاده از zswap بهصورت پیشفرض، اجرای بهتر سیستمعامل روی دستگاههای با حافظه کمتر امکانپذیر شده است. در توضیح این امر، شرکت Canonical میگوید که zswap اساساً یک ابزار فشردهسازی است.
برای نگاه دقیقتر به این موضوع با ما همراه باشید.
در زمان انتقال پروسه به فایل جایگزینی (swap file)، ابزار zswap مداخله میکند و پس از فشردهسازی آن، میسنجد که آیا با این اندازه جدید و کوچکتر، هنوز نیاز به انتقال وجود دارد یا اینکه میتواند در RAM باقی بماند. نکتهای که در اینجا وجود دارد این است که غیر فشردهسازی یک صفحه فشرده شده توسط zswap، بسیار سریعتر از دسترسی به فایل جایگزینی انجام میشود. بنابراین بدین طریق امکان بهرهبردن بسیار بهتر از سیستمهای با حافظه رم محدود به وجود میآید.
خبر خوب اینکه حتی نیازی نیست برای انتشار Ubuntu ۲۲.۰۴ LTS صبر کنیم. برای بهتر بردن از این قابلیت میتوانیم بهصورت دستی آن را در Raspberry Pi ۴ فعال کنیم
$ sudo sed -i -e 's/$/ zswap.enabled=1/' /boot/firmware/cmdline.txt
همچنین یک راه دیگر برای این کار، ویرایش فایل /boot/firmware/cmdline. txt و اضافهکردن رشته زیر به دستور موجود در آن است:
zswap.enabled=1
بعد از یک ریبوت، بهبود عملکرد محسوسی در بوردهای Raspberry Pi ۴ با ۴ یا ۸ گیگابایت رم اتفاق میافتد، اما برای مدل ۲ گیگابایتی چند مرحله دیگر برای فعالسازی تخصیصدهنده z3fold و فشردهسازی lz4 نیاز است. دستورات موردنیاز برای این منظور بهصورت کامل در بلاگ Ubuntu شرح داده شده است. در نتیجه اجرای این دستورات و پس از بارگیری چند ماژول، فایل cmdline. txt ما، سهَ پارامتر اضافه خواهد داشت:
zswap.enabled=1 zswap.compressor=lz4 zswap.zpool=z3fold
همانطور که گفته شد در نسخه Ubuntu ۲۲.۰۴ LTS نیاز به انجام این کارها نیست و همه آنها بهصورت پیشفرض تنظیم شدهاند.
در ادامه میخواهیم تفاوت دقیق میان zswap و zram (که برای بهبود عملکرد و اطمینانپذیری سیستمهای کم حافظه کاربرد دارد) در Ubuntu را بررسی کنیم. میدانیم که zram همانند یک جایگزینی فشرده شده است که در RAM قرار دارد، درحالیکه zswap هم از RAM و هم از حافظه ذخیرهسازی (storage) استفاده میکند. کاربرد حافظه ذخیرهسازی برای ذخیره اطلاعات فشرده شده در فایل جایگزینی روی حافظه، در صورت نبود فضای رم کافی برای نگهداشتن اطلاعات، است.
این موضوع قبلاً در Stackoverflow پرسیده و پاسخ داده شده است که در اینجا بهصورت خلاصهتر بررسی میشود؛
Zram
وضعیت: از Linux 3.14 یعنی مارچ 2014 در دسترس است.
پیادهسازی: وسیله بلاک فشرده شده، حافظه هنگام ذخیره اطلاعات بهصورت پویا تخصیص داده میشود.
کاربرد: تنظیم وسیله بلاک zram بهعنوان یک دستگاه جایگزینی، برای رفع نیاز به فایل یا دستگاه جایگزینی.
مزایا:
رفع نیاز بهوسیله جایگزینی فیزیکی.
یک وسیله بلاک zram را میتوان برای کاربردهایی غیر از جایگزینی نیز استفاده کرد. هر کاربردی که نیاز به یک وسیله بلاک داشته باشد.
معایب:
هنگامی که یک صفحه در zram ذخیره میشود، در آن باقی خواهد ماند تا زمانی که Page in یا غیرمعتبر شود. به بیان دیگر zram امکان تخلیه صفحهها به دیسک فیزیکی را ندارد.
Zswap
وضعیت: از Linux ۳.۱۱ یعنی سپتامبر ۲۰۱۳ در دسترس است.
پیادهسازی: کش in-kernel فشرده شده برای جایگزینی صفحهها. کش in-kernel فشرده شده است و الگوریتم فشردهسازی توسط CryptoAPI قابل بهکارگیری است. همچنین فضای ذخیرهسازی صفحهها بهصورت پویا انجام میشود. صفحههای قدیمیتر را میتوان به دیسک تخلیه کرد. در نتیجه میتوان گفت که این کش، نوعی کش write-behind است.
کاربرد: نگهداری صفحههای جایگزینی که مقصد آنها وسایل معمول جایگزینی یا فایلهای جایگزینی است.
مزایا:
یکپارچه بودن با کد جایگزینی این امکان را به zswap میدهد که تنها صفحههایی را ذخیره کند که بهخوبی فشرده میشوند. علاوه بر این در زمانی که نیاز به فرستادن صفحهها به دستگاه جایگزینی پشتیبان باشد، میتواند خطاهای تخصیص در حافظه را مدیریت کند، همچنین بهمنظور ایجاد فضای خالی موردنیاز برای ذخیره صفحههای جدید، قدیمیترین صفحههای موجود در کش به دستگاه جایگزینی پشتیبان فرستاده میشوند.
معایب:
نیاز به دستگاه جایگزینی فیزیکی (فایل جایگزینی).
منبع:سیسوگ