hadicanim
Aktif Üye
Linux 6.12: Zamanlayıcı artık genişletilebilir ve EEVDF dönüşümü tamamlandı
18 veya 25 Kasım'da çıkması beklenen Linux 6.12, süreçlerin işlemciyi ne zaman ve ne kadar süreyle kullanacağını kontrol eden koda üç büyük değişiklik getiriyor. En çok beklenen, Sched_Ext olarak bilinen Genişletilebilir Zamanlayıcı Sınıfıdır; bu, süreç zamanlayıcının işlemci zamanını BPF programlarına tahsis ederken birçok kararı devretmesine olanak tanır. Bilgili kullanıcılar bunları kendileri yazabilir ve çekirdeğe yükleyerek zaman dağılımını Linux kaynak kodunu değiştirmeye gerek kalmadan ihtiyaçlarına göre uyarlayabilirler.
Reklamcılık
Çekirdek geliştiricileri ayrıca Linux 6.6 ile başlayan zaman dağıtım algoritmasındaki değişikliği de tamamladı; bu, süreç zamanlayıcının “Önce En Erken Uygun Sanal Son Tarih” (EEVDF) yöntemini kullandığı anlamına geliyor. Bu ince ayar, çoğunlukla kısa süreli uygulamaların gecikmesini azaltmayı mümkün kılar.
Üçüncü yenilik ise “SCHED_DEADLINE Sunucu Altyapısı”dır: Gerçek zamanlı süreçlerin olduğu sistemlerde, düşük öncelikli uygulamaların yeterli ilgiyi görmeye devam etmesinin daha iyi sağlanması amaçlanmaktadır. Bu özellik, Haziran ayında 37 yaşında vefat eden önemli ve saygın bir geliştiricinin yaptığı son büyük değişikliktir.
Genişletilebilir süreç zamanlayıcı
Genişletilebilir Zamanlayıcı Sınıfı büyük ölçüde Meta'daki geliştiriciler tarafından yönlendirildi: Şirketin kendisi, işlemci zamanının tahsisini devasa veri merkezlerinin ihtiyaçlarına daha iyi uyarlamak için zaten Sched_Ext'i kullanıyor. Bunu yapmak için geliştiriciler, çeşitli sunucu sınıflarının iş yükleri için BPF programları yazar; bunlar daha sonra çalışma zamanında çekirdeğe yüklenir ve çekirdek bunları BPF sanal makinesiyle çekirdek bağlamında yürütür. Bu tür BPF programları, normal uygulama programlarına göre daha az korumalı çalışır, ancak bazı güvenlik kısıtlamalarına tabidir; ancak sonuçta çekirdekle çok daha hızlı etkileşime girebilir ve işlediği verilere doğrudan erişebilirler. BPF programları halihazırda Linux ortamında çeşitli şekillerde kullanılmaktadır; örneğin sistem güvenlik mekanizmalarında, performans analizi veya ağ veri akışlarının yüksek performanslı kontrolü için.
Bazı geliştiriciler ve şirketler, daha büyük kullanıcı grupları için işlemci süresinin tahsisini optimize etmek amacıyla Sched_Ext programları üzerinde zaten çalışıyor – örneğin oyuncuların kaynak gerektiren oyunlarda kekemeliği önlemesi. Gelecekte bazı dağıtımların bu tür BPF programlarını içermesi ve oyunlar başlatıldığında bunları geçici olarak etkinleştirmesi beklenebilir. Çekirdek kodu gibi Sched_Ext programlarının GPLv2'ye veya uyumlu bir lisansa tabi olması gerektiğinden kaynak kodunu açıklamaları gerekir.
Sched_Ext tartışması
Muhtemelen yakında her türden Sched_Ext programı dolaşımda olacak. Uzantılar için bu tür arayüzlerde olağan olduğu gibi, bunlardan bazılarının muhtemelen zamanlayıcının C kodunda daha iyi ele alınabilecek süreç planlayıcıdaki sorunları ve işlevsel boşlukları aşması muhtemeldir. En kötü senaryoda bu, kullanıcılar için sorunlara neden olabilir; örneğin, oyun oynamak için iyi çalışmayan veya farklı hızlardaki CPU çekirdeklerine sahip işlemcilerin performansını optimize eden bir başkasıyla hiç çalışmayan bir Sched_Ext uzantısı kullanmak isterlerse.
Bunlar ve diğer pek çok husus nedeniyle, Linux'un işlemci zamanlayıcısının çeşitli geliştiricileri Sched_Ext'in dahil edilmesine karşı çıktılar – çoğu zaman çok açık bir şekilde. Aynı zamanda diğer taraf, diğer şeylerin yanı sıra, Sched_Ext'in yeni zamanlayıcı yöntemleriyle deneme yapmayı kolaylaştırdığını ve belki de normal zamanlayıcının daha da geliştirilmesini destekleyebileceğini savundu. Linus Torvalds'ın tutumu bir süre belirsiz kaldı. Uzun yıllar boyunca “çekirdeğin tüm uygulama alanlarını kapsayan yalnızca bir süreç zamanlayıcıya sahip olması gerektiği” yaklaşımının savunucusuydu – bu nedenle Con Kolivas ve diğer zamanlayıcılar gibi geliştiricilerin alternatif “Beyin Siktir Zamanlayıcısı” (BFS) bırakıldı Yıllardır piyasada olmasına rağmen bazı çevrelerde son derece popülerler.
Yaklaşık bir yıl önce Torvalds, yıllık Çekirdek Bakımı Zirvesi'ne Sched_Ext'in dahil edilmesi lehinde açıkça konuştu. Ama ilk başta bu olmadı. Birkaç ay önce, eğer herhangi bir anlaşmaya varılmazsa, onların eleştirilerine rağmen normal süreç planlayıcısının geliştiricilerini görmezden geleceğini ve Sched_Ext'i Linux 6.11'e entegre edeceğini ima etmişti. Daha sonra her iki taraf da birkaç ayrıntı üzerinde tekrar çalıştı, böylece herkes en azından her şeyi biraz daha iyi kabul edebilsin; Bu, 6.11 yerine 6.12 olduğu anlamına geliyordu.
Tartışmanın tamamı ve genel olarak Sched_Ext hakkında bazı arka plan bilgileri LWN.net'in “Genişletilebilir zamanlayıcı sınıfı” ve sched_ext için başka bir itme makalelerinde açıklanmaktadır. Sched_Ext yamalarına ilişkin ekteki mektupta, birleştirme işlemindeki açıklamada ve Sched_Ext teknik belgelerinde daha fazla bilgi sağlanmaktadır.
EEVDF yaklaşımına geçmek gecikmeleri azaltabilir
Tesadüfen, aynı zamanda, normal zamanlayıcının geliştiricileri, Linux 6.6 ile başlayan hesaplama süresi dağıtımına dönüşümü “Önce En Erken Uygun Sanal Son Tarih” (EEVDF) prosedürüyle tamamladılar ve geliştirdiler. Diğer şeylerin yanı sıra bu, hızlı tepki vermesi gereken ancak genellikle yalnızca kısa bir süre için çalıştırılan uygulamalar için avantajlar sağlar.
Çekirdek artık bu tür işlemleri daha sık gerçekleştirebiliyor ve ayrıca, halihazırda kullanılan zaman dilimini henüz tüketmemiş olsalar bile CPU'yu uygulamalardan uzaklaştırabiliyor. Şimdiye kadar çekirdek bunu yalnızca süreçleri gerçek zamanlı öncelik ile ele almak istediğinde yapıyordu. Ancak çekirdek bu yolu kendi başına seçmez, yalnızca daha kısa zaman dilimlerini açıkça kullanan işlemler için seçer. sched_setattr() Ve sched_attr::sched_runtime rica etmek. Sonuçta, daha sık yürütülürler, bu da gecikmeyi azaltır, ancak aynı zamanda daha kısadır, çünkü sonuçta adaletsizliği önlemek için aynı önceliğe sahip diğer işlemler kadar CPU zamanı elde ederler.
Bu uygulama değişikliğinin belgeleri, akıllı ASCII sanatı kullanılarak her şeyi daha ayrıntılı olarak açıklıyor; LWN.net, “EEVDF planlayıcısının tamamlanması” metninde daha kısa zaman dilimleriyle dönüşümler ve zaman dağılımı hakkında daha fazla ayrıntı sağlar. Zamanlayıcıdaki en büyük değişikliklerin birleştirme yorumu aynı zamanda bunları ve EEVDF'deki diğer iyileştirmeleri de kabaca özetlemektedir.
Gerçek zamanlı uygulamalarla rekabet durumu
Üçüncü büyük değişiklikten de birleştirme yorumunda bahsediliyor: SCHED_DEADLINE sunucu altyapısı. Gerçek zamanlı uygulamaları çalıştıran ve normal zamanlayıcının Son Tarih Planlama Sınıfını kullanarak bunların zaman tahsisini düzenleyen sistemler için tasarlanmıştır. Bu durumlarda, gerçek zamanlı uygulamaların işlemciyi büyük ölçüde tekeline alması daha önce mümkündü; bu da düzenli önceliklere sahip süreçlerin yalnızca yetersiz şekilde kullanıldığı anlamına geliyordu. “Gerçek zamanlı kısıtlama” adı verilen bir yaklaşımın bu tür şeyleri engellemesi gerekiyordu, ancak çoğu durumda oldukça zayıf çalıştı. Yeni altyapı konuya farklı yaklaşıyor ve standart konfigürasyonda normal süreçlerin işlemci süresinin en az yüzde beşini almasını sağlıyor. LWN.net'teki “Gerçek zamanlı kısıtlama değişimi olarak son tarih sunucuları” başlıklı makale, süreçle ilgili daha fazla bilgi sağlar.
Bu yeni altyapının arkasındaki itici güç Daniel Bristot de Oliveira'ydı. Haziran ayında 37 yaşında vefat ettiğinden bu onun Linux'a yaptığı son önemli katkıdır. Bristot, yıllardır Linux gerçek zamanlı alanında son derece kararlı ve saygın bir geliştirici olmuştur.
Merhum Daniel Bristot de Oliveira'nın portre fotoğrafı.
(Resim: bristot.me / Daniel Bristot de Oliveira)
Birkaç düzine geliştirici onu geçen hafta bir konferansta düzenlenen “Hayat Kutlaması”nda hatırladı. İki saatten kısa bir süre sonra ve birkaç metre uzakta Linus Torvalds, 20 yıllık özenli çalışmanın ardından Linux'un artık gerçek zamanlı yeteneklere sahip olmasını sağlayan çekme talebini aldı; bu, Bristot'ya da çok şey borçlu olan bir başarı.
(dmk)