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.



Hiç yorum yok:

Yorum Gönder