پس از دو ماه توسعه، لینوس توروالدز انتشار هسته لینوکس 6.0 را ارائه کرد. تغییر قابل توجه در شماره نسخه به دلایل زیبایی شناختی است و یک گام رسمی برای رفع ناراحتی ناشی از انباشتن تعداد زیادی از مسائل در این سری است (لینوس به شوخی گفت که دلیل تغییر شماره شعبه بیشتر احتمال دارد که انگشتان او تمام شده باشد. و انگشتان پا برای شمارش شماره نسخه). از جمله قابل توجه ترین تغییرات: پشتیبانی از نوشتن بافر ناهمزمان در XFS، درایور بلوک ublk، بهینه سازی زمانبندی کار، مکانیزمی برای تأیید عملکرد صحیح هسته، پشتیبانی از رمز بلوک ARIA.
نوآوری های کلیدی در هسته 6.0:
- زیرسیستم دیسک، I/O و سیستم های فایل
- سیستم فایل XFS با استفاده از مکانیسم io_uring از نوشتن بافر ناهمزمان پشتیبانی کرده است. آزمایشهای عملکردی که با استفاده از ابزارهای fio (1 رشته، اندازه بلوک 4 کیلوبایت، 600 ثانیه، نوشتن متوالی) انجام شدهاند، افزایش عملیات ورودی/خروجی در ثانیه (IOPS) را از 77 هزار به 209 هزار، سرعت انتقال داده از 314 مگابایت بر ثانیه به 854 مگابایت بر ثانیه نشان میدهند. و کاهش تاخیر از 9600 ثانیه به 120 ثانیه (80 برابر).
- سیستم فایل Btrfs نسخه دوم پروتکل را برای دستور "ارسال" پیاده سازی می کند که از ابرداده اضافی پشتیبانی می کند، داده ها را در بلوک های بزرگتر (بیش از 64K) ارسال می کند و وسعت ها را به صورت فشرده ارسال می کند. عملکرد عملیات خواندن مستقیم به طور قابل توجهی (تا 3 برابر) به دلیل خواندن همزمان حداکثر 256 بخش افزایش یافته است. با کاهش ابرداده های رزرو شده برای عناصر معوق، کشمکش قفل را کاهش داد و بررسی ابرداده را تسریع کرد.
- عملیات جدید ioctl EXT4_IOC_GETFSUUID و EXT4_IC_SETFSUUID به سیستم فایل ext4 اضافه شده است تا UUID ذخیره شده در superblock را بازیابی یا تنظیم کند.
- سیستم فایل F2FS حالت مصرف حافظه کم را ارائه می دهد که عملکرد دستگاه های دارای مقدار کمی رم را بهینه می کند و به شما امکان می دهد مصرف حافظه را با هزینه کاهش عملکرد کاهش دهید.
- پشتیبانی برای احراز هویت درایو NVMe اضافه شده است.
- سرور NFSv4 محدودیتی را برای تعداد کلاینت های فعال اعمال می کند که به ازای هر گیگابایت رم در سیستم، 1024 کلاینت معتبر تعیین می شود.
- پیاده سازی مشتری CIFS عملکرد را در حالت انتقال چند کاناله بهبود بخشیده است.
- یک پرچم جدید FAN_MARK_IGNORE به زیرسیستم ردیابی رویداد در fanotify FS اضافه شده است تا رویدادهای خاص را نادیده بگیرد.
- در Overlayfs FS، هنگامی که در بالای FS با نگاشت شناسه کاربر نصب می شود، پشتیبانی صحیح از لیست های کنترل دسترسی سازگار با POSIX ارائه می شود.
- درایور بلوک ublk اضافه شد که منطق خاصی را به سمت فرآیند پسزمینه در فضای کاربر منتقل میکند و از زیرسیستم io_uring استفاده میکند.
- خدمات حافظه و سیستم
- ویژگی های جدیدی به زیرسیستم DAMON (Data Access MONitor) اضافه شده است که نه تنها امکان نظارت بر دسترسی فرآیند به RAM از فضای کاربر را فراهم می کند، بلکه بر مدیریت حافظه نیز تأثیر می گذارد. به طور خاص، یک ماژول جدید "LRU_SORT" پیشنهاد شده است که گروه بندی مجدد لیست های LRU (کمترین استفاده اخیر) را برای افزایش اولویت صفحات حافظه خاص ارائه می دهد.
- توانایی ایجاد مناطق حافظه جدید با استفاده از قابلیت های گذرگاه CXL (Compute Express Link) که برای سازماندهی تعامل پرسرعت بین CPU و دستگاه های حافظه استفاده می شود، پیاده سازی شده است. CXL به شما این امکان را می دهد که مناطق حافظه جدید ارائه شده توسط دستگاه های حافظه خارجی را متصل کنید و از آنها به عنوان منابع فضای آدرس فیزیکی اضافی برای گسترش حافظه دسترسی تصادفی (DDR) یا حافظه دائمی (PMEM) سیستم استفاده کنید.
- رفع مشکلات عملکرد پردازنده های AMD Zen ناشی از کد اضافه شده 20 سال پیش برای حل مشکل سخت افزاری در برخی چیپست ها (دستورالعمل WAIT اضافی برای کاهش سرعت پردازنده اضافه شد تا چیپست زمان داشته باشد تا به حالت بیکار برود). این تغییر منجر به کاهش عملکرد در زیر بار کاری شد که اغلب بین حالتهای بیکار و مشغول تغییر میکند. به عنوان مثال، پس از غیرفعال کردن راه حل، میانگین نمرات آزمون tbench از 32191 مگابایت بر ثانیه به 33805 مگابایت بر ثانیه افزایش یافت.
- کدهای اکتشافی از زمانبندی کار حذف شدهاند و از مهاجرت فرآیندها به CPUهایی که کمترین بارگذاری را دارند، با در نظر گرفتن سود پیشبینیشده در مصرف انرژی، اطمینان حاصل میکند. توسعه دهندگان به این نتیجه رسیدند که اکتشافی به اندازه کافی مفید نیست و حذف آن و انتقال فرآیندها بدون ارزیابی اضافی آسان تر است، هر زمان که چنین مهاجرتی به طور بالقوه منجر به مصرف انرژی کمتر شود (به عنوان مثال، زمانی که CPU هدف در سطح توان پایین تری قرار دارد). غیرفعال کردن اکتشافی منجر به کاهش مصرف انرژی در هنگام انجام کارهای فشرده شد، به عنوان مثال، در تست رمزگشایی ویدیو، مصرف برق 5.6٪ کاهش یافت.
- توزیع وظایف در هستههای CPU در سیستمهای بزرگ بهینه شده است، که عملکرد را برای انواع خاصی از حجم کار بهبود بخشیده است.
- رابط ورودی/خروجی ناهمزمان io_uring یک پرچم جدید به نام IORING_RECV_MULTISHOT ارائه می دهد که به شما امکان می دهد از حالت چند شات با فراخوانی سیستم recv() برای انجام چندین عملیات خواندن همزمان از یک سوکت شبکه استفاده کنید. io_uring همچنین از انتقال شبکه بدون بافر میانی (صفر کپی) پشتیبانی می کند.
- قابلیت قرار دادن برنامه های BPF متصل به uprobe را در حالت خواب پیاده سازی کرد. BPF همچنین یک تکرار کننده ksym جدید برای کار با جداول نماد هسته اضافه می کند.
- رابط منسوخ "efivars" در sysfs، که برای دسترسی به متغیرهای بوت UEFI در نظر گرفته شده بود، حذف شده است (FS مجازی efivarfs اکنون به طور جهانی برای دسترسی به داده های EFI استفاده می شود).
- ابزار perf گزارش های جدیدی برای تجزیه و تحلیل تداخل قفل و زمان صرف شده توسط پردازنده برای اجرای اجزای هسته دارد.
- تنظیم CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 حذف شده است که به هسته اجازه می دهد در حالت بهینه سازی "-O3" ساخته شود. ذکر شده است که آزمایشهای حالتهای بهینهسازی را میتوان با عبور پرچمها در حین مونتاژ انجام داد ("make KCFLAGS=-O3")، و افزودن یک تنظیم به Kconfig نیاز به نمایه عملکرد قابل تکرار دارد، که نشان میدهد باز کردن حلقه استفاده شده در حالت "-O3" به یک مزیت در مقایسه با سطح بهینه سازی "-O2".
- یک رابط debugfs اضافه شده است تا اطلاعاتی در مورد عملکرد «کوچککنندههای حافظه» به دست آورد (هنگامی که حافظه کافی وجود ندارد و ساختارهای داده هسته بستهبندی برای کاهش مصرف حافظه آنها، کنترلکنندهها فراخوانی میشوند).
- برای معماری های OpenRISC و LoongArch، پشتیبانی از گذرگاه PCI پیاده سازی شده است.
- برای معماری RISC-V، پسوند «Zicbom» برای مدیریت دستگاههایی با DMA اجرا شده است که با حافظه پنهان منسجم نیست.
- مجازی سازی و امنیت
- یک مکانیسم تأیید RV (Runtime Verification) برای تأیید عملکرد صحیح در سیستمهای بسیار قابل اعتماد که هیچ خرابی را تضمین میکند، اضافه شده است. راستیآزمایی در زمان اجرا با اتصال کنترلکنندهها به نقاط ردیابی انجام میشود که پیشرفت واقعی اجرا را در برابر یک مدل قطعی مرجع از پیش تعیینشده دستگاه که رفتار مورد انتظار سیستم را تعریف میکند، بررسی میکند. راستیآزمایی با مدل در زمان اجرا به عنوان روشی سبکتر و آسانتر برای تأیید صحت اجرا در سیستمهای بحرانی، تکمیل کننده روشهای تأیید قابلیت اطمینان کلاسیک، قرار میگیرد. از جمله مزایای RV توانایی ارائه تأیید دقیق بدون اجرای جداگانه کل سیستم در یک زبان مدل سازی و همچنین پاسخ انعطاف پذیر به رویدادهای پیش بینی نشده است.
- اجزای هسته یکپارچه برای مدیریت محصورها بر اساس فناوری Intel SGX2 (Software Guard Extensions) که به برنامهها اجازه میدهد کد را در مناطق رمزگذاریشده ایزولهای از حافظه اجرا کنند، که بقیه سیستم دسترسی محدودی به آن دارد. فناوری Intel SGX2 در تراشههای اینتل Ice Lake و Gemini Lake پشتیبانی میشود و در دستورالعملهای اضافی برای مدیریت حافظه پویا محصورهها با Intel SGX1 متفاوت است.
- برای معماری x86، قابلیت انتقال seed برای مولد اعداد شبه تصادفی از طریق تنظیمات بوت لودر پیاده سازی شده است.
- ماژول SafeSetID LSM اکنون توانایی مدیریت تغییرات ایجاد شده از طریق فراخوانی setgroups() را دارد. SafeSetID به سرویسهای سیستم اجازه میدهد تا بدون افزایش امتیازات (CAP_SETUID) و بدون کسب امتیازات ریشه، کاربران را بهطور ایمن مدیریت کنند.
- پشتیبانی از رمز بلوک ARIA اضافه شده است.
- ماژول مدیریت امنیت مبتنی بر BPF امکان اتصال کنترل کننده ها به فرآیندها و گروه های فرآیندی (cgroups) را فراهم می کند.
- مکانیزمی با پیادهسازی Watchdog برای شناسایی هنگهای سیستمهای مهمان بر اساس نظارت بر فعالیت vCPU اضافه شده است.
- زیر سیستم شبکه
- کنترل کننده هایی برای تولید و بررسی کوکی های SYN به زیرسیستم BPF اضافه شده است. همچنین مجموعه ای از توابع (kfunc) برای دسترسی و تغییر وضعیت اتصالات اضافه شده است.
- پشته بی سیم پشتیبانی از مکانیزم MLO (عملیات چند پیوندی) را اضافه کرده است، که در مشخصات WiFi 7 تعریف شده است و به دستگاه ها اجازه می دهد به طور همزمان داده ها را با استفاده از باندها و کانال های فرکانسی مختلف دریافت و ارسال کنند، به عنوان مثال، به طور همزمان چندین کانال ارتباطی بین یک نقطه دسترسی به دستگاه مشتری
- عملکرد پروتکل TLS ساخته شده در هسته بهبود یافته است.
- یک گزینه خط فرمان هسته "hostname=" اضافه کرد تا اجازه دهد نام میزبان در اوایل فرآیند بوت، قبل از شروع اجزای فضای کاربر تنظیم شود.
- Оборудование
- درایور i915 (اینتل) از کارتهای گرافیکی گسسته Intel Arc (DG2/Alchemist) A750 و A770 پشتیبانی میکند. اجرای اولیه پشتیبانی از پردازنده های گرافیکی Intel Ponte Vecchio (Xe-HPC) و Meteor Lake پیشنهاد شده است. کار برای پشتیبانی از پلتفرم اینتل Raptor Lake ادامه دارد.
- درایور amdgpu همچنان از پلتفرم های AMD RDNA3 (RX 7000) و CDNA (Instinct) پشتیبانی می کند.
- درایور Nouveau کد پشتیبانی را برای موتورهای نمایشگر گرافیکی NVIDIA nv50 تغییر داده است.
- درایور جدید logicvc DRM برای صفحات LogiCVC اضافه شد.
- درایور v3d (برای Broadcom Video Core GPU) از بردهای Raspberry Pi 4 پشتیبانی می کند.
- پشتیبانی از پردازنده گرافیکی Qualcomm Adreno 619 به درایور msm اضافه شده است.
- پشتیبانی از ARM Mali Valhall GPU به درایور Panfrost اضافه شد.
- اضافه شدن پشتیبانی اولیه از پردازندههای Qualcomm Snapdragon 8cx Gen3 که در لپتاپهای Lenovo ThinkPad X13s استفاده میشوند.
- درایورهای صدا برای پلتفرم های AMD Raphael (Ryzen 7000)، AMD Jadeite، Intel Meteor Lake و Mediatek MT8186 اضافه شده است.
- پشتیبانی از شتاب دهنده های یادگیری ماشینی Intel Habana Gaudi 2 اضافه شده است.
- پشتیبانی از ARM SoC Allwinner H616، NXP i.MX93، Sunplus SP7021، Nuvoton NPCM8XX، Marvell Prestera 98DX2530، Google Chameleon v3 اضافه شده است.
در همان زمان، بنیاد نرمافزار آزاد آمریکای لاتین نسخهای از هسته کاملاً رایگان 6.0 - Linux-libre 6.0-gnu را تشکیل داد که از عناصر سفتافزار و درایورهای حاوی اجزا یا بخشهایی از کد غیرآزاد پاک شده بود، که محدوده آن عبارت است از توسط سازنده محدود شده است. نسخه جدید استفاده از حباب ها را در درایور صوتی CS35L41 HD و درایور UCSI برای میکروکنترلرهای STM32G0 غیرفعال می کند. فایل های DTS تراشه های کوالکام و مدیاتک پاک شده اند. غیرفعال کردن حباب ها در درایور MediaTek MT76 دوباره کار شده است. کد تمیز کردن حباب به روز شده در درایورها و زیرسیستم های AMDGPU، Adreno، Tegra VIC، Netronome NFP و Habanalabs Gaudi2. تمیز کردن درایور VXGE که از هسته حذف شده بود متوقف شد.
منبع: opennet.ru