ΠΠΈΠ½ΡΡ Π’ΠΎΡΠ²Π°Π»ΡΠ΄Ρ Π²ΡΡΠ°Π·ΠΈΠ» Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΡ ΠΏΡΠΈΠ½ΡΡΡ Π² ΡΠΎΡΡΠ°Π² ΡΠ΄ΡΠ° Linux 6.11, ΡΠ΅Π»ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ΅Π½ΡΡΠ±ΡΡ, ΠΏΠ°ΡΡΠ΅ΠΉ Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° «sched_ext» (SCX), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ eBPF Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² CPU, ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² CPU. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠ΄ΡΠ° Linux Π² Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ eBPF, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, Π±Π°ΠΉΡΠΊΠΎΠ΄ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅ΡΡΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ SCHED_EXT, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΡΡΠ°Π²Π»Π΅Π½ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΠ΄ΡΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ SCHED_IDLE ΠΈ SCHED_NORMAL, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π² BPF-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°Ρ , ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΊ SCHED_EXT, ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° Π·Π°Π΄Π°ΡΠΈ, ΡΠΆΠ΅ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠ½Π½ΡΠ΅ ΠΊ ΡΡΠ°ΡΠ½ΠΎΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡ Π·Π°Π΄Π°Ρ (SCHED_NORMAL), Π½ΠΎ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΠΊ SCHED_EXT ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½ΠΈΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ»ΠΈ ΠΊ SCHED_EXT Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ BPF-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, ΡΠΎ Π²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠ½Π½ΡΠ΅ Π² ΠΊΠ»Π°ΡΡ SCHED_EXT, Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° SCHED_NORMAL. Π Π°Π±ΠΎΡΠ° BPF-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Ρ ΡΠ°Π·Π±ΠΎΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ Π·Π°Π΄Π°Ρ, ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π° CPU (ΠΎΠ΄Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π½Π° ΡΠ΄ΡΠΎ CPU), ΠΈ Π²ΡΠ±ΠΎΡΠ° Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΡΡΡΡΡ CPU ΠΏΡΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΡΠ΄ΡΠ° CPU.
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ sched_ext ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Π·Π°Π΄Π°Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ², Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠΌΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ Π½Π° Π»Π΅ΡΡ Π² ΡΠ°Π±ΠΎΡΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°Ρ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ sched_ext ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ, ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠ΅Π½ΡΡΡΠΈΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ².
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠΆΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠΊΠΎΠ»ΠΎ Π΄Π΅ΡΡΡΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² Π½Π° Π±Π°Π·Π΅ sched_ext, Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Ρ Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π² ΡΠ΄ΡΠΎ Π² ΡΠΎΡΠΌΠ΅ BPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ:
- scx_layered — Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΠΉ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°Π΄Π°Ρ, ΡΠ°Π·Π΄Π΅Π»ΡΡΡΠΈΠΉ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΡΠ»ΠΎΠΈ, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ²ΠΎΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, scx_layered ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ»ΠΎΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡΡΡ CPU, ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Meta. Π Π°Π±ΠΎΡΠ°ΡΡΠ°Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ BPF Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Rust.
- scx_rustland — ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π·Π°Π΄Π°Ρ Π½Π° ΡΠΎΠ½Π΅ Π·Π°Π΄Π°Ρ, ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎ Π½Π°Π³ΡΡΠΆΠ°ΡΡΠΈΡ CPU. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΅ΡΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Terraria ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΡΠ΄ΡΠ° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ scx_rustland ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π΄ΠΎΠ±ΠΈΡΡΡΡ Π² ΠΈΠ³ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ FPS, ΡΠ΅ΠΌ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° EEVDF. ΠΡΠΎΠ΅ΠΊΡ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Canonical. Π Π°Π±ΠΎΡΠ°ΡΡΠ°Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ BPF Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Rust.
- scx_lavd — ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Ρ LAVD (Latency-criticality Aware Virtual Deadline), ΡΡΠΈΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Ρ ΠΎΠ΄Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΈ ΠΏΡΠΈΠ½ΡΡΠΈΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² CPU. ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ Igalia ΠΈ Valve Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΈΠ³ΡΠ°Ρ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π·Π°Π΄Π°ΡΠ°Ρ . Π Π°Π±ΠΎΡΠ°ΡΡΠ°Ρ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ BPF Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Rust.
- scx_rusty, scx_rlfifo, scx_mitosis — ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Rust, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ ΠΌΠ΅ΠΆΠ΄Ρ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ Π·Π°Π΄Π°Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ FIFO-ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π³ΡΡΠΏΠΏ Π·Π°Π΄Π°Ρ ΠΊ ΡΠ΄ΡΠ°ΠΌ CPU.
- scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland — ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² c ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ, ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ sched-ext.
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ sched_ext Π±ΡΠ» ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΄Π»Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠ΄ΡΠ° Π² 2022 Π³ΠΎΠ΄Ρ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π±ΡΠ»ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ ΡΠ΅ΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΉ ΠΏΠ°ΡΡΠ°. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠΎΡΡΠ°Π²Π΅ ΡΠ΄ΡΠ°, Π΄Π»Ρ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Ubuntu, Arch Linux, Fedora ΠΈ NixOS ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ sched_ext ΡΠ΅ΡΠ΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Canonical ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² sched-ext Π² ΡΠΎΡΡΠ°Π² Ubuntu 24.10, Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Valve ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°Π΄ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠ΅ΠΉ sched_ext Π² Steam Deck. Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Meta ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π° Π±Π°Π·Π΅ sched_ext ΡΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅.
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Google ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΡΠ΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ghOSt, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π·Π°Π΄Π°Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ BPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π°ΡΡ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ghOSt Π½Π° sched_ext. Google ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΡ sched_ext Π΄Π»Ρ ChromeOS Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° scx_layered Π΄Π»Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π΅ΡΠΆΠ΅ΠΊ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Oculus ΡΠ°Π·Π²ΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΡ sched_ext Π΄Π»Ρ Android.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru