GitHub Radar — Parca
eBPF ve DWARF unwinding ile çerçeve göstergesi olmayan ikilileri çekirdek seviyesinde profille eden, FrostDB kolon tabanlı sürekli profil platformu.
Parca, üretim ortamlarında çalışan uygulamaların kaynak tüketimini kod satırı düzeyinde izlemek amacıyla sıfır enstrümantasyon (zero-instrumentation) ve saniyede 19 örnekleme frekansıyla çekirdek seviyesinde çalışan eBPF tabanlı açık kaynaklı bir sürekli profil çıkarma (continuous profiling) platformudur 1. Uygulama koduna SDK eklemeyi zorunlu kılan, süreçleri yeniden başlatmayı gerektiren ve %5’i aşan işlemci ek yüküyle üretim ortamlarını kilitleyen geleneksel profil araçlarına karşı Parca; Linux çekirdeğinin genişletilmiş Berkeley Paket Filtresi (eBPF) altyapısını ve DWARF çağrı çerçevesi bilgilerini (CFI) birleştirerek %1’in altında CPU maliyetiyle tüm sistemin CPU ve bellek profilini çıkarır 2.
Gözlemlenebilirlik (observability) ve düşük seviyeli sistem analizi çevrelerinde 5 bin yıldız ve son commit 1 gün önce seviyesinde sadık bir mühendislik kitlesine ulaşan depo, titizlikle yönetilen 172 açık issue ve kararlı dağıtım takvimini temsil eden son sürüm v0.28.0 (Eylül 2026) metrikleriyle güven vermektedir.
Mimari Deep-Dive: Parca
Parca’nın sistem mühendisliği açısından en devrimci başarısı, modern derleyicilerin en büyük optimizasyon alışkanlığı olan çerçeve göstergesi eksikliğini (omitted frame pointers) çekirdek seviyesinde aşabilmesidir. Modern C, C++, Rust ve Go derleyicileri, x86_64 mimarisinde fazladan bir genel amaçlı yazmaç (register) kazanmak amacıyla varsayılan olarak -fomit-frame-pointer bayrağını kullanır ve %rbp yazmacını yığın çerçevesi bağı olmaktan çıkarır. Bu durum, Linux çekirdeğinin standart bpf_get_stackid çağrısını tamamen çaresiz bırakır; çünkü çekirdek yığın izini (stack trace) takip edecek bir çerçeve göstergesi zinciri bulamaz ve çağrı yığını yarıda kesilir.
Parca Agent, bu problemi çözmek için ELF ikililerinde istisna yönetimi amacıyla saklanan .eh_frame ve DWARF Call Frame Information bölümlerini kullanıcı alanında (userspace) ayrıştırır 4. Bu devasa tablolar, eBPF sanal makinesinin bellek ve döngü sınırlarına sığacak şekilde son derece kompakt bir açma tablosuna (compact unwind table) dönüştürülür ve çekirdek alanındaki BPF_MAP_TYPE_HASH haritalarına yüklenir. Çekirdek içinde çalışan eBPF programı, perf_event zamanlayıcı kesmesi tetiklendiğinde program sayacı (%rip) ve yığın göstergesi (%rsp) adreslerini bu haritada arayarak yığını tamamen çekirdek alanında geri sarar (unwind) 2. Kullanıcı alanına herhangi bir bağlam geçişi (context switch) yapmadan tüm yerel ve çekirdek çağrı yığını milisaniyeler içinde kusursuz bir şekilde çıkarılır.
İkinci kritik mimari sütun depolama katmanında yatar. Milyonlarca düğümden ve konteynerden akan profil verileri, tekil pprof dosyaları halinde saklandığında zaman serisi boyunca sorgulanamaz hale gelir. Parca, bu sorunu çözmek için Go ile sıfırdan geliştirilen ve Apache Arrow ile Parquet standartlarına dayanan FrostDB adlı gömülü kolon tabanlı veritabanını kullanır 3. Profil yığınları etiket boyutlarına (Kubernetes namespace, pod adı, container, git commit sha) göre kolonlar halinde sıkıştırılır. Bu kolon mimarisi, alev grafikleri (flame graphs) arasında diferansiyel analiz yapmayı, iki dağıtım arasındaki regresyonları anında karşılaştırmayı ve terabaytlarca profil verisini bellek içinde mikrosaniyeler seviyesinde taramayı mümkün kılar.
Üçüncü sütun ise sembol çözümleme (symbolization) pipeline’ıdır. Üretim ikililerinin hata ayıklama sembolleri (debuginfo) genellikle soyulmuş (stripped) olduğundan, Parca Agent derleme kimliklerini (build-id) kullanarak sembolleri uzaktaki debuginfod sunucularından talep eder ve sembol çözümleme işlemini profil yakalama döngüsünden tamamen asenkronize ederek üretim süreçlerine sıfır yük bindirir.
Kod ve Topluluk Sağlığı
Parca, Prometheus ve Kubernetes ekosisteminin kıdemli çekirdek geliştiricilerinden Frederic Branczyk ve Kemal Akkoyun liderliğinde kurulan Polar Signals şirketi ve açık kaynak topluluğu tarafından yönetilmektedir 1. Proje, arkasındaki girişim sermayesi desteği ve kurumsal gözlemlenebilirlik uzmanlığıyla son derece yüksek bir mühendislik standardını temsil eder.
Depodaki 172 açık issue sayısı, projenin Linux çekirdek sürümleri (v5.4’ten v6.x’e), farklı CPU mimarileri (x86_64 ve arm64) ve dillerin çalışma zamanları (Go runtime, JVM, CPython) arasındaki geniş uyumluluk matrisini başarıyla yönettiğini gösterir. Bakımcı ekibi hata raporlarına hızla dönüş yapmakta, özellikle eBPF doğrulayıcı (verifier) karmaşıklıkları ve çekirdek kısıtlamaları konusundaki tartışmaları derin teknik şeffaflıkla yürütmektedir. Çekirdek depoya sunulan her PR; QEMU sanal makineleri üzerinde çalışan eBPF testlerinden, ARM64 donanım doğrulamalarından ve katı Go eşzamanlılık linter’larından geçer 5. Sürümleme takvimi düzenli semantik aralıklarla ilerlemektedir. health_score bu bölümden türer: issue kapanma hızı, sürüm düzeni, bakımcı ekibi. Ajanın tahminidir; künyede öyle yazılır. Ekibin açık kaynak alanındaki saygın geçmişi, DWARF unwinding gibi zorlu bir problemi çözmedeki teknik cesareti ve dengeli issue triyajı nedeniyle projeye health_score: 9.1 takdir edilmiştir.
Production Riski: Gerçekten Kullanılır mı?
Parca’yı kurumsal altyapılarına dahil etmeyi planlayan platform mühendisleri için lisanslama açısından hiçbir engel bulunmamaktadır; proje Apache 2.0 lisansı ile dağıtılmakta olup hem ajan hem de sunucu bileşenleri kurumsal üretim ortamlarında veya ticari bulut çözümlerinde tam kullanım özgürlüğü sunar 6.
Parca’nın üretimde hayat kurtardığı senaryolar oldukça belirgindir: Yüzlerce Kubernetes kümesinde çalışan heterojen mikroservislerin gizli CPU israflarını ve bellek sızıntılarını uygulama koduna tek bir satır dokunmadan ortaya çıkarmak. Şirketlerin bulut bilgi işlem faturalarında %20 ila %30 oranında gereksiz CPU tüketimi yaratan sıcak kod yollarını (hot paths) doğrudan fonksiyon ve satır numarası seviyesinde tespit eder. Ajanın Kubernetes DaemonSet olarak dağıtılabilmesi operasyonel kurulum maliyetini sıfıra indirir.
Buna karşın, operasyonel olarak dikkate alınması gereken teknik sınırlar mevcuttur. İlk risk, çekirdek bağımlılığıdır; gelişmiş eBPF özellikleri ve BPF halka arabellekleri (ring buffer) için sunucuların göreceli olarak modern bir Linux çekirdeğine (tercihen Linux 5.15 veya üzeri) sahip olması gerekir. İkinci risk ise DWARF açma tablolarının bellek ayak izidir; binlerce farklı ve büyük C++ ikilisinin çalıştığı heterojen sunucularda eBPF haritalarının tükettiği RAM miktarı dikkatle izlenmelidir. Bu altyapı gereksinimlerini sağlayan modern bulut yerel ekipler için Parca, üretimde performans optimizasyonu sağlayan en gelişmiş açık kaynaklı sistem profilleyicisidir.