CLS β ΠΊΠ»Π°ΡΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ CPU, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΡΠ΄ΡΠΎΠΌ Linux.
ΠΡΠ°ΡΠΊΠΎ:
- ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ.
- ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π·
sched_setscheduler. - ΠΠ»ΠΈΡΠ΅Ρ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΡΡΠ΅ΡΠ½Π΅Π½ΠΈΡ, ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ:
SCHED_OTHER(CFS) β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Completely Fair Scheduler, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ CPU ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ Π²Π΅ΡΡ (Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡnice).SCHED_FIFOβ real-time Π±Π΅Π· ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΡΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π²ΡΡΠ΅ΡΠ½Π΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠ΅ΠΉ Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΌ RT-ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ.SCHED_RRβ real-time Ρ ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠ½Π°Π»ΠΎΠ³ FIFO, Π½ΠΎ Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ°ΠΉΠΌ-ΡΠ»Π°ΠΉΡΠΎΠΌ.SCHED_BATCHβ Π²Π°ΡΠΈΠ°Π½Ρ CFS Π΄Π»Ρ ΡΠΎΠ½ΠΎΠ²ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠ½ΠΈΠΆΠ΅Π½Π½ΡΠΌ Π²Π»ΠΈΡΠ½ΠΈΠ΅ΠΌ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ.SCHED_IDLEβ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ runnable-Π·Π°Π΄Π°Ρ.SCHED_DEADLINEβ Π΄Π΅Π΄Π»Π°ΠΉΠ½ΠΎΠ²ΡΠΉ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ runtime/period/deadline (Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ Π²top/htop).
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- Real-time ΠΊΠ»Π°ΡΡΡ (
FIFO,RR) Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ Π½Π°Π΄ CFS. - ΠΠ»Ρ CFS ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ
nice, Π΄Π»Ρ real-time βRTPRIO. - ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ starvation ΠΈΠ»ΠΈ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΡΡΠ°ΠΆΠ°Π΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΠ΅Ρ Π·Π° CPU, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° CPU-bound Π½Π°Π³ΡΡΠ·ΠΎΠΊ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ ΠΊ Π·Π°Π΄Π΅ΡΠΆΠΊΠ°ΠΌ.