Linux 6.12 çekirdeğinde sunulan genişletilebilir eBPF CPU zamanlayıcı çerçevesi (sched_ext) ile veritabanı, mikroservis ve oyun sunucularında P99 kuyruk gecikmesini, AMD Zen L3 önbellek yerelliğini ve sistem işlem kapasitesini simüle edin.
| Zamanlayici Politikasi | Medyan (P50) | Kuyruk (P99) | P99.9 Sıçrama | L3 Miss % | Throughput (QPS) | eBPF Yuku |
|---|---|---|---|---|---|---|
scx_rusty (Rust NUMA & L3 Affinity)Onerilen AMD Zen CCD ve NUMA dugumlerinde L3 onbellek yerelligini koruyarak veritabani sorgu throughput'unu maksimize eder. | 3.7 ms | 22.09 ms | 80.11 ms | %11.9 | 129.970 | %1.2 |
scx_lavd (Latency-criticality Aware Virtual Deadline) Kritik istek is parcaciklarini arka plan gorevlerinden ayirarak P99 ve P99.9 kuyruk gecikmesini minimize eder. | 3.44 ms | 20.14 ms | 59.16 ms | %14.8 | 112.247 | %1.5 |
scx_p2dq (Power-of-Two Distributed Queue) Yuksek vCPU (32-128 core) sunucularda kuresel kilit darbogazini kaldirarak yuk dengelemesini dagitir. | 3.78 ms | 22.74 ms | 88.74 ms | %16.1 | 123.078 | %1.1 |
scx_bpfland (Interactive Vruntime Priority) Etkilesimli surecleri dinamik olarak tespit eden hafif ve genel amacli eBPF zamanlayici. | 3.57 ms | 24.36 ms | 73.95 ms | %16.5 | 108.308 | %1 |
Linux Cekirdek EEVDF (Varsayilan) Linux 6.6+ cekirdeginde yer alan standart, genel amacli statik zamanlayici. | 4.2 ms | 32.48 ms | 123.25 ms | %20.6 | 98.462 | %0.8 |
Linux 6.12+ uzerinde calisma zamaninda (reboot gerektirmeden) zamanlayici gecisi.
# Linux 6.12+ uzerinde sched_ext zamanlayiciyi canli yukleyin ve degistirin:
sudo scxctl switch --sched scx_rusty --statsLinux çekirdeğinin standart zamanlayıcısı (uzun yıllar CFS, Linux 6.6 sonrasında ise EEVDF - Earliest Eligible Virtual Deadline First), masaüstü bilgisayarlardan akıllı telefonlara ve devasa bulut sunucularına kadar her ortamda kabul edilebilir bir adalet sağlamak üzere tasarlanmıştır.
Ancak tek bir statik zamanlayıcı, modern çoklu CCD'li AMD EPYC mimarilerindeki L3 önbellek sınırlarını, Intel hibrit P/E çekirdeklerini veya gecikmeye aşırı duyarlı mikroservis isteklerini tam olarak tanıyamaz. Bir thread başka bir CCD üzerindeki çekirdeğe kaydırıldığında, L3 önbellek kirlenmesi ve bellek cezası nedeniyle P99 kuyruk gecikmesi katlanarak artar.
Linux 6.12 ile mainline çekirdeğe giren sched_ext, geliştiricilerin çekirdeği yeniden derlemeden veya sunucuyu kapatıp açmadan (reboot gerektirmeden) eBPF ile yazılmış özel zamanlayıcı politikalarını dinamik olarak yüklemesine imkan tanır.
Meta'nın geniş ölçekli reklam sunucu filolarında scx_lavd ile P99 kuyruk gecikmesinde %28 düşüş elde edilmiş, PostgreSQL karma yüklerinde ise scx_rusty ile sorgu throughput'u 2 kata kadar artırılmıştır. En büyük avantaj ise emniyettir: Yüklenen bir BPF zamanlayıcı çökerse veya takılırsa, Linux çekirdeği sıfır kesinti ve sıfır panik ile otomatik olarak varsayılan EEVDF zamanlayıcısına geri döner.