Linux eBPF'yi görev zamanlayıcıları oluşturmaya hazırlıyor

Linux

Estamos Linux 6.10'un kararlı sürümünün yayınlanmasından birkaç gün sonraOldukça ilginç bir dizi değişikliğin yanı sıra cihaz desteği, işlevler ve daha fazlası açısından büyük iyileştirmeler içerecek bir sürüm.

Bu yazının nedeni, Linux'un bir sonraki beklenen sürümü olan ve bahsettiğim bazı değişikliklerin duyurulduğu "Linux 6.11" sürümüne atıfta bulunmak olduğundan, zamanı gelince bu sürümden de bahsedeceğiz. Yeterince zamanımız varsa, onlara başka bir yazıda değinmeyi çok isterim.

Tamam şimdi makalenin asıl konusuna geçiyorum. Linus Torvalds tarafından yapılan bir duyuruya atıf Bazıları Linux 6.11 çekirdeğine dahil olma istekleri hakkında mekanizmayı uygulayan yamalar "sched_ext" (SCX).

Bu mekanizmaveya Linux çekirdeğinde CPU zamanlayıcıları oluşturmak için eBPF'yi kullanması amaçlanmıştır. İşte nasıl çalışacağına dair bir özet:

  • eBPF ve CPU Programcıları: eBPF kullanımıyla CPU zamanlayıcıları Linux çekirdeği içerisinde dinamik olarak yüklenebilir ve çalıştırılabilir. Tam Zamanında (JIT) derlemesi, eBPF bayt kodunu yürütme için makine talimatlarına dönüştürür.
  • SCHED_EXT sınıfı: Bu, çekirdek çağrı önceliği sınıflar arasında olan yeni bir programlama sınıfıdır. SCHED_IDLE ve SCHED_NORMAL. BPF sürücüleri bağlantılı SCHED_EXT normal zamanlayıcıya zaten eklenmiş olan görevleri etkilemeden, gerçek zamanlı yürütmeden daha düşük önceliğe sahip görevleri yerine getirebilir SCHED_NORMAL.
  • operasyon: BPF sürücüleri, CPU üzerinde yürütülmeyi bekleyen görev sıralarını analiz eder ve CPU çekirdeği serbest bırakıldığında hangi görevin atanacağını seçer. Aktif BPF sürücüsü yoksa SCHED_EXT, görevler zamanlayıcı kullanılarak gerçekleştirilir SCHED_NORMAL.
  • Faydaları: Mekanizması planlanan_ext Farklı programlama teknikleri ve stratejileriyle dinamik bir şekilde deneme yapmayı kolaylaştırır. Bu, programcıların işlevsel prototiplerini hızla oluşturmanıza ve bunları üretim ortamlarında anında değiştirmenize olanak tanır. Örneğin, bir uygulamanın belirli özelliklerine uyacak şekilde ayarlanabilir ve planlama stratejisini sistem durumuna ve diğer faktörlere göre değiştirebilir.

Bahsetmeye değer "sched_ext" ilk olarak 2022'de çekirdek geliştiricileri tarafından değerlendirilmek üzere önerildi, ardından altı yama revizyonunun yayınlanması geldi. Ana çekirdekte desteklenmemesine rağmen, Ubuntu, Arch Linux, Fedora ve NixOS gibi çeşitli dağıtımlar ek paketler aracılığıyla "sched_ext" kurulumunu sunar. Canonical aşağıdaki bileşenleri dahil etmeyi düşünüyor:planlanan_ext» Ubuntu 24.10'da ve Valve, Steam Deck entegrasyonu üzerinde çalışıyor. Meta'da programcı "planlanan_ext» Üretim altyapısında halihazırda kullanılıyor.

Ayrıca şu anda yaklaşık bir düzine programcının "planlanmış_ext", her biri kullanıcı alanında tanımlanan ve BPF programları kullanılarak çekirdeğe yüklenen görev planlama mantığına sahiptir.

  1. scx_katmanlı: Görevleri her biri kendi planlama stratejisine sahip katmanlara bölen hibrit bir zamanlayıcı. Garantili CPU kaynaklarıyla belirli görevleri belirli katmanlara atamanıza veya bireysel uygulamaların önceliğini artırmanıza olanak tanır. Meta tarafından geliştirilen kullanıcı alanı mantığı Rust'ta yazılmıştır.
  2. scx_rustland: Yoğun CPU kullananlar yerine etkileşimli görevlere öncelik vermek için optimize edilmiştir. Örneğin, standart EEVDF zamanlayıcıya kıyasla eşzamanlı çekirdek derlemesi sırasında Terraria oyununda FPS'yi artırır. Bir Canonical çalışanı tarafından Rust mantığıyla geliştirildi.
  3. scx_lavd: LAVD (Gecikme-kritiklik Farkında Sanal Son Tarih) algoritmasını uygulayarak, gecikmeleri ve süreç ilerlemesini azaltmanın uygunluğunu göz önünde bulundurarak bilgisayar oyunlarında ve etkileşimli görevlerde gecikmeyi azaltır. Igalia ve Valve tarafından Rust mantığıyla geliştirildi.
  4. scx_rusty, scx_rlfifo, scx_mitosis: Görev gruplarını yüke göre dengeleyen, basit bir FIFO zamanlayıcı uygulayan ve görev gruplarını CPU çekirdeklerine bağlayan zamanlayıcılar. Hepsi Rust bileşenleriyle birlikte.
  5. scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, scx_userland: “sched_ext”in çeşitli yeteneklerini gösteren, C bileşenlerine sahip programcı örnekleri.

Son olarak, Google'ın, BPF programlarını kullanarak görev zamanlayıcı kararlarını etkilemek için kendi çerçevesi olan ghOSt'u kullanmayı denediğini ve ghOSt'u sched_ext'e taşımaya başladığını eklemekte fayda var. Ayrıca Google, ChromeOS için bir "sched_ext" bağlantı noktası geliştiriyor.

kaynak: https://lkml.org


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.