Yeni çoklu görev özelliğine sahip Linux 6.13

Yedi sürüm adayının ardından tam zamanında, yeni Linux Çekirdeği 6.13 Pazartesi'den Pazartesi'ye çıktı. Önceki çekirdeğe de akması gereken kritik yamaları absorbe etmek heyecan vericiydi.

Duyuru

Büyük bir şantiye, zamanlayıcıdaki yeni dosyadır. Çoklu görev modları hareket eder ve dörtten üçe düşer. PowerPC alanında bu, veda etmek anlamına gelir.

Linux gibi her modern işletim sistemi çekirdeği artık “metro öncesi çoklu görev”e güveniyor. “Premitive”, “nazik” veya “sözünü kesmeye” benzer bir şey anlamına gelir. Programların paralel çalıştığı yanılsamasını yaratmak için işlemlere (veya iş parçacıklarına) zaman dilimleri verilir. Günümüzde işlemci veya çekirdeği üzerinde çalışıyorlar. Çekirdek, zaman aralığını aştıktan sonra mevcut sürecin koşullarını korur, başka bir sürecin güvenli durumunu üretir ve onu eylemlerine başlatır. Bu süreç bağlam değişikliğidir.

Şu ana kadar Linux çekirdeğinde önleme için dört seçilebilir mod bulunuyordu. En basit biçim olarak PREEMT_NONE. Diğer prosesin zaman dilimi dolmuşsa bir sonraki prosese ve onun zamanlayıcısına geçmenizi sağlar. PREmpt_Voluntary, süresi henüz dolmamış olsa bile, çekirdeğin önceden tanımlanmış çeşitli alanlarındaki mevcut süreci kesintiye uğratabilir.

PREMT_FULL bir adım daha ileri gidiyor. Bir işlemi istediğiniz zaman durdurmanıza olanak tanır. Yalnızca çekirdeğin buna açıkça izin vermediği yerler. Bu, örneğin işlem veya iş parçacığının bir döndürme kilidi içermesi durumunda geçerlidir. Döndürme kilidi, farklı işlemlerdeki kaynaklara eşzamanlı erişimi önleyen bir bloktur. Döndürme kilidi yalnızca karşılıklı dışlamadaki bir işlemle sağlanabilir. Diğerleri onun döner kilidi almasını ve böylece kaynağı serbest bırakmasını beklemek zorundadır.

Sonuçta PREEMT_RT, süreç değişikliğini fiili operasyon açısından diğer birçok kritere bağlar. PREMT_RT ile, bir spinlock içeriyorsa bir işlemi sonlandırmak da mümkündür.

preempt_none'dan preempt_rt'ye kadar sistemin yanıt verme yeteneği artar. Sistem olaylara daha hızlı tepki verebilir. Böyle bir olay klavyedeki bir tuşa basılması, bir fare hareketi veya bir kesinti olabilir. Bu hızlı tepki, süreçlerin, özellikle uzun vadeli olanların “kesilmesiyle” satın alınır.

Yoğun işlemci yükü gerektiren görevlerin uzun süre kesintisiz olarak çalışabilmesi gerekir. Bunlar parçalanırsa sistemin verimi düşer. Ayrıca, yeni engellenen kaynaklarla ilgili bir önleme modu oluşur. Basitçe ifade etmek gerekirse, sürecin her askıya alınmasında sürecin çözülmesi gerekir. Kısa koşucular ise daha az kırılırlar. Kısa bir süre koşuyorsanız, zamanı “kesmek” için daha az seçenek sunun.

Bu nedenle, kadın öncesi çoklu görev için evrensel olarak uygun bir model yoktur. İş yüküne, yani bir görevin zaman ve kaynak gereksinimine bağlı olarak çekirdekteki modlardan biri veya diğeri daha uygundur. Bu nedenle çoğu dağıtım, çekirdeği sözde preempt_dynamic moduyla gönderir. Bunun arkasında, preempt_rt hariç, başlangıç ​​sırasında tüm modlar arasında geçiş yapma yeteneğinden başka bir şey yoktur. PREMT_VOLUTARY önceden ayarlanmıştır.

Linux'unuzda şu anda hangi modun etkin olduğunu görmek istiyorsanız, çekirdeğinize ve yapılandırmanıza bağlı olarak bunu /sys/kernel/debug/sched/preempt adresinden okuyabilirsiniz. Basit bir cat Mod, sözde dosyaya mod sağlar. Preempt_dynamic açıksa, bu durum “yok (isteğe bağlı) tam” sürümle sonuçlanır ve geçerli mod parantez içinde vurgulanır. Bu nedenle önyükleme modu parametreyle de kullanılabilir. preempt Çekirdek komut satırına (CMDLINE) yerleştirin. Örneğin preempt_full için preempt=full.

Önleme moduna bağlı olarak çekirdekte, süreler dolmadan bağlam değişikliğinin gerçekleşebileceği birçok yer vardır. Orada çekirdek, mevcut sürecin sonlandırılıp sonlandırılmayacağını kontrol etmek için birçok değişken kullanır. Bu, her seferinde süreci kesintiye uğratır ve ek yük oluşturur. Bu pek verimli değil.

Yeni çekirdekle birlikte yeni bir mod eklendi. “Lazy Preempt” (preempt_lazy), bir işlemin kesintiye uğraması durumunda bağlam değiştirmeyi geciktirir, ancak bu acilen gerekli değildir. Bağlamı hemen değiştirmek yerine, değişiklik ekonomik bir zamana ulaşılıncaya kadar ertelenir. Bu an, kritik bir bölümün sonu veya kullanıcı alanından çekirdek alanına bir sonraki değişiklik olabilir. Çekirdek yalnızca kritik anlarda süreci anında durdurur.

Bu yeni mod, preempt_none ve preempt_yolunary modlarının bir karışımıdır ve her iki modun da yerini alır. PREEMT_FULL, preempt_rt gibi korunur.

Zamanlayıcı aynı zamanda son dakikada gönderilen EEVDF zamanlayıcı için de kritik bir yamadır. Burada varlık değiştirme hatası bazı durumlarda planlama gecikmelerine neden oldu.

Linus Torvalds bu kritik yamayı Pazar günü yeni çekirdeğe aldı. Yani son tetikleyiciye geçiyoruz. Ayrıca bu yamanın da geçen yılın çekirdeği (backport) ile birlikte taşınması ve dolayısıyla ona dahil edilmesi gerekiyor.

Bazı uygulamalarda senkronizasyon ve değişiklikleri izlemek için zaman damgaları o kadar önemlidir ki, normal çözünürlük yeterli değildir. Böyle bir durum, örneğin bir önbelleğin hala geçerli olup olmadığını zaman damgası aracılığıyla tanıyan NFSV3'tür. Zaman çok büyük aralıklarla nicelendirildiğinde, istemci eski bir dosya standıyla çalışabilir. Tutarsızlıklar kaçınılmazdır.

Öte yandan, ince taneli zamanlar, dosya sistemindeki meta verilerin çok daha sık güncellenmesi gerektiği gerçeğine yol açmaktadır. Örneğin, zamanlar yalnızca saniyede bir kaydediliyorsa sistem meta verileri her saniyede yeniden yazar. Zamanlar milisaniye düzeyinde kaydediliyorsa, sistemin aşırı durumlarda meta verileri saniyede bin kez güncellemesi gerekir.

Linux 6.13 bu ince ayrıntılı zamanları akıllı bir şekilde tanıtıyor. Milisaniye cinsinden normal zaman damgaları korunur ve kullanılır. Sistem tarafından kullanılan ve güncellenen daha ince damgalar, yalnızca bir uygulamanın bunları açıkça talep etmesi durumunda kullanılır. Çekirdek daha sonra performans (zaman damgalarıyla “ölü” değil) ile özel zaman cezası uygulamaları gerekliliği arasındaki dengeyi oluşturur.

XFS, EXT4 doğrudan G/Ç ve bazı yumuşak baskın modları için Linux artık Atomic Writes'ı desteklemektedir. Veri depolamanın donanım tarafındaki sektör boyutundan daha büyük veri yazılacaksa bunlara ihtiyaç vardır. Böylece farklı sektörler bir yazma sürecinde mantıksal olarak tutarlı bir alan olarak anlaşılabilir. “Atomik yazı” tüm sektörleri tek bir yazma işleminde yazdı veya hiç yazmadı.

Linux konukları Güvenli Sanal Makinelerde (VM) ARM64 üzerinde çalışabilir. Bu amaçla Linux, “Arm Gizli Bilgi İşlem Mimarisi”ni (CCA) uygular. Bu, VM'nin hipervizörün gözünden gizlenmiş bellek alanı olarak kalır.

Linux 6.13 ayrıca kullanıcı alanında “korunan kontrol yığınını” da destekler. Bu kol gölge yığını çeşididir.

Linux 6.13, çekirdeği Balast'tan kurtarmak için eski özellikleri de kırmızı kalemle çiziyor. Bu sefer PowerPC 970FX'i vuracak. Birçoğu hala “Apple konuşmasında” PowerPC G5 olarak biliniyor. Ancak artık rahat bir nefes almanın zamanı geldi, G5'li eski Mac'ler hala destekleniyor.

970fx'li “Maple” değerlendirme kartları çekirdek çıkarma işleminden etkilenir. Bunların dışında IBM JS20/JS21 blade'leri de commit mesajı doğrultusunda etkilenmektedir. Bu PowerPC blade'lerinin orta ve uzun vadede Linux altında bir geleceği yoktur. Aynı şekilde, o zamanlar “Yellow Dog Linux”a hayat veren YDL Powerstation'lar da öyle.

Ancak Linux diyarında görünüşte bağlı olan bağlantı noktası küçük bir boşluk olarak kalıyor. Taahhüt ölçümüne göre, etkilenen kullanıcıların şeması çekirdek ekibinden ayrılırsa değişiklikler reddedilebilir.

Zamanlayıcı'daki kadınlar öncesi çoklu görevlere yönelik tembel mod, daha fazla verimlilik ve yanıt verme ile süreç kesintileri arasında daha iyi bir denge vaat ediyor. Zamanlayıcıdaki son dakika yaması kritik önem taşıyor ve eski çekirdeğe de çıkacağı söyleniyor. Bazı dağıtımların üzerine inşa edileceği, uzun vadeli desteğe sahip mevcut 6.12 çekirdeği de dahil. Zaman baskısı nedeniyle bu yama ne yazık ki sadece doğada zaman baskısı nedeniyle yapılıyor.

Değerli ayrıntılı zamanlama nihayet çekirdeğe ulaştı. Sonuçta, zaten Linux 6.6 için tasarlanmışlardı, ancak üçüncü sürüm adayı 6.6-RC3'te tekrar uçtular. Atomik yazma süreçleri de uzun süredir bekleniyordu, 6.13 tutarlı bir şekilde teslim edildi.

Linux 6.13 yalnızca yeni sürücüler ve hata düzeltmeleri getirmiyor. Bu sadece bir bakım sürümü değil, sağlam bir gelişmedir. Umarım son dakikada bantlanan yamalar çorbayı tuzlandırmaz.

Her zaman olduğu gibi, yeni çekirdek kaynak metinde indirilmeye hazır. Ayrıntılı Değişiklik Günlüğü, yeni Linux çekirdeğindeki tüm değişiklikler hakkında bilgi sağlar.


(DMK)


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir