یادداشت های انتشار هسته

این صفحه خلاصه‌ای از ویژگی‌های اصلی هر نسخه هسته را ارائه می‌دهد و پیوندهایی به اطلاعات بیشتر ارائه می‌دهد.

ویژگی‌های جدید کرنل ۶.۱۲

این بخش ویژگی‌های جدید در هسته ۶.۱۲ را توضیح می‌دهد.

پروفایل تخصیص حافظه

کلید درک استفاده از حافظه، دانستن محل انجام تخصیص‌ها است. کرنل ۶.۱۲ شامل یک سیستم تخصیص حافظه جدید به نام پروفایل تخصیص حافظه ( CONFIG_MEM_ALLOC_PROFILING در پیکربندی) است. با پروفایل تخصیص حافظه، هر تخصیص به یک خط منبع منحصر به فرد نسبت داده می‌شود تا مشکلات مربوط به تخصیص‌ها به سرعت شناسایی شوند. علاوه بر این، پروفایل تخصیص حافظه:

  • در مرحله مهندسی استفاده می‌شود، اما در تصویر استاندارد GKI موجود است.

  • با استفاده از پارامتر بوت sysctl.vm.mem_profiling قابل فعال‌سازی است.

  • هم برای ماژول‌های درون هسته و هم برای ماژول‌های بارگذاری شده کار می‌کند.

io_uring سریع‌تر با قابلیت کپی صفر و خواندن چند مرحله‌ای

در هسته ۶.۱۲، ماژول‌های statsd و logd از sendfile zero-copy استفاده می‌کنند که باعث بهبود عملکرد آنها می‌شود.

علاوه بر این، این نسخه هسته، خواندن چند مرحله‌ای را پیاده‌سازی می‌کند که در آن یک عملیات خواندن می‌تواند چندین قطعه داده را به طور همزمان بازیابی کند و عملکرد را بهبود بخشد.

قابلیت‌ها و پشتیبانی بهبود یافته از Berkeley Packet Filter (BPF)

در هسته ۶.۱۲، زنجیره ابزار BPF به پشتیبانی از CO-RE و چندین ویژگی مدرن منتقل شده است. علاوه بر این، یک بارگذار جدید BPF امکان استفاده از BPF مدرن را برای برنامه‌هایی که بخشی از AOSP هستند، فراهم می‌کند.

اجرای پروکسی

اجرای پروکسی به زمانبند اجازه می‌دهد تا چرخه‌های CPU را از فرآیندهای با اولویت بالا قرض بگیرد تا قفل‌های نگهداری شده توسط فرآیندهای با اولویت پایین‌تر را بازیابی کند. این ویژگی مشکلات وارونگی اولویت را کاهش می‌دهد.

ویژگی‌های جدید کرنل ۶.۶

این بخش ویژگی‌های جدید در هسته ۶.۶ را توضیح می‌دهد.

پشتیبانی از زنگ زدگی

چندین پروژه کرنل ۶.۶ از Rust استفاده می‌کنند.

قفل‌های هر ناحیه حافظه مجازی (VMA)

کرنل ۶.۶ از قفل‌های ناحیه حافظه مجازی برای رسیدگی به مشکلات مربوط به تداخل با mmap_lock (که قبلاً با نام mmap_sem شناخته می‌شد) استفاده می‌کند. به این ترتیب، برنامه‌هایی که از تعداد زیادی نخ استفاده می‌کنند، ممکن است شاهد کاهش زمان اجرا تا ۲۰٪ باشند.

برنامه‌ریز «اولین مهلت مجازی واجد شرایط» (EEVDF) جایگزین CFS می‌شود

EEVDF جایگزین زمان‌بند کاملاً منصفانه (CFS) می‌شود تا تعادل بهتری بین دسترسی CPU بین وظایف کوتاه‌مدت و بلندمدت برقرار کند.

کاهش مصرف برق از فراخوانی‌های به‌روزرسانی نسخه خواندن (RCU)

گزینه RCU_LAZY از یک روش دسته‌بندی پاسخ به تماس RCU مبتنی بر تایمر برای صرفه‌جویی در مصرف برق استفاده می‌کند. برای یک سیستم کم‌بار یا بیکار، این گزینه می‌تواند مصرف برق را ۵ تا ۱۰ درصد کاهش دهد.

فشرده‌سازی بهتر حافظه ZRAM

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

ویژگی‌های جدید کرنل ۶.۱

این بخش ویژگی‌های جدید در هسته ۶.۱ را توضیح می‌دهد.

امنیت سریع‌تر با یکپارچگی جریان کنترل هسته (KCFI)

KCFI جایگزین یکپارچگی جریان کنترل (CFI) می‌شود که منجر به کاهش هزینه زمان اجرا و عدم هزینه زمان ساخت می‌شود. کاهش هزینه زمان اجرا به KCFI اجازه می‌دهد تا در مقایسه با CFI در مکان‌های بیشتری، به‌ویژه نقاط ردیابی و قلاب‌های فروشنده، فعال شود.

علاوه بر KCFI، کرنل ۶.۱ ویژگی‌های امنیتی متعددی مانند بررسی دقیق مرزهای memcpy و کاهش حملات حدس و گمان مستقیم را معرفی می‌کند.

برای اطلاعات بیشتر در مورد KCFI، به یکپارچگی جریان کنترل هسته مراجعه کنید.

LRU چند نسلی (MGLRU)

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

پیاده‌سازی MGLRU همچنین شامل پشتیبانی از یک درخت افرای جدید RCU-safe است که در برخی موارد می‌تواند جایگزین درخت قرمز-سیاه (rbtree) شود. در صورت استفاده، درخت افرای RCU-safe به دلیل اشغال فضای کمتر و عدم قفل‌شوندگی، عملکرد را افزایش می‌دهد.

برای اطلاعات بیشتر در مورد MGLRU، به LRU چند نسلی مراجعه کنید.

زمان‌بندی

نگهداری و به‌روزرسانی زمان‌بندی، جنبه‌ی کلیدی کار برای بهبود هسته است. به‌روزرسانی‌های هسته در نسخه ۶.۱ شامل موارد زیر است:

  • زمان‌بندی آگاه از خوشه اضافه شده است که با مهاجرت به هسته‌هایی که حافظه پنهان L2 را به اشتراک می‌گذارند، عملکرد را افزایش می‌دهد.
  • الگوریتم ابتکاری حاشیه انرژی غیرضروری حذف شد. با محدود کردن برخی از مهاجرت‌ها، این به‌روزرسانی مصرف انرژی را تا ۵٪ بهبود می‌بخشد.
  • بهبود تعادل بار برای کاهش تأخیر در بیدار شدن از خواب.
  • دوره‌های زمانی مجاز تسریع‌شده‌ی RCU به یک kthread بی‌درنگ منتقل شد. این به‌روزرسانی، موارد پرت تأخیر مربوط به RCU را تا حد زیادی کاهش داد.

گرافیک

کرنل ۶.۱ شامل متدهای جدیدی برای dma-buf جهت خروجی گرفتن و وارد کردن فایل‌های همگام‌سازی است که با نیاز به رابط برنامه‌نویسی کاربردی Vulcan Video هماهنگ است.

متد جدید futex_waitv() با انتظار همزمان روی چندین futex، انتقال بازی‌ها از پلتفرم‌های دیگر را ساده می‌کند.

ابزار اشکال‌زدایی

از ابزار Kernel Concurrency SANitizer (KCSAN) در نسخه‌های اشکال‌زدایی برای شناسایی مشکلات (races) در کد هسته استفاده کنید.

علاوه بر این، از Kernel Memory SANitizer (KMSAN) برای یافتن مقادیر مقداردهی اولیه نشده در هسته استفاده کنید.

بهبود پشتیبانی از ARM64

هسته ۶.۱ بهبودهای متعددی را برای معماری ARM64 به ارمغان می‌آورد، از جمله:

  • پشتیبانی از افزونه‌های تایمر ARMv8.6
  • پشتیبانی از الگوریتم احراز هویت اشاره‌گر QARMA3
  • پشتیبانی اولیه از ARMv9 Scalable Matrix Extension (SME)
  • بهبودهایی در وصله‌گذاری ویژگی‌های جایگزین که منجر به کوچک‌تر شدن اندازه تصویر هسته می‌شود