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 Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ ΠΈ настройки сСрвисов с трСбованиями ΠΊ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌ.