20 puan yazan xguru 2024-11-19 | 2 yorum | WhatsApp'ta paylaş
  • BPF'nin (eBPF) gözlem yeteneklerinden yararlanarak sistem performansını sürekli otomatik olarak ayarlamak için tasarlanmış hafif bir araç

Çözmeyi hedeflediği sorunlar

  • Çok fazla ayarlama seçeneği: Linux çekirdeğinde ayarlanabilir 1600'den fazla sysctl parametresi bulunur. Farklı ortamlara uygun ayarları bulmak karmaşık ve zordur
  • Yönetici müdahalesinin azalması: Modern bulut sistemlerinde manuel ayarlamadan çok otomatik yönetim gerekir. Çoğu sistemde ilk kurulumdan sonra yöneticinin müdahalesi neredeyse hiç olmaz
  • Statik ayarların sınırları: Sistem ortamı sürekli değiştiği için sabit değerlerle ayarlama yapmak verimsiz olabilir

Temel tasarım ilkeleri

  • Minimum ek yük: Yüksek frekanslı olay izlemelerinden kaçınır, gözlem yeteneklerini yalnızca gerçekten gerektiğinde kullanır
  • Politika açıklığını netleştirme: Syslog'a "ne"yin "neden" değiştirildiğini kaydeder
  • Yönetici önceliği: Yönetici bir değeri ayarlarsa otomatik ayarlama işlevi devre dışı kalır
  • Yapılandırmasız yaklaşım: Ayrı bir yapılandırma olmadan otomatik ayarlama yapar. Mümkün olduğunca magic number kullanımından kaçınır
  • Dinamik uyarlama: TCP bellek kullanımı artarsa tampon boyutunu küçülterek sistem dengesini korur

Başlıca kavramlar

  • Tuner: Her tuner, BPF programında oluşan olayları işler ve ilgili ayarlanabilir öğeleri yönetir
  • Strateji (strategy): Bir tuner birden fazla stratejiye sahip olabilir ve her strateji, değerlendirme fonksiyonu üzerinden etkili olanı seçer
  • Olay (event): Tuner ID'si, senaryo ve ağ namespace bilgileri gibi verileri içerir; tuner bu bilgilere göre uygun işlemi yapar

Mimari

  • bpftune, bir daemon olarak çalışır ve birden fazla .so biçimindeki eklenti tuner'ı yükleyip yönetir
  • Her tuner benzersiz bir ID'ye sahiptir ve BPF ile kullanıcı alanında olayları işler
  • BPF bileşeni bpftune.bpf.h dosyasını içerir ve paylaşılan değişkenler ile map tanımlarını kullanır

Desteklenen tuner listesi

  • TCP connection tuner: Tıkanıklık kontrolü algoritmasını otomatik ayarlar
  • neighbour table tuner: Komşu tablosu boyutunu otomatik genişletir
  • route table tuner: Yönlendirme tablosu boyutunu otomatik genişletir
  • sysctl tuner: Ayarlanmış sysctl değeri manuel ayarla çakışırsa tuner'ı devre dışı bırakır
  • TCP buffer tuner: TCP tampon boyutunu otomatik ayarlar
  • net buffer tuner: Çekirdek ağ ile ilgili ayarları otomatik düzenler
  • netns tuner: Ağ namespace ekleme ve kaldırmayı algılar

2 yorum

 
xguru 2024-11-19

Hacker News yorumları

  • Sistem sorunlarını teşhis edip çözmenin daha zor hale gelebileceğine dair endişeler var
  • Sorun çıkma olasılığını açıklamada "geri besleme döngüsü" kavramı önemli
    • Bunun nedeni Linux çekirdeği, BPF ya da programın kendisi değil, çalışma biçimi
    • Risk olmayabilir, kontrol mekanizmaları bulunabilir ve bir sorun çıksa bile sistem kararlı bir duruma yakınsayabilir
  • Kontrol teorisi yazılım mühendisliğinde bir ölçüde yetersiz uygulanıyor
  • Bu aracı kullananların görüşlerini duymak isterim
    • Etkili olup olmadığını ve kurulum için harcanan zamana değip değmediğini merak ediyorum
  • bpftune, yapılandırma gerektirmeyen bir araç olarak tasarlanmış
    • Çok sayıda ayar öğrenmek gerekmemesi güzel; otomatik desteği memnuniyetle karşılıyorum
  • CachyOS üzerinde doğrudan kullanılabiliyor
    • Kurulumdan sonra CachyOS Hello -> Apps/Tweaks yolundan erişilebilir
  • Paylaşımlı k8s kümeleri gibi çok kiracılı ortamlarda ne kadar etkili olacağını merak ediyorum
    • Her uygulamanın farklı amaçları var ve zaman içinde düğümler arasında taşınıyor
    • Ancak büyük olasılıkla uygulamaların çoğu arasında benzerlikler de vardır
  • TCP arabellek boyutlarını ayarlamanın gerçekten değerli olup olmadığını merak ediyorum
  • Parametreleri en uygun değerlere ayarlamak bu kadar kolaysa, çekirdeğin baştan beri bunu neden yapmadığı sorusu akla geliyor
  • Basit paket filtrelemeden izleme ve gözleme kadar evrilmiş olması harika
    • Çoğu insanın bilmesi gereken mükemmel bir araç
    • Birkaç yıldır kullanıyorum