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

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

ویژگی‌های جدید هسته ۶.۱۲

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

نمایه‌سازی تخصیص حافظه

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

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

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

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

‫io_uring سریع‌تر با خواندن چندباره و بدون کپی

در هسته ۶.۱۲، واحدهای statsd و logd از sendfile بدون کپی استفاده می‌کنند که عملکرد آن‌ها را بهبود می‌بخشد.

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

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

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

اجرای پراکسی

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

ویژگی‌های جدید هسته ۶.۶

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

پشتیبانی از Rust

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

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

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

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

EEVDF جایگزین «زمان‌بند کاملاً عادلانه» (CFS) می‌شود تا دسترسی به واحد پردازش مرکزی را بین تکالیف کوتاه و طولانی بهتر متعادل کند.

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

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

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

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

ویژگی‌های جدید Kernel 6.1

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

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

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

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

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

‫Multi-Generational LRU (MGLRU)

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

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

برای اطلاعات بیشتر درباره MGLRU، به Multi-Gen LRU مراجعه کنید.

برنامه‌ریزی کردن

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

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

گرافیک‌

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

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

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

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

علاوه‌براین، از «پاک‌کننده حافظه هسته» (KMSAN) برای یافتن مقادیر مقداردهی‌نشده در هسته استفاده کنید.

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

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

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