امروزه، گوشیهای هوشمند پیشرفته و حتی مدلهای اقتصادیتر، با حافظه رم تقریباً مشابه یک رایانه شخصی میانرده عرضه میشوند. و چرا که نه؟ ما از گوشیهایمان برای کارهای گوناگونی بهره میبریم، از جابهجایی میان برنامههای بیشمار گرفته تا اجرای جدیدترین بازیهای پیشرفته. همه اینها نیازمند رم هستند و به شکل فزایندهای به آن بیشتر نیاز پیدا میکنند، بهویژه هنگامی که پای گفتگو با یک مدل زبانی بزرگ (LLM) یا بهکارگیری هوش مصنوعی برای بهبود رسانههایمان در میان باشد.
از لحاظ نظری، اگر به یکباره تعداد کافی برنامههای با حجم بالا را روی سیستمعامل خود بارگذاری کنید، از نظر فنی ممکن است به حد نهایی رم برسید و در نتیجه امکان اتمام حافظه رم دستگاه شما وجود دارد. اما در چنین شرایطی چه روی میدهد؟ خب، منطق حکم میکند که آن برنامهها مجبور به بسته شدن شوند، ممکن است از کار بیفتند، یا کل سیستمعامل از دسترس خارج شود. اما این اتفاق بسیار بعید است.
شیوه مدیریت رم توسط اندروید
برای تضمین عملکرد روان و پاسخگوی اندروید، سیستمعامل پیش از اینکه شروع به بستن برنامههایی کند که ممکن است بخواهید به سرعت به آنها بازگردید، چندین شگرد دارد. نخستین روش، فشردهسازی برنامههایی است که از قبل در رم با استفاده از zRAM قرار دارند. zRAM اساساً یک بلوک داده فشرده است که درون حافظه رم شما جای میگیرد. این بلوک به صورت پویا گسترش و انقباض مییابد، صفحات حافظه را برای صرفهجویی در فضا فشرده میکند و در صورت نیاز آنها را از حالت فشرده خارج میسازد. حافظه برنامههایی که مورد نیاز نیستند، حتی پیش از آنکه حافظه گوشی شما رو به اتمام بگذارد، به طور پیوسته به zRAM منتقل و از آن خارج میشوند.
تمام دستگاههای اندرویدی از zRAM استفاده میکنند، و تولیدکنندگان میتوانند اندازه این فضای فشرده را برای تعادل میان کارایی و پاسخگویی تنظیم کنند. نکته قابل توجه این است که zRAM همچنان از رم واقعی استفاده میکند، بنابراین فشردهسازی حجم زیادی از اطلاعات همیشه به اندازه مورد انتظار حافظه را آزاد نمیکند. zRAM ابزار اصلی اندروید برای حفظ برنامهها در حالت فعال است. اگر zRAM پر شود، اندروید چند کار دیگر را امتحان میکند: فرآیند swap هسته (kswapd) تلاش میکند حافظهای را که میتواند از فضای ذخیرهسازی مجدداً بارگذاری شود، خارج کند، زیرا در صورت نیاز میتوان به سرعت آن را فراخوانی کرد. در غیر این صورت، میتواند صفحات اضافی را از zRAM خارج کند یا، در صورت موجود بودن، حافظه را به یک فایل swap در فضای ذخیرهسازی گوشی شما منتقل کند.
با این حال، استفاده از حافظه ذخیرهسازی فیزیکی swap بخشی از اندروید استاندارد نیست. رامهای سفارشی و برخی از پیادهسازیهای «رم مجازی» توسط تولیدکنندگان اصلی به استفاده از فایل swap تمایل داشتهاند، اما این یک استثنا است و نه یک قاعده. اگر تمام این منابع تخلیه شوند، برنامههای غیرفعال برای ایجاد فضا برای فرآیندهای فعال بسته میشوند. با این وجود، نحوه دقیق مدیریت این فرآیند توسط گوشیها بسته به سازنده دستگاه متفاوت است.
رم پلاس سامسونگ در برابر افزونه حافظه شیائومی
شاید بپرسید که آیا رم پلاس بر zRAM سنتی متکی است یا بر فضای swap واقعی؟ این یک تمایز کلیدی است، تا حدی به این دلیل که سامسونگ در سال ۲۰۲۳ یک مقاله تحقیقاتی درباره ایده «سواپ تطبیقی» منتشر کرد که از ترکیب فضای سریع zRAM و پاسخگویی کندتر swap برای دستیابی به بهترین نتیجه بهره میبرد. همچنین، منوی تنظیمات رم پلاس سامسونگ بیان میکند که از فضای ذخیرهسازی گوشی شما برای تأمین حافظه مجازی استفاده میکند که قطعاً به بهرهگیری از swap اشاره دارد، حتی اگر به صراحت ذکر نشده باشد.
هر گوشی از zRAM استفاده میکند و برخی نیز از فضای swap بهره میبرند. اما S25 اولترا اینگونه نیست. با این حال، تنظیمات رم پلاس در گلکسی S25 اولترا هیچ تغییری در پارتیشنهای حافظه فلش یا اشارهای به فضاهای swap از طریق دستورات adb shell مانند /proc/partitions یا df -h نشان نمیدهد. این حاکی از آن است که رم پلاس فقط بر اندازه هدف zRAM تأثیر میگذارد، نه بر swap ذخیرهشده. این بدان معنا نیست که هیچ یک از گوشیهای سامسونگ از swap استفاده نمیکنند، اما گلکسی S25 اولترا این کار را نمیکند.
در مقابل، تنظیم گزینه افزونه حافظه شیائومی ۱۵ اولترا کاهش فضای آزاد در دایرکتوریهای /data و /storage/emulated (که یکسان هستند و فقط به صورت متفاوتی ارجاع میشوند) را نشان میدهد. اگرچه بدون دسترسی روت نمیتوانیم دقیقاً ردیابی کنیم که این فضای اضافی کجا استفاده میشود، اما تغییرات پس از راهاندازی مجدد دقیقاً با میزان درخواست شده توسط افزونه حافظه مطابقت دارد. در عین حال، کل فضای zRAM بدون توجه به تنظیمات، روی ۱۶ گیگابایت باقی میماند.
با بازگشت به سامسونگ، تغییر تنظیمات رم پلاس تنها میزان هدف حافظه فشرده swap (یعنی میزان دادهای که سیستم سعی میکند در zRAM فشرده نگه دارد) را تنظیم میکند، نه اندازه خام دستگاه بلوک zRAM را. با فشردهسازی بیشتر دادهها، zRAM از رم واقعی بیشتری استفاده میکند که این موضوع به نسبت فشردهسازی بستگی دارد، و این نسبت با نوع دادههای فشرده شده و الگوریتم مورد استفاده متفاوت است.
یک تنظیمات بالاتر رم پلاس (به عنوان مثال، ۸ گیگابایت) به معنای فعال ماندن تعداد بیشتری از برنامهها در پسزمینه است، اما با کندیهای احتمالی به دلیل فشردهسازی اضافی. تنظیم پایینتر (مانند ۳ گیگابایت) سرعت را در اولویت قرار میدهد، اما به قیمت نگهداری کمتر برنامهها. در گوشی S25 اولترا، سامسونگ به شما اجازه نمیدهد که به کمتر از ۳ گیگابایت zRAM برسید، حتی اگر رم پلاس را غیرفعال کنید. این موضوع با توجه به ۱۲ گیگابایت رم فیزیکی منطقی است، زیرا zRAM احتمالاً بیش از ۱ گیگابایت را استفاده نخواهد کرد. با این حال، این ممکن است برای همه گوشیهای سامسونگ، به ویژه مدلهای اقتصادی با رم کمتر، صادق نباشد.
رم پلاس سامسونگ به شما امکان میدهد استفاده از رم را بین نگهداری برنامه یا پاسخگویی بیشتر بهینه کنید. اما اگر رم پلاس تنها یک تغییر در نحوه استفاده از رم است، چرا اصلاً زحمت کنترل آن را به کاربر میدهیم؟ خب، تفاوت جزئی قابل لمسی وجود دارد. به طور خلاصه، این گزینه وجود دارد تا بتوانید انتخاب کنید که دستگاه شما باید کدام یک را ترجیح دهد: نگهداری برنامههای پسزمینه (zRAM بزرگتر) یا پاسخگویی فوری (zRAM کوچکتر). همه اینها با یک نوار لغزنده ساده و بدون نیاز به گشتوگذار در پارامترهای هسته قبل دسترس هستند.
رفتار شیائومی ۱۵ اولترا بسیار متفاوت است؛ این گوشی همیشه حداکثر ۱۶ گیگابایت حافظه را برای فشردهسازی هدف قرار میدهد، اما میزان ذخیره شده در zRAM توسط فضای swap اضافی پشتیبانی میشود تا در موارد استفاده شدید از بستهشدن برنامهها جلوگیری شود. متأسفانه، من نمیتوانم دقیقاً ردیابی کنم که حافظه فشرده چه زمانی به حافظه فلش منتقل میشود، اما تصور میکنیم این اتفاق تنها پس از اشغال مقدار مشخصی از رم رخ خواهد داد. با ۱۶ گیگابایت رم داخلی، احتمالاً استفاده از فضای swap برای این گوشی بسیار دشوار خواهد بود. نقطه ضعف این است که فشردهسازی و از حالت فشرده خارج کردن از حافظه کندتر از رم بوده، حتی با وجود حافظه ذخیرهسازی UFS سریع امروزی.
هنگامی که حافظه رم شما تمام میشود چه اتفاقی میافتد؟
برای مشاهده نحوه عملکرد همه اینها تحت فشار، هر دو گوشی را با بارگذاری تدریجی برنامهها تحت آزمایش استرس قرار دادیم و به مصرف رم و zRAM توجه کردیم. در نهایت، مرورگر وب را با مصرف ۸ گیگابایت رم بیش از حد بارگذاری کردم. لازم به ذکر است که swap فلش و zRAM برای مدیریت رم اندروید SwapTotal در نظر گرفته میشوند، به این معنی که امکان مشاهده دقیق زمان یا میزان استفاده از فضای swap توسط گوشیهایی مانند شیائومی وجود ندارد (حداقل بدون روت کردن گوشی).
نتایج تقریباً با آنچه انتظار میرفت مطابقت دارند. اجرای چند برنامه کوچک، هیچ فشاری به ۱۲ گیگابایت رم قابل توجه گلکسی S25 اولترا وارد نمیکند و ۱۶ گیگابایت شیائومی نیز بدون هیچ مشکلی عمل میکند. استفاده از zRAM کم است و به صورت لحظهای برخی از وظایف پسزمینه را فشرده میکند، اما در حد دهها مگابایت خواهد بود. قطعاً در اینجا نیازی به فضای swap نیست. در این وضعیت، جابهجایی بین برنامهها بدون هیچ تأخیری و بدون از دست دادن اطلاعات، روان و بیدرز انجام میشود.
تنها زمانی که چندین بازی و برنامه به طور همزمان اجرا میشوند، رم آزاد به کمتر از ۴ گیگابایت کاهش مییابد و مدیریت رم شروع به فعالیت میکند. این میزان بسته به نوع کار متفاوت است، اما استفاده از zRAM میتواند به صدها مگابایت و حتی ۱ گیگابایت یا بیشتر برسد. با این حال، بازیها نیازی به بارگذاری مجدد کامل ندارند، اما ما از یک یا دو جلسه فعال خارج شدیم و صفحات وب مجبور به بارگذاری مجدد شدند. با این حال، حتی با وجود بارگذاری چندین بازی، هیچ کندی سیستم عمدهای را تجربه نکردیم. همانطور که قبلاً گفتیم، ۱۲ گیگابایت رم کاملاً کافی است. البته، به جز در موارد خاص و نیازمند به پردازشهای سنگین هوش مصنوعی.
مدیریت رم پیشفرض اندروید بسیار قوی است. ما مجبور شدیم با یک صفحه وب ۴ گیگابایتی به طور مصنوعی کار را به جایی برسانیم که تقریباً تمامی برنامهها بسته شوند. حتی در آن زمان، One UI سامسونگ و HyperOS شیائومی همچنان سریع عمل میکردند. با این حال، بیشتر برنامههای بزرگتر در این مرحله بسته شده بودند و ما را مجبور به بارگذاری مجدد آنها از ابتدا برای شروع دوباره میکردند.
وقتی به سقف رم میرسید، اندروید به سادگی شروع به بستن برنامههای غیرفعال میکند. و به لطف zRAM (و swap، در صورت استفاده)، این سقف در بیشتر موارد استفاده واقعی بسیار دور است. اما از همه مهمتر، به لطف فشردهسازی zRAM، نزدیک شدن به این نقطه در استفاده عادی تقریباً غیرممکن است. گوشیهایی که از فضای swap اضافی استفاده میکنند، از نظر باز نگه داشتن برنامهها حتی عملکرد بهتری دارند، اما به اندازه پیادهسازیهای فقط zRAM پاسخگو به نظر نمیرسند. البته ما در شیائومی ۱۵ اولترا متوجه این موضوع نشدیم، اما این احتمالاً نشانهای است که ۱۶ گیگابایت حتی برای تعداد زیادی از برنامههای موبایل نیز بیش از حد خواهد بود.
در نهایت، swap جایگزین zRAM نیست، بلکه مکمل آن است. با فعال کردن آن، حافظه فلش شما با نوشتن مداوم در حافظه فیزیکی فرسوده نمیشود؛ فقط با گذشت زمان، فرسایش جزئی اضافه میکند. آنچه شاید کمی بیشتر قابل توجه باشد این است که بازیابی برنامههای پسزمینه دوردست از حافظه کمی کندتر از حالت فشرده خارج کردن از رم خواهد بود، اما حداقل نیازی به بارگذاری مجدد آنها ندارید.
با افزایش مداوم ظرفیتهای رم و هوشمندتر شدن ترفندهای مدیریت حافظه اندروید، فضای swap شاید هرگز ضروری نباشد. با این حال، میتواند ابزاری مفید برای دستگاههای اقتصادی یا دستگاههای متکی بر هوش مصنوعی باشد.
دیدگاه ها