۱۲ آبان ۱۴۰۵ lowendspirit.com ۲ دقیقه مطالعه

کاهش مصرف رم و منابع در NixOS برای اجرا روی سرورهای فوق‌العاده ضعیف

کاهش مصرف رم و منابع در NixOS برای اجرا روی سرورهای فوق‌العاده ضعیف — Shrinking NixOS RAM footprint and resource requirements to the bare minimum

خلاصه

این مقاله تجربیات یک مهندس را در بهینه‌سازی شدید سیستم‌عامل NixOS برای کاهش مصرف رم در حالت ایدل به زیر ۱۰۰ مگابایت و امکان بازبیلد روی سرورهای ۵۱۲ مگابایتی بررسی می‌کند. این تکنیک‌ها شامل غیرفعال‌سازی ماژول‌های غیرضروری هسته، تنظیمات دقیق مموری و بهینه‌سازی زِرام (zRAM) است.

مقدمه و زمینه

سیستم‌عامل NixOS به دلیل ساختار اعلامی (declarative) و مدیریت بسته‌بندی منحصربه‌فرد خود شناخته شده است. با این حال، به‌صورت پیش‌فرض برای کمترین مصرف منابع طراحی نشده است. در این مقاله تجربیاتی مطرح شده که چگونه می‌توان مصرف رم یک سرور مجازی (VPS) را که به‌طور پیش‌فرض به حداقل ۱ گیگابایت رم نیاز دارد، به شدت کاهش داد تا روی سخت‌افزارهای بسیار محدود نیز به‌راحتی اجرا شود.

جزئیات فنی و بهینه‌سازی‌ها

برای دستیابی به مصرف رم حدود ۹۶ مگابایت در حالت ایدل و امکان بیلد سیستم روی یک سرور ۵۱۲ مگابایتی، اقدامات متعددی در لایه‌های مختلف انجام شده است:

  • بهینه‌سازی پارامترهای کرنل: غیرفعال کردن مواردی مانند پروفایلینگ حافظه با sysctl.vm.mem_profiling=never و غیرفعال‌سازی استخرهای KFENCE و تردهای اضافی مانند kdamond و kauditd.
  • مدیریت صفحات حافظه بزرگ (THP): غیرفعال کردن transparent_hugepage که یکی از بزرگ‌ترین بردهای مصرف حافظه بود، زیرا مقدار زیادی رم را رزرو می‌کند که هرگز آزاد نمی‌شود.
  • حذف ماژول‌های سخت‌افزاری اضافی: بلک‌لیست کردن درایورهای مربوط به سخت‌افزارهایی که یک ماشین مجازی KVM هرگز به آن‌ها نیاز ندارد (مانند فلاپی، کارت‌های گرافیک و وای‌فای) و ایجاد یک derivation سفارشی برای کوچک کردن درخت ماژول‌های کرنل.
  • سرویس‌های سیستم‌د (Systemd): جایگزینی systemd-resolved و systemd-timesyncd با ابزارهای سبک‌تر یا غیرفعال‌سازی سرویس‌هایی که همیشه نیازی به روشن بودن ندارند.
  • تنظیمات zRAM و مموری: پیکربندی zram با الگوریتم zstd و تنظیم دقیق پارامترهای swappiness و watermark تا سیستم برای بیلد بسته‌ها در رم‌های کم دچار خطای OOM نشود.
  • تنظیم زباله‌روب (GC) زبان Nix: تنظیم متغیرهای محیطی Boehm GC برای کاهش مصرف حافظه هنگام ارزیابی ماژول‌ها.

چرا این موضوع برای مهندسان اهمیت دارد؟

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

این مطلب به‌صورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل

این خبر را با دیگران به اشتراک بگذارید

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