Π Π΅Π»ΠΈΠ· ядра Linux 5.7

ПослС Π΄Π²ΡƒΡ… мСсяцСв Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ прСдставил Ρ€Π΅Π»ΠΈΠ· ядра Linux 5.7. Π‘Ρ€Π΅Π΄ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ: новая рСализация Π€Π‘ exFAT, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ bareudp для создания UDP-Ρ‚ΡƒΠ½Π½Π΅Π»Π΅ΠΉ, Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° основС Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ для ARM64, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прикрСплСния BPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΊ LSM-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, новая рСализация Curve25519, Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ «split-lock», ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ BPF с PREEMPT_RT, снятиС ограничСния Π½Π° 80-ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ строки Π² ΠΊΠΎΠ΄Π΅, ΡƒΡ‡Ρ‘Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ CPU Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ Π·Π°Π΄Π°Ρ‡, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования clone() для пороТдСния процСссов Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ cgroup, Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ записи Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ userfaultfd.

Π’ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ принято 15033 исправлСний ΠΎΡ‚ 1961 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²,
Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ‚Ρ‡Π° — 39 ΠœΠ‘ (измСнСния Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ»ΠΈ 11590 Ρ„Π°ΠΉΠ»ΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 570560 строк ΠΊΠΎΠ΄Π°,
ΡƒΠ΄Π°Π»Π΅Π½ΠΎ 297401 строк). Около 41% всСх прСдставлСнных Π² 5.7
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ связаны с Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ устройств, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 16% ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΠΌΠ΅ΡŽΡ‚
ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ обновлСнию ΠΊΠΎΠ΄Π°, спСцифичного для Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, 13%
связано с сСтСвым стСком, 4% — с Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΌΠΈ систСмами ΠΈ 4% c Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ
подсистСмами ядра.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Дисковая подсистСма, Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ систСмы
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° новая рСализация Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° exFAT, основанная Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ «sdfat» (2.x), Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Samsung для своих Android-смартфонов. Π Π°Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π² ядро Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π±Ρ‹Π» основан Π½Π° ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ Samsung (вСрсия 1.2.9) ΠΈ отставал ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΡ‚ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° 10%. Напомним, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ exFAT Π² ядро стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ компания Microsoft ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° общСдоступныС спСцификации ΠΈ прСдоставила Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±Π΅Π·Π²ΠΎΠ·ΠΌΠ΅Π·Π΄Π½ΠΎΠ³ΠΎ использования ΠΏΠ°Ρ‚Π΅Π½Ρ‚ΠΎΠ² Π½Π° exFAT Π² Linux.
    • Π’ Btrfs Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° новая ΠΊΠΎΠΌΠ°Π½Π΄Π° ioctl() — BTRFS_IOC_SNAP_DESTROY_V2, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» ΠΏΠΎ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½Π° полная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° клонирования inline-экстСнтов. Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΎ число Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ пСрСраспрСдСлСния, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ оТидания ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ‘balance cancel’. УскорСно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… ссылок Π½Π° экстСнты (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, врСмя выполнСния тСстового сцСнария ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΠ»ΠΎΡΡŒ с часа Π΄ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΈΠ½ΡƒΡ‚). Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прикрСплСния ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ inode Π΄Π΅Ρ€Π΅Π²Π° экстСнтов Ρ„Π°ΠΉΠ»Π°. ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° схСма Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΏΡ€ΠΈ записи Π² ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Ρ‹ ΠΈ ΠΏΡ€ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ NOCOW. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ выполнСния fsync для Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ².
    • Π’ XFS ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ fsck для Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ². ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для пСрСстроСния структур btree, которая Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ использована для ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ xfs_repair ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ возмоТности восстановлСния Π±Π΅Π· отмонтирования Ρ€Π°Π·Π΄Π΅Π»Π°.
    • Π’ CIFS Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° размСщСния Ρ€Π°Π·Π΄Π΅Π»Π° ΠΏΠΎΠ΄ΠΊΠ°Ρ‡ΠΊΠΈ Π² SMB3-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ…. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ POSIX-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π² readdir, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Π² спСцификации SMB3.1.1. ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ записи для страниц Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 64KB ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Ρ€Π΅ΠΆΠΈΠΌΠ° cache=strict ΠΈ использовании вСрсий ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° 2.1+.
    • Π€Π‘ EXT4 ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π° с bmap ΠΈ iopoll Π½Π° использованиС iomap.
    • Π’ F2FS Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сТатия Π΄Π°Π½Π½Ρ‹Ρ… с использованиСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° zstd. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для сТатия задСйствован Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ LZ4. Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ «chattr -c commit». ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ монтирования. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ioctl F2FS_IOC_GET_COMPRESS_BLOCKS для получСния свСдСний ΠΎ числС сТатых Π±Π»ΠΎΠΊΠΎΠ². Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ сТатии, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· statx.
    • Π’ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС Ceph Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ локального выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ создания ΠΈ удалСния (unlink) Ρ„Π°ΠΉΠ»Π° Π±Π΅Π· оТидания ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ сСрвСра (Ρ€Π°Π±ΠΎΡ‚Π° Π² асинхронном Ρ€Π΅ΠΆΠΈΠΌΠ΅). ИзмСнСниС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, позволяСт Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ rsync.
    • Π’ OVERLAYFS Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования virtiofs Π² качСствС Π€Π‘ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня.
    • ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Π½ ΠΊΠΎΠ΄ ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΏΡƒΡ‚Π΅ΠΉ Π² VFS, ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Π°Π½ ΠΊΠΎΠ΄ Ρ€Π°Π·Π±ΠΎΡ€Π° символичСских ссылок ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ ΠΎΠ±Ρ…ΠΎΠ΄ Ρ‚ΠΎΡ‡Π΅ΠΊ монтирования.
    • Π’ подсистСмС scsi Π½Π΅ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ZBC.
    • Π’ dm_writecache Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ постСпСнной очистки кСша Π½Π° основании ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° max_age, Π·Π°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ максимальноС врСмя ΠΆΠΈΠ·Π½ΠΈ Π±Π»ΠΎΠΊΠ°.
    • Π’ dm_integrity Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ «discard».
    • Π’ null_blk Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° подстановки ошибок для симуляции сбоСв ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ тСстирования.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ udev-ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ устройства.
  • БСтСвая подсистСма
    • Π’ Netfilter Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ измСнСния, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… списков сопоставлСния (nftables set), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… трСбуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° сочСтания подсСтСй, сСтСвых ΠΏΠΎΡ€Ρ‚ΠΎΠ², ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ MAC-адрСсов.
      ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ внСсСны Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ nft_set_pipapo (PIle PAcket POlicies), Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ Π·Π°Π΄Π°Ρ‡Ρƒ сопоставлСния содСрТимого ΠΏΠ°ΠΊΠ΅Ρ‚Π° с примСняСмыми Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ состояния ΠΏΠΎΠ»Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ IP ΠΈ сСтСвых ΠΏΠΎΡ€Ρ‚ΠΎΠ² (nft_set_rbtree ΠΈ nft_set_hash ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ сопоставлСниСм ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ² ΠΈ прямым ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ). ВСкторизированная ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ 256-разрядных инструкций AVX2 Π²Π΅Ρ€cия pipapo Π½Π° систСмС с процСссором AMD Epyc 7402 ΠΏΠΎΠΊΠ°Π·Π°Π»Π° прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° 420% ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π΅ 30 тысяч записСй, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… связки ΠΏΠΎΡ€Ρ‚-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ». ΠŸΡ€ΠΈΡ€ΠΎΡΡ‚ ΠΏΡ€ΠΈ сопоставлСнии связки ΠΈΠ· подсСти ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€Ρ‚Π° ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π΅ 1000 записСй составил 87% для IPv4 ΠΈ 128% для IPv6.

    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ bareudp, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² UDP-Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ L3-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ MPLS, IP ΠΈ NSH.
    • ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° интСграция ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² MPTCP (MultiPath TCP), Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TCP для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ TCP-соСдинСния с доставкой ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ нСскольким ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π·Π½Ρ‹Π΅ сСтСвыС интСрфСйсы, привязанныС ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ IP-адрСсам.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ускорСния инкапсуляции Ethernet-ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² 802.11 (Wi-Fi).
    • ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ устройства ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ пространства ΠΈΠΌΡ‘Π½ сСтСвой подсистСмы (network namespace) Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ обСспСчСна ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡ€Π°Π² доступа ΠΈ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π² sysfs.
    • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Ρ„Π»Π°Π³Π° SO_BINDTODEVICE ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€Π°Π² root.
    • ΠŸΡ€ΠΈΠ½ΡΡ‚Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΡ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ, пСрСводящих инструмСнтарий ethtool с ioctl() Π½Π° использованиС интСрфСйса netlink. Новый интСрфСйс ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок, позволяСт ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ увСдомлСния ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния, ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ядром ΠΈ пространством ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ сокращаСт число синхронизируСмых ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… списков.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ускоритСлСй для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ отслСТивания соСдинСний.
    • Π’ netfilter Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ…ΡƒΠΊ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ классификаторов исходящих ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (egress), дополнивший собой Ρ€Π°Π½Π΅Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΠΉ Ρ…ΡƒΠΊ для входящих ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (ingress).
  • Виртуализация ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° аппаратная рСализация Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ (Pointer Authentication), ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ спСциализированныС инструкции CPU ARM64 для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ROP) ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ Π½Π΅ пытаСтся Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π² памяти, Π° ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π² Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… кусками ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… инструкций, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΡ…ΡΡ инструкциСй Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° управлСния. Π—Π°Ρ‰ΠΈΡ‚Π° сводится ΠΊ использованию Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… подписСй для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ адрСсов Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ядра. Подпись хранится Π² Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π²Π΅Ρ€Ρ…Π½ΠΈΡ… Π±ΠΈΡ‚Π°Ρ… самого указатСля. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ созданиС ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… подписСй производится ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… инструкций CPU.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ области памяти ΠΎΡ‚ записи ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ систСмного Π²Ρ‹Π·ΠΎΠ²Π° userfaultfd(), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ page faults (ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ страницам памяти) Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ИдСя Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ userfaultfd() ΠΈ для отслСТивания Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ доступа ΠΊ страницам, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΌ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ записи, ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ записи (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² процСссС создания live-ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… процСссов, фиксации состояния ΠΏΡ€ΠΈ сбросС Π΄Π°ΠΌΠΏΠΎΠ² памяти Π½Π° диск, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ раздСляСмой памяти, отслСТивания ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² памяти). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ эквивалСнтна ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ mprotect() Π² связкС с ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ сигнала SIGSEGV, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ быстрСС.
    • Π’ SELinux объявлСн ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «checkreqprot», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ памяти ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» (допускал использованиС исполняСмых областСй памяти, нСзависимо ΠΎΡ‚ прСдписаний, Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ…). БимволичСским ссылкам kernfs Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ наслСдованиС контСкста Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ².
    • Π’ состав Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ KRSI, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ BPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ LSM-Ρ…ΡƒΠΊΠ°ΠΌ Π² ядрС. ИзмСнСниС позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ LSM-ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (Linux Security Module) Π² Ρ„ΠΎΡ€ΠΌΠ΅ BPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π°ΡƒΠ΄ΠΈΡ‚Π° ΠΈ ΠΌΠ°Π½Π΄Π°Ρ‚Π½ΠΎΠ³ΠΎ контроля доступа.
    • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° оптимизация ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ /dev/random Π·Π° счёт ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ CRNG вмСсто ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° инструкций RNG. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° getrandom ΠΈ /dev/random Π½Π° систСмах ARM64, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… инструкции RNG.
    • РСализация эллиптичСской ΠΊΡ€ΠΈΠ²ΠΎΠΉ Curve25519 Π·Π°ΠΌΠ΅Π½Π΅Π½Π° Π½Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ HACL, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ матСматичСскоС Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ надёТности.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ информирования ΠΎ свободных страницах памяти. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° гостСвыС систСмы ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ хост-систСмС свСдСния ΠΎ страницах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ страницы хост ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ.
    • Π’ vfio/pci Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° SR-IOV (Single-Root I/O Virtualization).
  • ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΈ систСмныС сСрвисы
    • C 80 Π΄ΠΎ 100 символов ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ строки Π² исходных тСкстах. ΠŸΡ€ΠΈ этом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ рСкомСндуСтся Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ Π² Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… 80 символов Π² строкС, Π½ΠΎ это Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ являСтся Тёстким Π»ΠΈΠΌΠΈΡ‚ΠΎΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠΌΠΈΡ‚Π° Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ строки Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ прСдупрСТдСния ΠΏΡ€ΠΈ сборкС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° checkpatch Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ «—strict’. ИзмСнСниС даст Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° манипуляции с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ свободно Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ сСбя ΠΏΡ€ΠΈ Π²Ρ‹Ρ€Π°Π²Π½ΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ излишнСС Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ строк, ΠΌΠ΅ΡˆΠ°ΡŽΡ‰Π΅Π΅ Π²ΠΎΡΠΏΡ€ΠΈΡΡ‚ΠΈΡŽ ΠΊΠΎΠ΄Π° ΠΈ поиску.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° смСшанного Ρ€Π΅ΠΆΠΈΠΌΠ° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ EFI, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π±Π΅Π· примСнСния спСциализированного Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ 64-разрядноС ядро ΠΈΠ· 32-разрядной ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ, выполняСмой Π½Π° 64-разрядном CPU.
    • Π’ΠΊΠ»ΡŽΡ‡Π΅Π½Π° систСма выявлСния ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ расщСплённых Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ («split lock«), Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ доступС ΠΊ Π½Π΅Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ Π² памяти ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠΉ инструкции Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‚ Π΄Π²Π΅ Π»ΠΈΠ½ΠΈΠΈ кСша CPU. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ приводят ΠΊ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ падСнию ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Π½Π° 1000 Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ атомарная опСрация с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ Π² ΠΎΠ΄Π½Ρƒ линию кСша). Π’ зависимости ΠΎΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° «split_lock_detect» ядро ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π° Π»Π΅Ρ‚Ρƒ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ прСдупрСТдСния ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сигнал SIGBUS ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅ΠΌΡƒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ.
    • Π’ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ Π·Π°Π΄Π°Ρ‡ обСспСчСно отслСТиваниС ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ (Thermal Pressure) ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡƒΡ‡Ρ‘Ρ‚ ΠΏΠ΅Ρ€Π΅Π³Ρ€Π΅Π²Π° ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡. ΠŸΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ статистикой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ (thermal governor) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ частоту CPU ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€Π΅Π²Π΅, Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Π·Π°Π΄Π°Ρ‡ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ сниТСниС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ мощности ΠΈΠ·-Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ урСзания частоты ΠΏΡ€ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ запуска Π·Π°Π΄Π°Ρ‡ (Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π» Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ частоты с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ, ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя принимая Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° основС Π·Π°Π²Ρ‹ΡˆΠ΅Π½Π½Ρ‹Ρ… прСдполоТСниях ΠΎ доступных Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсах).
    • Π’ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ Π·Π°Π΄Π°Ρ‡ задСйствованы ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ отслСТивания Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, нСзависимо ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ частоты Ρ€Π°Π±ΠΎΡ‚Ρ‹ CPU. ИзмСнСниС позволяСт Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ Π² условиях динамичСского измСнСния Π²ΠΎΠ»ΡŒΡ‚Π°ΠΆΠ° ΠΈ частоты CPU. НапримСр, Π·Π°Π΄Π°Ρ‡Π°, которая потрСбляла 1/3 рСсурсов CPU ΠΏΡ€ΠΈ частотС 1000 MHz, станСт ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ 2/3 рСсурсов ΠΏΡ€ΠΈ сниТСнии частоты Π΄ΠΎ 500 MHz, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ создавало Π»ΠΎΠΆΠ½ΠΎΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π° ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ (Ρ‚.Π΅. Π·Π°Π΄Π°Ρ‡ΠΈ для ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° казались Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° счёт сниТСния частоты, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΈΡŽ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π² schedutil cpufreq governor).
    • Π”Ρ€Π°ΠΉΠ²Π΅Ρ€ Intel P-state, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° Π²Ρ‹Π±ΠΎΡ€ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Ρ‘Π½ Π½Π° использованиС schedutil.
    • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования подсистСмы BPF ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ядра Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (PREEMPT_RT). Π Π°Π½Π΅Π΅ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ PREEMPT_RT ΠΏΡ€Π΅Π΄ΠΏΠΈΡΡ‹Π²Π°Π»ΠΎΡΡŒ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ BPF.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ BPF-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ — BPF_MODIFY_RETURN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒΡΡ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ядрС ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования систСмного Π²Ρ‹Π·ΠΎΠ²Π° clone3() для создания процСсса Π² cgroup, ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‰Π΅ΠΌΡΡ ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ cgroup, Ρ‡Ρ‚ΠΎ позволяСт Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ процСссу ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ограничСния ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ΠΈΠ½Π³ сразу послС пороТдСния Π½ΠΎΠ²ΠΎΠ³ΠΎ процСсса ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°. НапримСр, сСрвисный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ сСрвисы Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ cgroup, Π° Π½ΠΎΠ²Ρ‹Π΅ процСссы ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π² «Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅» cgroup ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ сразу остановлСны.
    • Π² Kbuild Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния «LLVM=1» для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π° инструмСнтарий Clang/LLVM ΠΏΡ€ΠΈ сборкС ядра. ΠŸΠΎΠ΄Π½ΡΡ‚Ρ‹ трСбования ΠΊ вСрсии binutils (2.23).
    • Π’ debugfs Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° сСкция /sys/kernel/debug/kunit/ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ тСстов kunit.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ядра pm_debug_messages (Π°Π½Π°Π»ΠΎΠ³/sys/power/pm_debug_messages), Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ систСмы управлСния ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ со спящим ΠΈ ΠΆΠ΄ΡƒΡ‰ΠΈΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ).
    • Π’ интСрфСйс асинхронного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° io_uring Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° splice() ΠΈ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Π±ΡƒΡ„Π΅Ρ€ΠΎΠ².
    • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ cgroup ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструмСнтария perf. Π Π°Π½Π΅Π΅ perf ΠΌΠΎΠ³ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ cgroup ΠΈ Π½Π΅ ΠΌΠΎΠ³ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ cgroup ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠ±Ρ€Π°Π·Π΅Ρ†. Π’Π΅ΠΏΠ΅Ρ€ΡŒ perf ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ свСдСния ΠΎ cgroup для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ cgroup ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ сортировку ΠΏΠΎ
      cgroup Π² ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°Ρ….

    • Π’ cgroupfs, псСвдо-Π€Π‘ для управлСния cgroups, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² (xattrs) ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π² пространствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
    • Π’ cgroup memory controller Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° рСкурсивной Π·Π°Ρ‰ΠΈΡ‚Ρ‹ значСния «memory.low», Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΡ‘ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, прСдоставлСнной участникам Π³Ρ€ΡƒΠΏΠΏΡ‹. ΠŸΡ€ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ cgroup с ΠΎΠΏΡ†ΠΈΠ΅ΠΉ «memory_recursiveprot» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «memory.low», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ установлСно для Π½ΠΈΠΆΠ½ΠΈΡ… ΡƒΠ·Π»ΠΎΠ², автоматичСски Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ для всСх Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΡƒΠ·Π»ΠΎΠ².
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Uacce (Unified/User-space-access-intended Accelerator Framework) для совмСстного использования Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… адрСсов (SVA, Shared Virtual Addressing) ΠΌΠ΅ΠΆΠ΄Ρƒ CPU ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹ΠΌΠΈ устройствами, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ускоритСлям ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ структурам Π΄Π°Π½Π½Ρ‹Ρ… Π² основном CPU.
  • АппаратныС Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹
    • Для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ARM Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ горячСго извлСчСния памяти.
    • Для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ RISC-V Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° горячСго ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ извлСчСния CPU (CPU hotplug). Для 32-разрядных RISC-V Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ eBPF JIT.
    • Π£Π±Ρ€Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования 32-разрядных ARM-систСм для запуска гостСвых ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ KVM.
    • Π£Π΄Π°Π»Π΅Π½Π° «Ρ„иктивная» рСализация NUMA для Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ s390, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ сцСнарии использования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
    • Для ARM64 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ AMU (Activity Monitors Unit), ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ Π² ARMv8.4 ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ счётчики ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для расчёта коэффициСнтов ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ†ΠΈΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ частоты Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅ Π·Π°Π΄Π°Ρ‡.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° устройств vDPA, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°Π½Π°Π» ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ спСцификациям virtio. vDPA-устройства ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ физичСски ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Ρ‚Π°ΠΊ ΠΈ эмулируСмыми ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ устройствами.
    • Π’ подсистСмС GPIO появилась новая ΠΊΠΎΠΌΠ°Π½Π΄Π° ioctl() для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π½Π°Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ процСсса ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния любой Π»ΠΈΠ½ΠΈΠΈ GPIO. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° gpio-watch.
    • Π’ DRM-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ i915 для Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚ Intel Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ‡ΠΈΠΏΠΎΠ² Tigerlake («Gen12») ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° управлСния подсвСткой OLED. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‡ΠΈΠΏΠΎΠ² Ice Lake, Elkhart Lake, Baytrail ΠΈ Haswell.
    • Π’ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ amdgpu Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΎΠΊ Π² Ρ‡ΠΈΠΏ USBC для ASIC. Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ‡ΠΈΠΏΠΎΠ² AMD Ryzen 4000 «Renoir». Появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° управлСния OLED-панСлями. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ состояния ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ Π² debugfs.
    • Π’ DRM-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ vmwgfx для систСм Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ VMware Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования OpenGL 4 Π² гостСвых систСмах (Ρ€Π°Π½Π½Π΅Π΅ поддСрТивался OpenGL 3.3).
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ DRM-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ tidss для дисплСйной систСмы ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ TI Keystone.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ для LCD-ΠΏΠ°Π½Π΅Π»Π΅ΠΉ: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.
    • Π’ систСму управлСния ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Intel Jasper Lake (JSL) Π½Π° Π±Π°Π·Π΅ Atom.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΡƒΡ‚Π±ΡƒΠΊΠ° Pinebook Pro Π½Π° Π±Π°Π·Π΅ Rockchip RK3399, ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π° Pine64 PineTab ΠΈ смартфона PinePhone Π½Π° Π±Π°Π·Π΅ Allwinner A64.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π½ΠΎΠ²Ρ‹Ρ… Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ΄Π΅ΠΊΠΎΠ² ΠΈ Ρ‡ΠΈΠΏΠΎΠ²:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.

    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ARM-ΠΏΠ»Π°Ρ‚ ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron «sl28», 11 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΠ»Π°Ρ‚Ρ‹ i.MX6 TechNexion Pico, Ρ‚Ρ€ΠΈ Π½ΠΎΠ²Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Toradex Colibri, Samsung S7710 Galaxy Xcover 2 Π½Π° Π±Π°Π·Π΅ ST-Ericsson u8500, DH Electronics DHCOM SoM ΠΈ PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru