Çekirdek derlemesini hızlandırmak için bir dizi yama yayınlandı. Linux 50-80% üzerinde

Ünlü bir geliştirici olan Ingo Molnar Linux Çekirdek geliştiricileri ve CFS (Completely Fair Scheduler) görev zamanlayıcısının yazarı, bu konuyu çekirdek geliştiricilerinin posta listesinde tartışmaya açtı. Linux Çekirdek kaynak kodundaki dosyaların yarısından fazlasını etkileyen ve ayarlara bağlı olarak tam çekirdek yeniden derlemelerinin hızında %50-80'lik bir artış sağlayan bir dizi yama. Bu optimizasyon, çekirdek geliştirme tarihindeki en büyük değişiklik setini içermesi nedeniyle dikkat çekicidir: aynı anda dahil edilmesi önerilen 2297 yama, 25'den fazla dosyayı ( "include/" ve "arch/*/include/" dizinlerindeki 10 başlık dosyası ve 15 kaynak kod dosyası) değiştiriyor.

Performans artışı, başlık dosyalarının işlenmesi yönteminin değiştirilmesiyle elde edilir. Otuz yıldan fazla süren çekirdek geliştirme sürecinde, dosyalar arasında çok sayıda çapraz bağımlılığın varlığı nedeniyle başlık dosyalarının durumunun iç karartıcı bir görünüme büründüğü belirtilmektedir. Başlık dosyasının yeniden yapılandırılması bir yıldan fazla sürdü ve hiyerarşi ile bağımlılıkların önemli ölçüde yeniden işlenmesini gerektirdi. Yeniden yapılanma sırasında farklı çekirdek alt sistemleri için tür tanımlarının ve API'lerin ayrılmasına yönelik çalışmalar yapıldı.

Yapılan değişiklikler arasında: üst düzey başlık dosyalarının birbirinden ayrılması, başlık dosyalarını birbirine bağlayan satır içi işlevlerin ortadan kaldırılması, başlık dosyalarının türler ve API'ler için ayrılması, başlık dosyalarının ayrı bir şekilde birleştirilmesinin sağlanması (yaklaşık 80 dosyada derlemeyi engelleyen dolaylı bağımlılıklar vardı, diğer başlık dosyaları), “.h” ve “.c” dosyalarına otomatik bağımlılık eklenmesi, başlık dosyalarının adım adım optimizasyonu, “CONFIG_KALLSYMS_FAST=y” modunun kullanımı, C dosyalarının montaj blokları halinde seçici birleştirilmesi nesne dosyalarının sayısını azaltın.

Sonuç olarak, yapılan çalışma, ön işleme sonrası aşamada işlenen başlık dosyalarının boyutunun 1-2 kat azaltılmasını mümkün kıldı. Örneğin, optimizasyondan önce, "linux/gfp.h" başlık dosyasının kullanılması, 13543 kod satırının eklenmesine ve 303 bağımlı başlık dosyasının eklenmesine neden oldu ve optimizasyondan sonra boyut 181 satıra ve 26 bağımlı dosyaya düşürüldü. Veya başka bir örnek: “kernel/pid.c” dosyası yama olmadan ön işleme tabi tutulduğunda, çoğu pid.c'de kullanılmayan 94 bin satır kod dahil edilir. Başlık dosyalarının ayrılması, işlenen kod miktarının üç kat azaltılmasını sağlayarak işlenen satır sayısını 36 bine düşürdü.

Çekirdek, bir test sisteminde "make -j96 vmlinux" komutuyla tamamen yeniden oluşturulduğunda, yamaların uygulanması, v5.16-rc7 dalının yapım süresinin 231.34'ten 129.97 saniyeye (15.5'ten 27.7'ye) düştüğünü gösterdi. saat başına) ve aynı zamanda montajlar sırasında CPU çekirdeklerini kullanma verimliliğini de artırdı. Artımlı bir yapıyla, optimizasyonun etkisi daha da belirgindir - başlık dosyalarında değişiklik yaptıktan sonra çekirdeği yeniden oluşturma süresi önemli ölçüde azaldı (değiştirilen başlık dosyasına bağlı olarak %112'den %173'e). Optimizasyonlar şu anda yalnızca ARM64, MIPS, Sparc ve x86 (32 ve 64 bit) mimariler için mevcuttur.

Kaynak: opennet.ru

DDoS korumalı siteler, VPS VDS sunucuları için güvenilir hosting satın alın 🔥 DDoS korumalı, güvenilir VPS ve VDS sunucu barındırma hizmeti satın alın | ProHoster