Geçen yıl blogumuzda, TikTok'un yaratıcısı ByteDance'in Parker (PARTitioned KERnel) adlı bir yardımcı programı için yaptığı bir öneriyi ele almıştık. Bu deneysel teknoloji , birden fazla Linux çekirdeğinin aynı anda çalışmasına olanak tanıyor. Ve şimdi, bir buçuk yıldan biraz fazla bir süre sonra, projenin yeni bir kamuya açık yardımcı programı olan "Multikernel Linux (mklinux-v7.0-mk2)" yayınlandı.
Bu gelişme, tek bir fiziksel sunucu içinde birden fazla bağımsız çekirdek örneğinin eş zamanlı olarak çalıştırılmasını sağlayan özel bir Linux çekirdeği varyantı sunmaktadır . Doğrudan donanım üzerinde çalışarak, bu teknoloji hipervizörlere veya sanallaştırma katmanlarına olan ihtiyacı tamamen ortadan kaldırır ve her bir örneğe tahsis edilmiş belleğe, CPU'ya ve cihazlara doğrudan erişim sağlar.
Yeni yayınlanan Linux 7.0 çekirdeğine dayanan proje , CONFIG_MULTIKERNEL yapılandırma parametresi aracılığıyla bu özelliği etkinleştirmeye olanak tanır . Bu seçenek devre dışı bırakılırsa, ortaya çıkan çekirdek tamamen aynıdır ve standart Linux 7.0 gibi davranır. Şu anda, bu ilk sürüm (v7.0-mk2) yalnızca x86_64 mimarilerini desteklemektedir ve geleneksel sanallaştırma ile konteyner izolasyonu arasındaki performans ve güvenlik açığını kapatmak için tasarlanmıştır.
Performans kaybı olmaksızın izolasyon
Sanallaştırmanın en büyük sorunu, hipervizörlerin getirdiği performans "bedeli"dir . Buna karşılık, çok çekirdekli Linux, sanal makine çıkış geçişlerini , ikinci seviye bellek çevirisini ve aygıt modellerinin oluşturduğu ek yükü ortadan kaldırır.
Xeon Gold 5418Y işlemciler (Sapphire Rapids) üzerinde yapılan testlerden sonra yayınlanan performans verilerine göre , çok çekirdekli sistem, KVM konuklarına kıyasla yürütme hızında önemli bir artış göstermektedir. Örneğin, işlemler arasında bağlam değiştirme 2,5 kat daha hızlıdır, boru gecikmesi yarıdan fazla (2,18 kat) azalmıştır ve okuma ve yazma işlemleri gibi temel sistem çağrıları yanıt süresinde %25'ten fazla bir iyileşme sağlamıştır.
Geleneksel Docker konteynerlerine kıyasla , Multikernel üstün koruma sunar çünkü konteynerler aynı ana bilgisayar çekirdeğini paylaştığından, çekirdek düzeyindeki bir güvenlik açığı, panik veya dahili kilitlenme doygunluğu tüm kiracıları etkiler. Multikernel ekosisteminde, her ortamın kendi bağımsız çekirdeği vardır ; yani, bir örnek kritik bir arıza yaşarsa, diğerleri etkilenmeden çalışmaya devam eder ve bu da web sunucularından yoğun yapay zeka eğitim iş yüklerine (makine öğrenimi) kadar her şeyi aynı donanım üzerinde çalıştırmak için ideal, izole bir ortam sağlar.
Kerf ile Dinamik Atama ve Orkestrasyon
Çok çekirdekli Linux , geniş bir kaynak havuzunu (CPU'lar, RAM ve PCI aygıtları) yöneten bir ana çekirdek kullanarak çalışır . Mevcut aygıt ağacı yapısını ( /sys/fs/multikernel/ adresinden erişilebilir) kullanarak, çekirdek bu havuzu böler ve yerel kexec_file_load() alt sistemi aracılığıyla "alt çekirdekler" başlatır. Linux'un hotplug yetenekleri sayesinde, bu kaynaklar sunucu yeniden başlatılmasına gerek kalmadan örnekler arasında dinamik olarak taşınabilir ve böylece öngörülebilir ve gerçek zamanlı olarak ayarlanabilir performans sağlanır.
Bu ekosistemi yönetmek için geliştiriciler Kerf komut satırı aracını kullanıma sundular . Bu yardımcı program, tamamlayıcı açık kaynak modüllerine dayanarak örneklerin tüm yaşam döngüsünü yönetir . Bunlardan biri, ön önyükleme yapılandırması gerektirmeden çalışma zamanında bitişik fiziksel bellek tahsis eden Lazy CMA'dır.
Diğer temel unsur ise, örneklerin dosya sistemlerini doğrudan bellekte paylaşmasına olanak tanıyan bir modül olan DAXFS'dir ; bu sayede Kerf, öykünme katmanlarına ihtiyaç duymadan ve veri kopyalamadan ağ bağlantısı için bellek içi tanımlayıcılar kullanarak, bir Docker konteyner görüntüsünün içinde doğrudan bir alt çekirdeği başlatabilir ve dosya sisteminden yararlanabilir.
Şunu da belirtmekte fayda var ki, bu ilk sürüm, 5 seviyeli sayfalama mimarileri ve aktif KASLR altında yoğun kararlılık testlerinden geçmiştir ve bir alt çekirdek çöktüğünde bile kaynak kurtarmanın tamamen güvenli olduğunu göstermiştir.
Sistem kilitlenmeleri nedeniyle çakışan iş yüklerinin (örneğin aynı önbellek üzerinde çok sayıda unlink veya rename işlemi) fiziksel işlemci soketleriyle hizalanmış ayrı çekirdeklere bölünmesine izin vererek, Multikernel Linux, tek bir monolitik çekirdeğin dayattığı performans bariyerinin ötesine geçme yeteneğini göstererek sunucu konsolidasyonu ve yüksek performanslı bulut bilişiminde yeni bir çağ açıyor.
Son olarak, daha fazla bilgi edinmek isterseniz, ayrıntıları aşağıdaki bağlantıda bulabilirsiniz.