Güzel çalışmak nasıl?


20

sched_setscheduler diyor:

Tüm zamanlama önleyici niteliktedir: daha yüksek statik önceliğe sahip bir işlem çalışmaya hazır hale gelirse, o anda çalışan işlem önlenir ve statik öncelik düzeyi için bekleme listesine geri döner.

iken setpriority diyor

Bu, sistemde daha yüksek bir öncelik yükü olduğunda çok düşük hoş değerlerin (+19) bir işleme gerçekten çok az CPU sağlamasına neden olur ve CPU'nun çoğunu gerektiren uygulamalara yüksek hoş değerler (-20) sağlar

Peki, hoş değeri değiştirmek programların yürütülmesini nasıl etkileyecek? RT çizelgelemesine benzer mi (daha yüksek nice değeri olan bir program daha düşük nice değeri olan programı kesintiye uğratacaktır)?


İnternetteki tüm bilgiler nasıl kullanılır niceve bir sürecin önceliğinin nasıl değiştirileceğidir. Hiçbir bağlantı farklı önceliklerle nasıl çalıştığını tam olarak açıklamaz. Kaynak kodunu bile bulamadım.

Yanıtlar:


24

Belirli bir işlemin aldığı işlemci süresinin oranı, işlem ile diğer çalıştırılabilir işlemler arasındaki güzelliğin göreceli farkı ile belirlenir.

Linux Tamamen Adil Zamanlayıcı (CFS) , güzelliğe göre bir ağırlık hesaplar . Ağırlık kabaca eşittir 1024 / (1.25 ^ nice_value). Hoş değer azaldıkça ağırlık katlanarak artar. İşlem için ayrılan zaman dilimi, işlemin ağırlığı ile tüm çalıştırılabilir işlemlerin toplam ağırlığına bölünmesiyle orantılıdır. CFS uygulaması devam ediyor kernel/sched/fair.c.

CFS'nin programlama süresi için hedef gecikmesi vardır . Daha küçük hedef gecikmeler daha iyi etkileşim sağlar, ancak hedef gecikme süresi azaldıkça, geçiş yükü artar ve böylece toplam verim düşer.

Örneğin, 20 milisaniyelik bir hedef gecikme süresi ve eşit güzelliğe sahip iki çalıştırılabilir süreç göz önüne alındığında, her iki işlem de diğer işlem lehine önceden harcanmadan önce her biri 10 milisaniye boyunca çalışacaktır. Eşit incelikte 10 süreç varsa, her biri 2 milisaniye boyunca çalışır.

Şimdi, biri 0 (varsayılan), diğeri 5, güzelliği olan iki işlemi düşünün. Karşılık gelen ağırlıklar arasındaki oransal fark kabaca 1/3'tür, yani daha yüksek öncelikli işlem yaklaşık 15 milisaniyelik bir zaman dilimi alır. düşük öncelikli süreç ise 5 milisaniyelik bir zaman dilimi alır.

Son olarak, sırasıyla 5 ve 10 nezaket değerlerine sahip iki işlemi düşünün. Bu durumda mutlak hoşluk daha büyük olmakla birlikte , hoşluk değerleri arasındaki göreceli farklılıklar, önceki örnekteki ile aynıdır ve özdeş bir zaman dilimi bölünmesi sağlar.


Sadece aradığım şey. Teşekkürler! Daha sonra , her şeyi ayrıntılı olarak açıklayan bu makaleyi buldum , ancak az önce yazdıklarınızı değil.
BЈовић

Anlamadığım bir şey var .. vruntime'ın rolü nedir?
Sonbaharda sörfçü

@Surferonthefall vruntime, tahsis edilen CPU zaman işlemlerinin çoğunu takip eden CFS dahili mekanizmasıdır. Bu soru, kullanıcı tarafından görülebilen hoş değerle ilgilidir. CFS internals hakkında bir sorunuz varsa ve başka bir yerde cevap bulamıyorsanız , yeni bir soru sorun
Thomas Nyman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.