Scheduler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Scheduler etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

24 Ocak 2021 Pazar

Linux Scheduler'ları

Giriş
Linux'ta bir sürü çeşit scheduler var. Bunlar bir arada da çalışabiliyor.

Realtime Scheduler'lar
Önceliği 1-99 arasında olan uygulamalar Realtime Scheduler'lardan birisi tarafından çalıştırılırlar
Bunlar şöyle
1. SCHED_FIFO
2. SCHED_RR

POSIX Açısından SCHED_FIFO Nedir - Time Quantum Kavramı Yok
Öncelik sırasına göre koşturuyor. POSIX'e göre bu uygulamaların önceliği 0 - 99 arasındadır. İşletim sistemleri daha farklı değerler kullanmışlar. Zaman dilimi (time quantum) kavramı yok. Uygulama bir şey üzerinde bloke oluncaya kadar koşuyor. Yani pre-emption yok.
A SCHED_FIFO process runs until either it is blocked by an I/O request, it is preempted by a higher priority process, or it calls sched_yield(2).
POSIX Açısından SCHED_RR Nedir - Time Quantum Kavramı Var
SCHED_FIFO'ya benziyor. Öncelik sırası yüksek olan herkesin önüne geçiyor. Ancak en önemli fark, bu tipte bir zaman dilimi kavramı varBurada şöyle bir cümleye denk geldim.
"SCHED_RR can be preempted by time slicing". 
Süresi biten uygulamadan sonra bir sonraki en yüksek önceliğe sahip uygulama koşturuluyor. Eğer herkes eşitse önceliğe sahipse round robin şeklinde seçim yapılıyor.

Normal Scheduler
Önceliği (priority) 0 olan uygulamalar Normal Scheduler tarafından çalıştırılırlar. Sadece 1 tane var
1. SCHED_NORMAL. Bunun POSIX'teki ismi SCHED_OTHER

POSIX Açısından SCHED_OTHER Nedir
Normal uygulamalar SCHED_OTHER seviyesinde koşarlar. POSIX'e göre bu uygulamaların önceliği 100 - 139 arasındadır. İşletim sistemleri daha farklı değerler kullanmışlar. 

nice komutu bu aralıktaki uygulamalar içindir. SCHED_OTHER dışında bir policy kullanmak için root olmak gerekir.

Linux Açısından SCHED_NORMAL Nedir?
Açıklaması şöyle
The scheduler implementing SCHED_NORMAL scheduling policy is Completely Fair Scheduler (or CFS) . It is a timeshare scheduler in the sense that all process it schedules get a time slice from a time quantum in round robin fashion. This is the scheduler that is used by default to schedule normal Linux processes.
POSIX Scheduler API'si
POSIX hem uygulama, hem de thread'ler için Scheduler API'si sağlıyor. Çünkü çoğu sistemde thread, aslında process gibi düşünülüyor.



28 Nisan 2020 Salı

Completely Fair Scheduler (CFS)

Giriş
Açıklaması şöyle
the Completely Fair Scheduler (CFS). Integrated into Linux 2.6.23., CFS performs the following duties:

- CFS ensures that the CPU is allocated equitably.
- If the CPU access time provided to different tasks isn’t balanced, CFS gives the shortchanged tasks the time they need to execute.
- CFS keeps track of the balance between tasks by maintaining CPU access times in the virtual runtime. The smaller a task’s virtual runtime, the greater its recognized CPU need.
- CFS uses “sleeper fairness” to make sure even tasks that aren’t currently running will still receive their fair share of CPU when required.
-CFS doesn’t directly use priorities.
CFS bu  işleri gerçekleştirmek için arka tarafta bir tane "Red Black Tree" kullanır. Açıklaması şöyle
CFS uses nanosecond granularity accounting and does not rely on any jiffies or other HZ detail. Thus the CFS scheduler has no notion of “timeslices” in the way the previous scheduler had, and has no heuristics whatsoever.