Çok kiracılı VDS, VPS ve Kubernetes düğümlerinde bant genişliği sınırlamanın CPU maliyetini, çekirdekler arası spinlock kilitlenmesini ve TCP kuyruk şişmesini (bufferbloat) simüle edin; lockless FQ ve Cilium EDT yapılandırmasını oluşturun.
Genel HTTP/2, HTTP/3, TLS el sikismalari ve standart web siteleri.
eBPF EDT CPU Yükü
Geri Kazanılan Çekirdek
Bufferbloat Kuyruk Gecikmesi
İşlenen Paket Hacmi
32 çekirdekli sistemde 100 kiracı ve 1.470.588 PPS yük altında benchmark projeksiyonu.
| Performans Kriteri | Geleneksel tc-htb | Linux eBPF EDT + FQ Pacing |
|---|---|---|
| Kilitlenme (Spinlock Contention) | Kritik Kilitlenme (root_lock) | Sıfır (Çekirdekler Arası Lockless) |
| CPU Tüketim Yükü | %85 (27.2 çekirdek) | %2.1 (0.7 çekirdek) |
| Yük Altında P99 Gecikme | 84 ms | 2.6 ms |
| Zamanlama Hassasiyeti | Milisaniye (Jiffy bazlı) | Nanosaniye (skb->tstamp zaman damgası) |
| TCP Stack Geri Bildirimi | Kör kuyruk (veth üzerinde 1000 paket birikir) | TSQ (TCP Small Queues) ile anında soket frenleme |
# 1. Fiziksel Ag Kartinda Lockless FQ (Fair Queueing) Scheduler Aktif Edin
tc qdisc replace dev eth0 root fq
# 2. Traffic Control (TC) clsact Egress Kancasini Ekleyin
tc qdisc add dev eth0 clsact
# 3. Derlenmis eBPF EDT Programini Egress Filtresi Olarak Yukleyin
# Her paket icin skb->tstamp hesaplanarak dogrudan FQ zamanlayicisina iletilir
tc filter replace dev eth0 egress bpf da obj edt_pacer.o sec tc_pacer
# 4. Kiraci Basina Bant Genisligi Sinirini (orn. 100 Mbps) BPF Map'e Isleyin
bpftool map update pinned /sys/fs/bpf/tc/globals/rate_map \
key hex 00 00 00 01 \
value hex 00bebc20Yıllardır Linux sunucularda sanal makinelerin veya konteynerlerin bant genişliğini sınırlamak için tc-htb (Hierarchical Token Bucket) kullanıldı. Ancak HTB, tek bir global kilit (qdisc root_lock) ile çalışır.
16, 32 veya 64 çekirdekli modern sunucularda saniyede yüz binlerce paket işlenirken tüm CPU çekirdekleri aynı spinlock'a erişmek için yarışır. Bu kilitlenme (contention), işlemcinin %30 ila %60'ını sadece kilit bekleyerek harcamasına yol açar. Ayrıca sanal arayüzlerde (veth) biriken 1000 paketlik tamponlar, yük altında ping sürelerini 2 ms'den 150-300 ms'ye fırlatan Bufferbloat felaketine neden olur.
Linux 5.x ve 6.x çekirdekleriyle olgunlaşan ve 2026'da Cilium Bandwidth Manager ile bulut standardı haline gelen EDT (Earliest Departure Time) mimarisinde kuyruklar tamamen ortadan kaldırılır.
eBPF programı, fiziksel ağ kartının TC egress kancasında her giden paketin gelecekte çıkacağı tam nanosaniye zaman damgasını (skb->tstamp) hesaplar ve paketi doğrudan kilitlenmesiz donanım seviyesi FQ (Fair Queueing) zamanlayıcısına devreder. Bu sayede çekirdekler arası kilitlenme tamamen sıfırlanır, CPU yükü %80'den fazla azalır ve TCP Small Queues (TSQ) entegrasyonuyla bufferbloat gecikmesi 4 milisaniyenin altına iner.