Екі айлық әзірлеуден кейін Линус Торвальдс ядроны шығарды. Linux 7.2. Ең маңызды өзгерістердің қатарында: USB4STREAM деректер ағынын беру механизмі, btrfs, xfs және ext4 өнімділігін оңтайландыру, i486 процессорын қолдау үшін кодты алып тастауды жалғастыру, SCHED_EXT жоспарлағыштарын құру мүмкіндігі, своп ішкі жүйесінде жадты тұтынуды азайту, атаусыз құбырларды жеделдету, KVM жүйесінде Intel MBEC және AMD GMET кеңейтімдерін қолдау, AppleTalk хаттамасын алып тастау, AMDGPU драйверінде HDMI 2.1 FRL бастапқы қолдауы.
7.2 ядросындағы негізгі жаңа мүмкіндіктер (1, 2, 3):
- Дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер
- Iomap механизмінде iomap_iter() функциясында аяқталған итерациялар үшін memset функциясына қосымша шақыру алынып тасталды, бұл жылдам NVMe дискілерінде жоғары енгізу/шығару қарқындылығымен ext4 және xfs файлдық жүйелерін пайдалану кезінде жүргізілген сынақтарда секундына енгізу/шығару операцияларының санын (IOPS) 5%-ға арттырды.
- XFS аймақтық сақтау құрылғыларын қолдау үшін тұрақты деп жарияланды (блоктар немесе секторлар топтарын аймақтарға бөлу, оларға тек деректерді тізбектей қосуға рұқсат етіледі, бүкіл блок тобын жаңарту).
- Btrfs енді әдепкі бойынша үлкен фолиоларды қолдайды, бұл шығындарды азайтады және қарқынды тізбекті енгізу/шығару кезінде өнімділікті жақсартады. Үлкен фолиоларға (2 МБ дейін) эксперименттік қолдау қосылды. Пайдаланушы кеңістігіндегі бақылау қосындысы туралы ақпаратты алу үшін, мысалы, mkfs утилитасы және қайталауды жоюды оңтайландыру үшін жаңа ioctl, GET_CSUMS қосылды. Тізбекті жазу өнімділігі 15%-ға, ал тікелей енгізу/шығару өнімділігі 59%-ға артты.
- Ext4 файлдық жүйесінің «жылдам бекіту» механизмі даулар мен тұйықталуларды жою үшін айтарлықтай қайта жасалды. /proc/fs/ext4/*/fc_info арқылы инодтық сурет статистикасын экспорттау қосылды. Каталог хэшін есептеу өнімділігі оңтайландырылды (255 таңбалы атаулар үшін жылдамдықты екі есеге жуық, 64 таңбалы атаулар үшін 27% және 32 таңбалы атаулар үшін 11%).
- F2FS енді fserror қатесінің қайтарылуын қолдайды, бұл файлдық жүйенің мәселелерін пайдаланушы кеңістігінен бақылауға мүмкіндік береді. Үзілісті өңдеуге жұмсалатын уақыт қысқартылды.
- Кірістірілген шифрлау функциясы бар аппараттық құрылғыларды пайдаланып блоктық құрылғыларды мөлдір шифрлау және дешифрлау үшін Device Mapper (DM) жүйесіне жаңа dm-inlinecrypt өңдегіші қосылды.
- Ядроға жаңа файлдық жүйелерді қосу туралы құжаттама берілді.
- NFS жүйесінде кемінде 16 ГБ жедел жады бар жүйелерде әдепкі блок өлшемі 4 МБ-қа дейін ұлғайтылды (блок өлшемін қолмен өзгерту үшін /proc/fs/nfsd/max_block_size пайдалануға болады). Каталогты делегациялауды қолдау қосылды, бұл белгілі бір уақыт аралығында берілген каталогпен операцияларды күй өзгерістерін тексермей орындауға мүмкіндік береді. сервер.
- SMB сервері енді сығылған түрде сақталған файлдарды, сондай-ақ желі арқылы беру кезінде деректерді сығуды қолдайды.
- Жаңа NTFS іске асыруы (ntfsplus) символдық сілтемелерді қолдауды қосады. Windows және метадеректерді бұзудың көптеген түрлерін дұрыс өңдеу қамтамасыз етіледі.
- Екі жыл бұрын қолданыстан шығарылған EROFS (Жақсартылған оқуға арналған файлдық жүйе) деректерін кэштеуге арналған fscache сервері жойылды.
- Ceph FS енді клиенттік сессияларды қолмен қалпына келтіруді қолдайды.
- 9P файлдық жүйесі жоба құру сияқты сценарийлерде өнімділікті жақсарту үшін оңтайландырылған.
- Файлдық жүйенің регистрге сезімталдығы туралы ақпаратты алуға арналған жалаушалар file_getattr() жүйелік шақыруына қосылды. FS_XFLAG_CASEFOLD жалаушасы файл атауын тексеру регистрге тәуелді емес орындалатынын, ал FS_XFLAG_CASENONPRESERVING жалаушасы жаңа файл атауларын жасаған кезде регистр туралы ақпарат сақталмайтынын көрсетеді. Бұл жалаушаларды регистрге сезімтал емес NFS клиенттерінде пайдалануға болады.
- openat2() жүйелік шақыруына O_EMPTYPATH жалаушасы қосылды, бұл бос файл жолын өткізуге мүмкіндік береді. Бұл жағдайда ашылып жатқан файлға апаратын жол берілген файл дескрипторына негізделіп анықталады.
- openat2() жүйелік шақыруына OPENAT2_REGULAR жалаушасы қосылды, ол тек кәдімгі файлдарды ашуға мүмкіндік береді (егер сокет, құбыр немесе құрылғы сияқты арнайы файл ашуға әрекет жасалса, EFTYPE қатесі қайтарылады).
- Жад және жүйелік қызметтер
- USB4 порттары арқылы қосылған компьютерлер арасында деректерді ағынмен жіберу үшін USB4STREAM механизмі енгізілді. /dev/tbstreamX құрылғысы қосылды, бұл файлдарды оқу және жазу сияқты стандартты read() және write() функцияларын пайдаланып деректерді оқуға және жазуға мүмкіндік береді. Мысалы, бір хостта ақпаратты "echo hello > /dev/tbstream0" командасын пайдаланып жіберуге болады, ал екіншісінде оны "cat /dev/tbstream0" командасын пайдаланып оқуға болады. USB4STREAM механизмін USB4 кабелі (thunderbolt_net) арқылы желілік қосылымды орнату мүмкіндігімен біріктіруге немесе желілік сокеттерді қолдамайтын қолданбалар арасында деректерді тасымалдау үшін бөлек пайдалануға болады.
- i486 процессорларын қолдауды жоюға арналған екінші өзгерістер сериясы қосылды. FPU жоқ процессорларға арналған қалқымалы нүктелі бірлік эмуляциясына қатысты 13-тен астам код жолағы алынып тасталды. CX8 (8 байт салыстыру және алмасу) және TSC (тапсырма жоспарлағышында қолданылатын CPU циклінің санауышы) аппараттық операциялары жоқ i486 процессорларын қолдау эмуляция коды жойылғандықтан алынып тасталды.
- OLPC XO-1 компьютерінде қолданылатын AMD Geode процессорларына қолдау жетім деп жарияланды.
- Intel компаниясының TDX (сенімді домен кеңейтімдері) іске асыруын жаңартуға қолдау қосылды, бұл механизм қонақ жүйесінің жедел жадын шифрлау үшін қолданылады. TDX жүктеу кезінде BIOS арқылы флэш-жадтан жедел жадқа ауыстырылатын арнайы бағдарламалық жасақтаманың жұмыс уақыты модулі ретінде жүзеге асырылады. Ядро енді бұл модульді басқару және оны қайта жүктеуді қажет етпей, жұмыс істеп тұрған жүйеде жаңа нұсқасымен ауыстыру мүмкіндіктерін қамтиды.
- Жаңа GPU ресурстарын бөлу жоспарлағышы (Fair GPU жоспарлағышы) енгізілді. Ол GPU-да GPU пайдаланатын процестермен жіберілген жұмыстың орындалу ретін анықтау үшін қолданылады. GPU сұраныстары үшін дәстүрлі FIDO кезегін пайдаланудың орнына, жаңа жоспарлағыш келесі процесс үшін өтпелі уақытпен іске қосу жоспарын пайдаланатын Толығымен Әділ Жоспарлағыш (CFS) тапсырма жоспарлағышына негізделген әділ ресурстарды бөлу механизмдерін пайдаланады. Жаңа жоспарлағыштың ең байқалатын әсері GPU-ны көп пайдаланатын интерактивті тапсырмаларды параллель орындау кезінде байқалады. 7.2 ядросы шығарылғанға дейінгі соңғы сәтте Әділ GPU жоспарлағышы өшірілді және ескі FIFO жоспарлағышы регрессияны түзету қажеттілігіне байланысты қайтарылды, бұл Proton-да белгілі бір ойындарды іске қосқан кезде өнімділіктің төмендеуіне және GPU-ны 100% пайдалануға әкелді.
- eBPF ішкі жүйесіндегі өзгерістер: Бірнеше бақылау нүктелеріне бір BPF бағдарламасын тіркеу мүмкіндігі қосылды. Бақылау нүктелеріне бекітілген BPF бағдарламалары енді бөлінбеген жад беттерін (бет қателері) дұрыс өңдеу арқылы пайдаланушы кеңістігі компоненттерінің жадына қол жеткізе алады. bpf() жүйелік шақыруы енді стандартты атрибуттарды (log_buf, log_size, log_level және log_true_size) қолдайды, бұл BPF_PROG_LOAD, BPF_BTF_LOAD және BPF_MAP_CREATE-мен шектелмей, барлық BPF командалары бойынша метадеректерді бірыңғай тасымалдауға мүмкіндік береді. BPF функцияларына 5 параметрден артық бермеуге шектеу алынып тасталды. Бөлінбеген жад беттеріне (бет қателері) қол жеткізуден қорықпай bpf_arena ортақ жадына қауіпсіз қол жеткізу мүмкіндігі қосылды. BPF хэш картасы құрылымының жаңа нұсқасы енгізілді, бұл динамикалық өлшемді өзгертуге мүмкіндік береді.
- Үзіліс статистикасы бар «/proc/interrupts» шығысын генерациялау оңтайландырылды, үзіліс санауыштарын сақтауға арналған құрылымдар жаңартылды және кэштеу қосылды.
- libselinux-та қолданылатын "/proc/filesystems" файлын жасау жеделдетілді.
- Тапсырма жоспарлағышы енді процессордың ішкі кэшінің күйін ескере отырып, CPU ядролары арасындағы жүктемені теңестіруді қолдайды. Жоспарлағыш енді бір жоғары деңгейлі кэшті ортақ пайдалану үшін бір процестегі ағындар сияқты ортақ ресурстарды пайдалана отырып, процестерді топтастыруға тырысады, бұл қажетті деректердің кэште табылу ықтималдығын арттыру арқылы деректерге қол жеткізу тиімділігін арттырады.
- BPF көмегімен CPU жоспарлаушыларын жасауға мүмкіндік беретін SCHED_EXT механизмі әрбір cg тобына өзінің тапсырма жоспарлағышын пайдалануға мүмкіндік беретін кірістірілген жоспарлаушыларды (қосымша жоспарлаушылар) жасау мүмкіндігін енгізуді жалғастырды.
- Rust-for- branch-тан өзгерістерді көшіруді жалғастыруLinux, драйверлер мен ядро модульдерін әзірлеу үшін Rust тілін екінші тіл ретінде пайдалануға қатысты (Rust қолдауы әдепкі бойынша қосылмаған және Rust-ты ядроны құрудың міндетті тәуелділігі ретінде қамтымайды). Ядродағы Rust қолдауы s390 архитектурасы үшін енгізілген. "Қауіпсіз" режимдегі код үшін жылдам жад примитивтерін қамтамасыз ететін "zercopy" пакеті қосылған.
- Ядроны құру үшін қажетті LLVM құралдар жиынтығының ең аз нұсқасы 17.0.1 нұсқасына дейін арттырылды.
- Минималистік C кітапханасында nolibc, ядроның бастапқы кодымен бірге беріледі Linux және OpenRISC және 32-биттік PA-RISC архитектураларын қолдайтын негізгі жүйелік шақырулар үшін құрылымды қамтамасыз етеді.
- Статикалық метадеректерді сақтау кезіндегі қосымша шығындарды жою және томдарды пайдалану кезінде анонимді және ортақ жадты біріктіру арқылы своп ішкі жүйесі өнімділікті жақсарту және ішкі жүйенің өзіндегі жадты тұтынуды азайту үшін оңтайландырылған. Жадтың азаюы айтарлықтай; мысалы, 1 ТБ своп бөлімін орнату жадты тұтынуды шамамен 512 МБ-қа азайтады.
- Жүйе қысым астында болған кезде жадты босату үшін жадты жоятын немесе ауыстыруға жылжытатын жадты шығару механизмінің өнімділігі жақсартылды. Белгілі бір жұмыс жүктемелерінде, мысалы, YCSB (Yahoo! Cloud Serving Benchmark) көмегімен MongoDB тестілеу кезінде өнімділіктің 30%-ға дейін артуы байқалды.
- Ағымдағы ядро құрастыруында пайдаланылатын компоненттерді, кітапханаларды және тәуелділіктерді, сондай-ақ код файлдарындағы SPDX тақырыптарынан алынған олардың лицензиялық ақпаратын көрсететін SBOM (Бағдарламалық жасақтама материалдарының тізімі) тізімдерін жасау үшін құрастыру жүйесіне "make sbom" командасы қосылды.
- Атауы жоқ құбырларды енгізу құлыптарды өңдеу үшін оңтайландырылды (жадты бөлу операциялары құлып шеңберінен тыс жылжытылады), бұл атаусыз құбырлардың өткізу қабілетін 21-48%-ға арттырды және кідіріс уақытын 17-33%-ға азайтты.
- Виртуализация және қауіпсіздік
- Пластиналық бөлгіш енді Clang 22 компиляторында енгізілген бөлу токендерін пайдалануды қолдайды. Токендер жадты бөлу операциялары үшін бірегей идентификаторларды және буфердің толып кету осалдықтарын пайдалануды қиындату үшін әртүрлі нысандарды бөлек бөлуді қамтамасыз етеді (бөлу кезінде бір нысан түріндегі буфердің толып кетуі басқа нысандар түрлерін зақымдау үшін оңай пайдаланылмайды).
- Бет кэшіндегі деректерді өзгерту үшін Copy Fail осалдығында пайдаланылатын AF_ALG механизмі ескірді және болашақ шығарылымда жойылады деп жоспарлануда. AF_ALG ядроның Crypto API-інде криптографиялық есептеулер үшін аппараттық үдеткіштерді қосады, бірақ өте ерекше жағдайларда қолданылады. 7.2 ядросында AF_ALG-ден асинхронды енгізу/шығару, ескі драйверлер және skcipher және aead іске асыруларындағы нөлдік көшірме механизмін қолдау алынып тасталды. Тек криптографиялық алгоритмдердің бағдарламалық жасақтама іске асырулары сақталады және ядроның Crypto API-індегі аппараттық криптографиялық үдеткіштерді қолдау алынып тасталды, себебі AF_ALG шабуыл бетін айтарлықтай кеңейтеді, бірақ пайдаланушы кеңістігіндегі криптография іске асыруларымен салыстырғанда өнімділік артықшылығын бермейді. AF_ALG Cryptsetup құралдар жинағында қолданылды, бірақ оны қолдау жақында 2.8.7 шығарылымында алынып тасталды.
- Сыртқы қызметке ядро ішкі жүйелерінің күйін тексеруге және олардың түпнұсқалығын қамтамасыз етуге мүмкіндік беретін IMA (Тұтастықты өлшеу архитектурасы) механизмі өлшеу нәтижелері бар ішкі кестелерді пайдаланушы кеңістігіне экспорттауға және жадты үнемдеу үшін оларды ядро буферлерінен жоюға қолдау көрсетумен толықтырылды.
- Landlock модулінде, артықшылықсыз бағдарламаларға ядро нысандарын пайдалануды шектеу құралдарын ұсынады Linux (файл иерархиялары, желілік сокеттері, ioctl және т.б.), UDP сокеттеріне кіруді басқаруды қолдау қосылды, сондай-ақ журналды маңызды емес ақпаратпен толтырмау үшін нысанды құлыптау туралы ақпараттың журналға шығуын таңдамалы түрде өшіру мүмкіндігі қосылды.
- Ядро кіріс жолынан белгілі бір байт санын көшіретін strncpy() функциясын пайдаланудан алынып тасталды. strncpy() функциясын пайдалану жолдың соңында нөлдік таңбаның болмауына немесе нөлдермен қосымша толтыруға байланысты қателіктер қаупін тудырды. strncpy() функциясының орнына нөлмен аяқталған жолдарды көшіру үшін strscpy() және strscpy_pad() функцияларын, сондай-ақ белгілі бекітілген өлшемдегі жолдарды көшіру үшін strtomem_pad(), memcpy_and_pad() және memcpy() функцияларын пайдалану ұсынылады. Ядрода strncpy() функциясын пайдаланудан бас тарту жұмыстары 2020 жылы басталды және 70 әзірлеушіден 362 коммит талап етті.
- Гипервизорда KVM Intel MBEC (Режимге негізделген орындауды басқару) және AMD GMET (Қонақ режиміндегі орындау тұзағы) кеңейтімдеріне қолдау қосылды, олар қонақ жүйелерінде жадты аудару кестелерінде ядро мен пайдаланушы кеңістігінің орындалу құқықтарын бөлек өңдеуге мүмкіндік береді. Бұрын Intel және AMD аппараттық виртуалдандыру кеңейтімдері жад беттерін тек бір битпен орындалатын файл ретінде белгілеуге мүмкіндік беретін, ал бағдарламалық жасақтамаға негізделген ядро мен пайдаланушы кеңістігінің құқықтарын гипервизор деңгейінде бөлуге мүмкіндік беретін. MBEC және GMET пайдалану гипервизор жағындағы рұқсат тексерулерін жояды және қонақ жүйесінен VMexit гипервизорына ресурстарды көп қажет ететін басқару берілістерін айтарлықтай азайтады.
- Желілік ішкі жүйе
- TCP-AO (TCP Authentication Option, RFC 5925) кеңейтімі жаңа libcrypto криптографиялық кітапханасына көшірілді, бұл кодты жеңілдетіп, оның өнімділігін жақсартты. TCP-AO ескірген MD5 алгоритміне негізделген бұрын қолжетімді TCP-MD5 опциясын алмастыра отырып, заманауи HMAC-SHA-1-96 және AES-128-CMAC-96 алгоритмдерін пайдаланып, MAC (Хабарламаны аутентификациялау коды) кодтарын пайдаланып TCP тақырыптарын тексеруге мүмкіндік береді.
- Көп жолды TCP (MPTCP) қосылымдары үшін қолдау көрсетілетін ішкі ағындар саны 8-ден 64-ке дейін көбейтілді.
- Ядро желілік стегінде rtnl_lock жаһандық құлыпын пайдалануды азайту жұмыстары жалғасты.
- Ядро AppleTalk хаттамасының стегінің енгізілуін алып тастады, ол 1985 жылдан бері Apple компьютерлерінде қолданылып келеді және 1990 жылдары ауыстырылды TCP/IPСонымен қатар, PPPoATM-мен байланысы жоқ ATM деректерін беру технологиясының компоненттері, сондай-ақ ISA және PCMCIA шиналарына негізделген ARCnet желілік интерфейстері, PCMCIA интерфейсі бар Bluetooth адаптерлері, Chelsea TLS үдеткіштері, TLS-ті sockmap-пен біріктіруге арналған код және cfg80211/mac80211 сымсыз стегіндегі 5/10 МГц жиілік диапазондарын қолдау жойылды. Шешілмеген блоктау мәселелеріне және қолдаушылардың болмауына байланысты TCP Offload Engine негізіндегі TLS өңдеу үдеткішінің арнайы іске асырылуы жойылды (жиі қолданылатын TLS offload іске асырылуы сақталды). 64 биттік жүйелердегі 32 биттік x_tables үйлесімділік коды өшірілді және жойылуы жоспарлануда.
- pppoe драйвері енді пакеттерді қайта жинау мен сегменттеуді аппараттық жеделдету үшін GRO (Generic Receive Offload) және GSO (Generic Segmentation Offload) механизмдерін қолдайды. GRO және GSO пайдалану кіріс трафиктің өткізу қабілетін айтарлықтай арттырады. Мысалы, мекенжай аудармашысымен конфигурацияланған MediaTek MT7621 құрылғыларында максималды өткізу қабілеті 130 Мбит/с-тан 630 Мбит/с-қа дейін артты.
- Жабдық
- AMDGPU драйвері енді HDMI 2.1 FRL (Fixed Rate Link) технологиясын бастапқы қолдауды қамтиды, бұл 4K/120Hz және 8K/60Hz жиіліктерінде сығылмаған бейнені жіберуге мүмкіндік береді. HDMI 2.1 қолдауы бұрын HDMI форумының лицензиялау талаптарына байланысты ашық бастапқы коды бар драйверлерде қиындық тудырды, бірақ AMD қазір ұқсас іске асыруды қамтамасыз етті.
- i915 драйвері енді дисплей контроллері үшін фон түсін орнатуды қолдайды. pin_params.needs_low_address параметрі енгізілді.
- Tiger Lake процессорларынан бастап Intel Arc сериялы графикалық карталарында және интеграцияланған графикада қолданылатын Intel Xe архитектурасына негізделген GPU-ларға арналған Xe DRM (Direct Rendering Manager) драйверімен жұмыс жалғасты. CRI (Crescent Island) платформасына бастапқы қолдау қосылды. Xe3p dGPU платформалары үшін жүйелік контроллер енгізілді.
- Nouveau драйвері NVIDIA GA100 GPU мәселелерін шешеді.
- v3d драйвері Raspberry Pi тақталарында v3D GPU қуат тұтынуын басқару мүмкіндігін қамту үшін жаңартылды.
- Біз Turing микроархитектурасына негізделген NVIDIA GeForce RTX 2000 сериясынан бері қолданылып келе жатқан GSP микробағдарламасымен жабдықталған NVIDIA GPU үшін Nova драйвер компоненттерін біріктіруді жалғастырдық. Драйвер Rust тілінде жазылған. NVIDIA GA100, Hopper және Blackwell сериялы GPU-ларға қолдау қосылды.
- ARM платаларына, SoC және құрылғыларға қолдау қосылды: Apple t8122 (M3), Motorola Edge 30, Nothing Phone 3a, Google Pixel 3a XL, Qualcomm Dragonwing IPQ9650, Huawei Hawi, ZTE zx297520v3, Renesas R-Car M3Le, ASPEED AST27xx, Cortina Gemini, NXP i.MX6/8/9, NXP LX2160A, TI K3 AM62x.
Сонымен қатар, Латын Америкасының еркін бағдарламалық жасақтама қоры 7.2 ядросының толығымен тегін нұсқасын жасады - Linux-libre 7.2-gnu, өндіруші шектеген ауқымы бар бос емес компоненттерді немесе код бөлімдерін қамтитын микробағдарлама және драйвер элементтерінен тазартылды. 7.2 шығарылымында жаңа rt722-sdca және tac5xx2 драйверлері үшін blob тазалау мүмкіндігі бар. amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 және mt792x драйверлері үшін тазалау коды жаңартылды. Микробағдарламаны жүктеу интерфейстері реттелді. ARM чиптеріне арналған devicetree (dts) файлдарындағы blob атаулары тазартылды.
Ақпарат көзі: opennet.ru
