Android 17 و نسخههای بالاتر از دیمن مدیریت حافظه (mmd) پشتیبانی میکند. این دیمن سیستم، پیکربندی دیمن، تنظیمات، و وظایف نگهداری مداوم تعویض یا ZRAM را مدیریت میکند.
پسزمینه
قبلاز معرفی mmd، پیکربندیهای ZRAM در Android
تکهتکه بود و سفارشیسازی محدودی ارائه میداد. mmd با متمرکز کردن مدیریت ZRAM، فعال کردن منطق پیکربندی پیچیدهتر، و ساده کردن افزودن ویژگیهای جدید و بهبودهای معماری، به این مشکل رسیدگی میکند.
mmd همچنین تفکیک واضحی بین فرایند مبتنی بر Java
system_server و مدیریت حافظه یا مبادله در سطح هسته ایجاد میکند.
معماری و مدیریت ZRAM
پساز تکمیل راهاندازی (یعنی وقتی sys.boot_completed=1)، mmd_setup تلاش میکند
تا ZRAM را با پارامترهای مشخصشده پیکربندی کند. پساز تکمیل راهاندازی ZRAM،
سیستم سرویس mmd را فعال میکند که وظیفه انجام کارهای جاری نگهداری را برعهده دارد.
با پروژه mmd، عملیات نگهداری از
system_server با ارسال درخواستهای Binder به mmd بااستفاده از رابط IMmd آغاز میشود.
mmd براساس موتور خطمشی داخلی خود، وظایف نگهداری مربوط به انجام بازنویسی ZRAM،
فشردهسازی مجدد، و بازنویسی بهازای هر فرایند را انجام میدهد. هم زمانبندی از ActivityManagerService و هم خطمشیهای نگهداری ZRAM را میتوان بااستفاده از ویژگیهای سیستم پیکربندی کرد.
یکپارچهسازی سرور سیستم (system_server)
فرایند system_server مبتنی بر Java تعیین میکند که mmd چه زمانی فراخوانده شود. این فرایند، پاکسازیهای تعمیر و نگهداری سراسری را از بهینهسازیهای هدفمند حافظه برای هر برنامه جدا میکند.
تعمیر و نگهداری عادی پسپردازش
نگهداری سراسری ZRAM توسط ActivityManagerService بااستفاده از
com.android.server.memory.ZramMaintenance انجام میشود.

شکل ۱. جریان زمانبندی نگهداری ZRAM.
- موتور زمانبندی:
ZramMaintenanceیک کار پسزمینه دورهای را باJobSchedulerAndroid ثبت میکند. - محدودیتهای کار: برای جلوگیری از لکنت رابط کاربری پیشزمینه یا رقابت واحد پردازش مرکزی،
کار بهطور صریح با
setRequiresDeviceIdle(true)وsetRequiresBatteryNotLow(true)پیکربندی شده است. - راهاندازی پوشه: وقتی زمانبند
onStartJob()راهاندازی میکند،system_servermmd.doZramMaintenanceAsync()را فرا میخواند. این یک تماس یکطرفه ناهمزمان Binder است؛system_serverمنتظر نمیماند تا پاکسازیهای نگهداری تمام شود. mmdاین را در یک رشته کارگر پسزمینهای در صف قرار میدهد تا فشردهسازی مجدد و نوشتن مجدد را بهصورت متوالی انجام دهد.
بازنویسی بهازای هر فرایند
ActivityManagerService بااستفاده از com.android.server.am.CachedAppOptimizer، تخلیه حافظه هدفمند برای هر فرایند را مدیریت میکند.

شکل ۲. جریان بازنویسی mmd بهازای هر فرایند.
وقتی فرایندی به وضعیت حافظه نهان پسزمینه منتقل میشود، ActivityManager فشردهسازی حافظه را انجام میدهد. اگر بستن ناشی از کمبود حافظه فرایند برای کاربر قابلمشاهده باشد، یعنی فرایند میزبان یک «فعالیت» باشد، و اگر بازنویسی ZRAM برای هر فرایند ردپای حافظه فرایند را به نزدیک صفر برساند، سیستم این مراحل را دنبال میکند:
- پساز فشردهسازی،
CachedAppOptimizerیک پیام تأخیری (ZRAM_WRITEBACK_MSG) را به گرداننده فشردهسازی داخلی خود ارسال میکند (با تأخیرmZramWritebackWaitSeconds). - وقتی تأخیر منقضی میشود، ActivityManager توصیفگر فایل فرایند امنی را باز میکند
pidfd. - سرور سیستم با
mmd.asyncWritebackProcessZramMemory(pfd, callback)تماس میگیرد. mmdioctl بازنویسی هر فرایند را اجرا میکند و بااستفاده ازIMmdProcessWritebackCallbackگزارش میدهد. اگر موفقیتآمیز باشد، ActivityManager پرچم گزارش فرایند (setIsZramWrittenBack(app, true)) را برای تقویتoom_score_adjفرایند تنظیم میکند و سنجهها را درFrameworkStatsLog.ZRAM_WRITEBACK_EVENTثبت میکند.
واکشی اولیه برای هر پردازش
وقتی کاربر برنامهای را که قبلاً در حافظه نهان ذخیره شده است دوباره راهاندازی میکند (بهدلیل UNFREEZE_REASON_ACTIVITY از حالت تعلیق خارج میشود)، ActivityManager تأخیر در راهاندازی برنامه را که ناشی از خطاهای صفحه اصلی از فضای ذخیرهسازی پشتیبان است بهحداقل میرساند:
CachedAppOptimizerرویداد لغو توقف را رهگیری میکند وprefetchZram(app)را فراخوانی میکند.- سرور سیستم
pidfdبرنامه را در سراسر Binder بااستفاده ازmmd.asyncPrefetchProcessZramMemory(pfd)توزیع میکند. mmdدستور ioctlZRAM_ANDROID_IOC_PROCESS_PREFETCHرا صادر میکند و به هسته دستور میدهد صفحههای مبادلهشده را بهصورت ناهمزمان در RAM پیشدریافت کند، درحالیکه رشته اصلی رابط کاربری برنامه درحال مقداردهی اولیه است.
نمای کلی تکالیف نگهداری و پسپردازش
این بخش عملیات نگهداری پسزمینهای و
وظایف پسپردازش را که mmd برای بهینهسازی فضای مبادله و حافظه سیستم اجرا میکند توضیح میدهد.
تعمیر و نگهداری در ماه
در mmd، نگهداری به پاکسازیهای برنامهریزیشده و پسزمینهای نگهداری اشاره دارد
که فضای مبادله و استفاده از حافظه فیزیکی را بدون تأثیر بر عملکرد پیشزمینه کاربر فعال
بهینهسازی میکند. بهجای انجام جاروهای همزمان و پیوسته (که باعث بیدار شدن شدید CPU و لرزش واسط کاربر میشود)،
تعمیر و نگهداری بهصورت ناهمزمان انجام میشود:
system_serverبهصورت دورهایdoZramMaintenanceAsync()را در سراسر Binder فعال میکند.mmdدرخواست را در صف کار پسزمینه قرار میدهدLowPrioWorkItem::ZramMaintenance.در
mmdیک رشته کارگر واحد وجود دارد که هم صف اولویت بالا و هم صف اولویت پایین را مدیریت میکند. عناصر کاری با اولویت بالا (مثل پیشدریافت هر فرایند) ابتدا پردازش میشوند و میتوانند عناصر کاری با اولویت پایین را پیشبند کنند. نگهداری و بازنویسی برای هر فرایند بهعنوان موارد کاری با اولویت پایین عمل میکنند. وقتی ظاهر میشود، رشته کارگر دو عملیات نگهداری اصلی را بهترتیب اجرا میکند:فشردهسازی مجدد ZRAM: صفحات مبادله موجود را جارو میکند و صفحات بیکار را بااستفاده از الگوریتم فشردهسازی ثانویه با نسبت بالاتر، برای مثال
zstd، مجدداً فشرده میکند.بازنویسی ZRAM: صفحههای غیرفعال را اسکن میکند و آنها را بهطور کامل از RAM به فضای ذخیرهسازی فلش پشتیبان دستگاه حلقه از فایلی در
/dataمنتقل میکند.
تکالیف پسپردازش در ZRAM
در واحد ZRAM هسته Linux و معماری mmd، وظایف پسپردازش تبدیلهای ناهمزمان اعمالشده بر صفحههای حافظه پساز
اینکه قبلاً توسط مسیرهای استاندارد بازپسگیری هسته (kswapd یا فشردهسازی) مبادله شدهاند، هستند.
وقتی صفحهای در ابتدا جابهجا میشود، سیستم سرعت را در اولویت قرار میدهد: از یک
الگوریتم فشردهسازی اولیه سریع (مانند lz4) استفاده میکند و صفحه فشردهشده را
در RAM ذخیره میکند. بااینحال، با گذشت زمان، بسیاری از صفحههای مبادلهشده سرد یا غیرفعال میشوند،
برای مثال، برنامههایی که در حافظه نهان پسزمینه هستند و برای ساعتها ازسر گرفته نمیشوند. قرار دادن صفحههای سرد در ZRAM سریع و با فشردهسازی سبک غیرمؤثر است.
خط لوله پسپردازش
mmd چرخه حیات پسپردازش چندمرحلهای را برای بهینهسازی این صفحات پیادهسازی میکند:

شکل ۳. چرخه حیات صفحه mmd.
مرحله ۱: تعویض اولیه (فشردهسازی سریع): ابتدا حافظه ازطریق kswapd یا فشردهسازی برنامه بازپسگیری میشود. معمولاً این بازپسگیری اولیه بااستفاده از یک الگوریتم فشردهسازی سریع مانند
lz4انجام میشود و محتوا در RAM ذخیره میشود.مرحله ۲: نشانگذاری در حالت آماده بهکار (قدیمی شدن و ردیابی): ردیابی در حالت آماده بهکار
mmdبه ردیابی حافظه هسته (CONFIG_ZRAM_TRACK_ENTRY_ACTIME) دسترسی دارد یا از نشانگذار نرمافزاری در حالت آماده بهکار برای ردیابی مدت زمانی که صفحات بدون تغییر باقی ماندهاند استفاده میکند.مرحله ۳: پسپردازش ۱ - فشردهسازی مجدد (بازپسگیری در حافظه): صفحههایی که به سن بیکاری فشردهسازی مجدد میرسند (
min_idle_secondsتاmax_idle_seconds) تحت فشردهسازی مجدد قرار میگیرند.mmdدر/sys/block/zram0/recompressمینویسد تا به هسته دستور دهد صفحهlz4را از حالت فشرده خارج کند و آن را بااستفاده ازzstdدوباره فشرده کند. این کار حافظه دسترسی تصادفی فیزیکی را بدون ایجاد استهلاک نوشتاری فلش بازپس میگیرد.مرحله ۴: پسپردازش ۲ - بازنویسی (انتقال به فضای ذخیرهسازی سریع): اگر فشار حافظه ادامه یابد و صفحهها به سن بیکاری بازنویسی (معمولاً ۲۰ ساعت یا بیشتر) برسند،
mmdبازنویسی را راهاندازی میکند.mmdدر/sys/block/zram0/idleو/sys/block/zram0/writebackمینویسد تا صفحه فشردهشده را بهطور کامل از RAM به حافظه فلش پشتیبان منتقل کند.
پیکربندی راهاندازی ZRAM
mmd ویژگیهای تنظیم ZRAM زیر را بار میکند و پردازش میکند:
| دارایی | استفاده کردن | پیشفرض |
|---|---|---|
mmd.zram.enabled |
آیا تنظیمات mmd ZRAM فعال است یا نه. |
false |
mmd.zram.num_devices |
تعداد دستگاههای ZRAM برای پیکربندی. برای شماره N،
دستگاههای zram0 تا zram<N-1> باید
قبلاز تنظیم sys.boot_completed=1 توسط سیستم وجود داشته باشند.
داراییهای فهرست دستگاه براساس ZRAM را میتوان براساس هر دستگاه
پیکربندی کرد.
|
1 |
mmd.zram.device_priority |
مقادیر اولویتدار برای ارسال هنگام تماس با swapon. |
تنظیم نشده |
mmd.zram.comp_algorithm |
الگوریتم فشردهسازی ZRAM. اگر الگوریتم فشردهسازی مشخص نشده باشد، از الگوریتم فشردهسازی پیشفرض هسته استفاده میشود. | تنظیم نشده |
mmd.zram.size |
اندازه دستگاه ZRAM برحسب بایت، یا درصدی از اندازه RAM دستگاه، برای مثال،
75%.
|
50% |
mmd.zram.writeback.enabled |
فعال کردن بازنویسی ZRAM. | false |
mmd.zram.writeback.device_size |
اندازه دستگاه بازنویسی براساس بایت یا درصد پارتیشن داده. اندازه واقعی دستگاه را میتوان براساس فضای دردسترس در پارتیشن داده تنظیم کرد. | 1073741824 (۱ گیگابایت) |
mmd.zram.writeback.min_free_space_mib |
حداقل فضای آزاد به مبیبایت که باید پساز راهاندازی دستگاه بازنویسی دردسترس باشد. | 1536 (۱٫۵ گیبیبایت) |
mmd.zram.writeback.use_nr_tags_prop |
وقتی true، از مقدار موجود در
mmd.zram.writeback.nr_tags برای پیکربندی عمق صف
دستگاه حلقه پشتیبان بازنویسی ZRAM استفاده میکند. این یک راهکار موقت برای شرایطی است که خطمشی SELinux فروشنده نمیتواند پیکربندی شود تا به mmd اجازه دهد مستقیماً nr_tags دستگاه بلوک پشتیبان /data را بخواند.
|
false |
mmd.zram.writeback.nr_tags |
mmd.zram.writeback.use_nr_tags_prop را ببینید. |
تنظیم نشده |
mmd.zram.recompression.enabled |
فعال کردن ویژگی فشردهسازی مجدد ZRAM. | false |
mmd.zram.recompression.algorithm |
الگوریتم فشردهسازی مجدد ZRAM ثانویه. | zstd |
خصوصیات دستگاه Per-ZRAM
وقتی mmd.zram.num_devices بزرگتر از یک باشد، ویژگیهای خاص را میتوان
بهصورت اختیاری براساس هر دستگاه ZRAM پیکربندی کرد. برای این کار، ویژگی را روی
مقدار جداشده با کاما که دقیقاً mmd.zram.num_devices عنصر دارد تنظیم کنید.
این داراییها شامل موارد زیر میشود:
mmd.zram.sizemmd.zram.comp_algorithmmmd.zram.device_prioritymmd.zram.recompression.enabledmmd.zram.recompression.huge_idle.enabledmmd.zram.recompression.idle.enabledmmd.zram.recompression.huge.enabledmmd.zram.recompression.threshold_bytesmmd.zram.recompression.algorithmmmd.zram.writeback.device_sizemmd.zram.writeback.huge_idle.enabledmmd.zram.writeback.idle.enabledmmd.zram.writeback.huge.enabled
منسوخ شدن تنظیمات ZRAM موجود
اگرچه swapon_all همچنان در Android برای راهاندازی ZRAM و فضای مبادله مبتنی بر دیسک دردسترس است، mmd رویکرد ترجیحی برای مدیریت ZRAM است تا پیکربندی آسانتر و ویژگیهای پیشرفتهای مثل فشردهسازی مجدد ZRAM ارائه دهد.
وقتی راهاندازی ZRAM mmd توسط mmd.zram.enabled فعال شده باشد:
- راهاندازی ZRAM در پیادهسازی
swapon_allبه یک عملیات بدون اثر تبدیل میشود. - پیکربندیهای ZRAM موجود مثل
config_zramWritebackدر فایل رونهادconfig.xmlو داراییهای سیستم بازنویسیro.zram.*نادیده گرفته میشود.
متغیرهای قابل تنظیم نگهداری ZRAM
نگهداری ZRAM باید بدون نیاز به تنظیمات اضافی کار کند و میتوانید بااستفاده از داراییهای سیستم در این بخش آن را بیشتر تنظیم کنید.
زمانبندی نگهداری ZRAM
این داراییها کنترل میکنند که وظایف نگهداری ZRAM چگونه و چه زمانی توسط
system_server زمانبندی شوند.
| دارایی | استفاده کردن | پیشفرض |
|---|---|---|
mm.zram.maintenance.first_delay_seconds |
تأخیر قبلاز شروع اولین نگهداری ZRAM. | 3600 (۱ ساعت) |
mm.zram.maintenance.periodic_delay_seconds |
تأخیر بین زمانبندیهای نگهداری ZRAM بعدی. | 3600 (۱ ساعت) |
mm.zram.maintenance.require_device_idle |
تعیین اینکه آیا نگهداری ZRAM فقط زمانی شروع شود که دستگاه در حالت آمادهبهکار باشد. | true |
mm.zram.maintenance.require_battery_not_low |
تعیین میکند که آیا قبلاز شروع تعمیر و نگهداری ZRAM، باتری نباید کم باشد. | true |
خطمشی بازنویسی ZRAM
پارامترهای زیر کنترل میکنند که چه زمانی و چه نوع حافظهای در دستگاه پشتیبان نوشته شود:
| دارایی | استفاده کردن | پیشفرض |
|---|---|---|
mmd.zram.writeback.backoff_seconds |
زمان بازگشت از آخرین عملیات بازنویسی. | 600 (۱۰ دقیقه) |
mmd.zram.writeback.min_idle_seconds |
با mmd.zram.writeback.max_idle_seconds ترکیب میشود تا
سن غیرفعال بودن صفحه برای واجدشرایط بودن بازنویسی براساس
کسر استفاده از حافظه محاسبه شود. سن بیکاری محاسبهشده بهصورت نمایی بین دو پارامتر درونیابی میشود تا کار در زمانی که تحت فشار حافظه نیست به حداقل برسد.
|
72000 (۲۰ ساعت) |
mmd.zram.writeback.max_idle_seconds |
حداکثر ثانیههای استفادهشده برای محاسبه پویا سن صفحه غیرفعال براساس بهرهوری حافظه. | 90000 (۲۵ ساعت) |
mmd.zram.writeback.huge.enabled |
فعال کردن نوشتن مجدد صفحه HUGE. |
false |
mmd.zram.writeback.idle.enabled |
فعال کردن نوشتن مجدد صفحه IDLE. |
true |
mmd.zram.writeback.huge_idle.enabled |
فعال کردن نوشتن مجدد صفحه HUGE_IDLE. |
true |
mmd.zram.writeback.min_bytes |
حداقل بایتها برای بازنویسی در یک دور بازنویسی غیرفعال. | 5242880 (۵ مگابایت) |
mmd.zram.writeback.max_bytes |
حداکثر بایتهایی که در یک دور بازنویسی در حالت بیکاری بازنویسی میشود. | 314572800 (۳۰۰ مبیبایت) |
mmd.zram.writeback.max_bytes_per_day |
حداکثر بایت برای بازنویسی در دوره ۲۴ ساعته. | 25769803776 (۲۴ گیگابایت) |
mmd.zram.writeback.limit.enabled |
فعال کردن یا نکردن حسابداری حد بودجه بازنویسی روزانه. | true |
خطمشی فشردهسازی مجدد ZRAM
پارامترهای زیر کنترل میکنند که چه زمانی و چه نوع حافظهای دوباره فشرده شود:
| دارایی | استفاده کردن | پیشفرض |
|---|---|---|
mmd.zram.recompression.backoff_seconds |
زمان وقفه از آخرین فشردهسازی مجدد. | 1800 (۳۰ دقیقه) |
mmd.zram.recompression.min_idle_seconds |
با mmd.zram.recompression.max_idle_seconds ترکیب میشود تا
سن غیرفعال بودن صفحه برای واجدشرایط بودن برای فشردهسازی مجدد براساس
کسر استفاده از حافظه محاسبه شود. سن محاسبهشده در حالت آماده بهکار بهصورت نمایی بین دو پارامتر درونیابی میشود تا کار درحالیکه تحت فشار حافظه نیست به حداقل برسد.
|
7200 (۲ ساعت) |
mmd.zram.recompression.max_idle_seconds |
حداکثر ثانیههای استفادهشده برای محاسبه پویای سن صفحه غیرفعال. | 14400 (۴ ساعت) |
mmd.zram.recompression.threshold_bytes |
حداقل اندازه برحسب بایت برای صفحههای ZRAM که برای فشردهسازی مجدد درنظر گرفته میشود. | 1024 (۱ کیلوبایت) |
mmd.zram.recompression.huge.enabled |
آیا فشردهسازی مجدد صفحه HUGE فعال شود. |
true |
mmd.zram.recompression.idle.enabled |
آیا فشردهسازی مجدد صفحه IDLE فعال شود. |
true |
mmd.zram.recompression.huge_idle.enabled |
آیا فشردهسازی مجدد صفحه HUGE_IDLE فعال شود. |
true |
ردیابی صفحه آزاد ZRAM
mmd نگهداری ZRAM صفحههای ZRAM را براساس مدت زمانی که از آخرین دسترسی به آنها میگذرد بهعنوان غیرفعال علامتگذاری میکند. برای استفاده از این ویژگی باید پیکربندیهای
هسته CONFIG_ZRAM_TRACK_ENTRY_ACTIME یا CONFIG_ZRAM_MEMORY_TRACKING
فعال شود. CONFIG_ZRAM_TRACK_ENTRY_ACTIME بهطور پیشفرض در هستههای GKI نسخه ۶.۱۸ و بالاتر فعال است. در هستههای قدیمیتر،
این ویژگی سربار حافظه دارد و بهطور پیشفرض فعال نیست.
اگر پیکربندی هسته فعال نباشد، mmd نگهداری ZRAM به
منطق جایگزین نرمافزاری برای ردیابی صفحههای ZRAM غیرفعال برمیگردد:
وقتی
mmdشروع میشود، همه صفحههای ZRAM بهعنوان غیرفعال علامتگذاری میشود.تا زمانی که دوره احتیاطی لازم سپری نشده است، از نگهداریهای بعدی ZRAM صرفنظر شود.
بازنویسی ZRAM یا فشردهسازی مجدد صفحههای غیرفعال. اگر بهدلیل محدودیتهای بازنویسی، صفحههای بیکار باقی مانده باشد،
mmdدر نگهداری بعدی بدون علامتگذاری صفحههای جدید بهعنوان بیکار، به بازنویسی صفحهها ادامه میدهد (مرحله ۴ رد میشود).اگر همه صفحههای غیرفعال بازنویسی شدند، همه صفحههای ZRAM را دوباره بهعنوان غیرفعال علامتگذاری کنید و به مرحله ۲ برگردید. اگر بازنویسی ZRAM غیرفعال باشد، وقتی فشردهسازی مجدد ZRAM پساز مدتزمان بیکاری فشردهسازی مجدد اتفاق میافتد،
mmdهمه صفحههای ZRAM را بهعنوان بیکار علامتگذاری میکند.
راهنمایی عیبیابی و اعتبارسنجی
از مراحل اعتبارسنجی و روشهای عیبیابی زیر برای تأیید و تشخیص عملکرد mmd و ZRAM استفاده کنید.
تأیید درستی راهاندازی ZRAM
برای تأیید اینکه mmd درطول راهاندازی ZRAM را باموفقیت پیکربندی کرده است:
الگوریتم فشردهسازی فعال و اندازه دیسک را بررسی کنید:
cat /sys/block/zram0/comp_algorithm cat /sys/block/zram0/disksizeدرستیسنجی
mmdویژگی سیستم و وضعیت سرویس درحال اجرا:getprop | grep mmd.zram dumpsys -l | grep mmd
اعتبارسنجی نگهداری و بازنویسی ZRAM
تأیید کنید که وظایف نگهداری بازنویسی و فشردهسازی مجدد ZRAM عمل میکنند:
وضعیت دستگاه بلوک پشتیبان را بررسی کنید:
cat /sys/block/zram0/bd_statبا پایش
/sys/block/zram0/mm_stat، کارایی فشردهسازی مجدد را بررسی کنید. تغییرات در اندازههای داده فشرده باید پساز چرخههای نگهداری ظاهر شود.
اعتبارسنجی بازنویسی بهازای هر فرایند
از موارد زیر میتوان برای تأیید عملکرد بازنویسی هر فرایند استفاده کرد:
- برای گزارشهای موفق بازنویسی یا تشخیص خرابی،
adb logcat -s mmdرا بررسی کنید.
مشکلات رایج و عیبیابی
در زیر موقعیتهای خطای رایجی که کاربر ممکن است با آنها مواجه شود آورده شده است:
WritebackDailyLimitExceeded: این خطا نشان میدهد کهmmd.zram.writeback.max_bytes_per_dayسهمیه بهپایان رسیده است. وقتی این اتفاق میافتد،mmdبازنویسی غیرفعال را تا زمانی که پنجره ۲۴ ساعته پیش برود موقتاً متوقف میکند.Process prefetch or writeback failed: این خطا را میتوان در logcat هنگام ناموفق بودن ioctl مشاهده کرد. علل رایج عبارتاند از:EBADFیاESRCH: فرایند هدف قبلاز اینکهmmdبتواندpidfdرا به هسته ارسال کند، پایان یافت.-
ENOSPC: پارتیشن فضای ذخیرهسازی پشتیبان پر است، یا صف دستگاه حلقه تمام شده است.
- ZRAM راهاندازی نشد: اگر
mmdنتواند ZRAM را در زمان بوت پیکربندی کند، ممکن است بهدلیل این باشد که اسکریپتهای اولیه فروشنده یاswapon_allقدیمی/dev/block/zram0را قبلاز اینکهmmdبتواند اجرا کند قفل کردهاند.