ΠΠΎΡΠ»Π΅ Π΄Π²ΡΡ
ΠΌΠ΅ΡΡΡΠ΅Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΠΈΠ½ΡΡ Π’ΠΎΡΠ²Π°Π»ΡΠ΄Ρ
Π Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΈΠ½ΡΡΠΎ 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-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±Π»ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ° exFAT,
- Π‘Π΅ΡΠ΅Π²Π°Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°
- Π 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).
- Π Netfilter Π²ΠΊΠ»ΡΡΠ΅Π½Ρ
- ΠΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ (
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.
- C 80 Π΄ΠΎ 100 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
- ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ
- ΠΠ»Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ 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