· kaynak dev.to (home feed)
Nusku: Zig ile Yazılmış, eBPF Tabanlı Bir Linux Sürekli Profilleyici
Bir geliştirici, fonksiyon başına CPU, bellek tahsisi ve off-CPU davranışını canlı olarak göstermek için eBPF kullanan, Zig ile yazılmış Nusku adlı sürekli profilleyiciyi geliştirmeye başladı.

Bir geliştirici, Zig ile yazılmış ve düşük seviyeli gözlemi eBPF üzerinden yapan, Linux için sürekli profilleme sistemi Nusku üzerinde çalışmaya başladı. 4 Ekim 2026'da dev.to'da yayınlanan bir geliştirici günlüğünde yazar, projeyi tek bir hedef etrafında konumlandırıyor: Uygulamanın yavaş olup olmadığına cevap vermek değil, davranış gerçekleşirken canlı olarak gözlemlenen spesifik nedeni ortaya koymak.
Neyi göstermek için tasarlandı
Yazıya göre Nusku'yu çalışan bir sürece yönlendiriyor — ya da bir süreci onun üzerinden başlatıyor — ve o sürecin normal kullanım sırasında gerçekte neye mal olduğunu gözlemliyorsunuz. Hedeflenen özellik seti şunları kapsıyor:
- Canlı olarak güncellenen, fonksiyon başına CPU süresi
- Tahsis anında gösterilen bellek; tek bir yukarı doğru artan rakam yerine, neyin istediği ve nereden geldiği dahil
- Boşta görünen ama aslında bir kilit, disk okuması ya da başka bir süreç üzerinde bekleyen thread'ler ve ne kadar bekledikleri
- Tipik bir CPU grafiğinin hiç ortaya çıkarmadığı, sessizce milisaniyeler yutan syscall'ler
- Kodun suçu nedeniyle değil, paketlerin yeniden iletildiği için yavaş olan ağ çağrıları
Araç, yapılandırılacak hiçbir şey olmadan yerel olarak ya da uzak bir makinede çalışacak şekilde tasarlandı; aynı canlı görüntüyü güvenli bir bağlantı üzerinden geri aktararak bir sunucunun, dizüstü bilgisayardaki bir süreç gibi incelenebilmesini sağlayacak.
Neden eBPF, neden Zig
Yazarın eBPF gerekçesi, ciddi her Linux profilleme aracının temelini oluşturması: yazıda Parca, Pyroscope, Cilium ve Datadog'un sürekli profilleyicisi örnek veriliyor; /proc altındaki dosyaları yoklayıp iyi bir sonuç ummak yerine. eBPF, hedefi değiştirmeden ve kullanıcı alanında bir yoklama döngüsünün getireceği ek yük olmadan bir sürecin çekirdek seviyesinde görünürlüğünü sağlıyor. Nusku'da bu, sonradan eklenen bir katkı değil, temel.
Zig ise iki şeye indirgeniyor. Pratik açıdan, performans ölçümünü bozan bir garbage collector yok ve yazarın bellek ile tahsis üzerinde tam kontrolü var — aracın tüm amacı başka programlardaki bellek ve tahsisi ölçmek olduğundan bu önemli. Kişisel açıdan yazar, basitçe ustalaşmak istediği dilin Zig olduğunu ve Nusku'nun kısmen sistem programlamayı düzgünce öğrenmek için bir araç olduğunu söylüyor.
Önce Agent, gerisi sonra
Nusku, her birinin tek bir işi olan ve tek tek inşa edilip yayınlanacak bileşenlere ayrılmış. Agent bir sürecin yanında duruyor ve asıl izlemeyi eBPF aracılığıyla yapıyor. Doğru veri her şeyin ön koşulu olduğu gerekçesiyle önce o inşa ediliyor. Controller — birden fazla süreç ya da uzak makine devreye girdiğinde kullanıcının asıl konuşacağı parça — nelerin çalıştığını listeleyecek, hedef seçmenizi sağlayacak ve oturumları yönetecek. Daha fazla bileşen henüz karara bağlanmadı. Her parça, bir sonrakine başlanmadan tamamen çalışmak zorunda; bu da, yazıya göre, şu an için yalnızca Agent demek.
Teslim tarihi olmayan, açık şekilde belgelenen bir proje
Yazı kapsam ve motivasyon konusunda açık sözlü. Teslim tarihi yok ve para kazandırma planı da yok. Yazar yaklaşımı derinlik öncelikli olarak tanımlıyor; kestirme yollar yerine ders kitapları ve Linux çekirdek dokümantasyonundan çalışıyor ve inşa sürerken ara, halen geliştirilmekte olan durumu herkese açık bir geliştirici günlüğünde yazıyor. Motivasyon, her ödevin aynı döngüyü tekrarladığı üniversitedeki bir performans dersine — profille, yavaş noktayı bul, düzelt, sonra teyit için yeniden ölç — ve daha sonra aynı gözlemlenebilirlik boşluğunun farklı bir açıdan ortaya çıktığı altyapı çevresinde geçirdiği zamana dayanıyor.
Neden önemli
Sürekli profilleme eBPF çevresinde yoğunlaştı; ancak yazarın andığı araçlar büyük ölçüde üretim gözlemlenebilirliğine yönelik: makine filoları, saklanan profiller, panolar. Nusku'nun önerisi döngünün daha erken bir noktasını hedefliyor — kullanıcılar şikayet ettikten sonra değil, kod gönderilmeden önce geliştiriciye eksiksiz performans tablosunu yerel olarak sunmak. Sıfır yapılandırmalı yerel modla birleşince bu, onu bir arka uç izleme servitinden çok, iç döngü geliştirme aracına yaklaştırıyor.
Dil seçimi de dikkati hak ediyor. Tahsis davranışını ölçen bir profilleyici, kendi içindeki bir garbage collector ya da şeffaf olmayan bir runtime'ın rakamları bulanıklaştırmamasından fayda görür; dolayısıyla Zig, bir yenilik merakı olmaktan çok aracın amacıyla örtüşüyor.
Son olarak, bu erken aşamadaki kişisel bir proje, bitmiş bir ürün değil: Yalnızca Agent üzerinde çalışılıyor ve yazar, başkaları için faydalı olmanın eniyileme hedefi değil bir artı olduğunu açıkça belirtiyor. Bugün bir profilleyici seçen kişi yine yerleşik seçeneklere uzanacak — ama Zig ile eBPF tabanlı bir profilleyicinin sıfırdan, herkese açık şekilde belgelenmiş inşası, iki konudan birini öğrenenler için nadir bir kaynak ve Agent olgunlaştıkça izlemeye değer.
- #linux
- #ebpf
- #zig
- #profiling
- #developer-tools