- Yeni önbellek katmanı dağıtımından sonra ortalama gecikme 112 ms’den 122 ms’ye kötüleşti; ancak medyan 99 ms’den 54 ms’ye iyileşirken p99 309 ms’den 678 ms’ye kötüleşti. Bu da başarı ya da başarısızlığı tek bir istatistik değeriyle değerlendirmenin zor olduğunu gösteriyor
- Dağıtımdan sonra gecikme dağılımı tek bir tepeden iki tepeye ayrıldı; kümülatif dağılım fonksiyonunu (CDF) üst üste koyunca yaklaşık 140 ms sınır alınarak hızlı isteklerin iyileştiği, yavaş isteklerin ise kötüleştiği görülüyor
- Yüzdelik dilimlere göre değişim miktarını gösteren shift function ile günlük ridgeline grafikleri ve ısı haritaları; iyileşme ve regresyonun büyüklüğünü, dağıtım oranı %0’dan %100’e yükselirken yavaş istek grubunun nasıl büyüdüğünü ortaya koyuyor
- Veriler önbellek sonucu ve yanıt boyutuna göre bölününce küçük yanıtlarda cache hit’lerin hızlandığı, büyük yanıtlarda cache miss’lerin ise ek hop nedeniyle yavaşladığı görüldü; böylece iki tepeli dağılımın nedeni doğrulanabildi
- Ortalama ya da belirli tek bir yüzdelik dilim seçilirse birbirine zıt yargılar bile gerekçelendirilebilir; bu yüzden önbellek maksimum nesne boyutunu artırmak veya büyük yanıtları bölmek gibi aksiyonlara varabilmek için dağılımın tamamına ve alt gruplara birlikte bakmak gerekir
Üretimde görünmeyen performans iyileştirmesi
lldile ilgili performans iyileştirmeleri benchmark’larda görülmüştü, ancak gerçek üretim panolarında veri gürültüsü nedeniyle net bir değişiklik bulmak zordu- Build hızı; cold cache, artımlı build, yerel/uzak çalıştırma, sistem durumu ve iş yükü gibi birçok değişkene bağlı olarak büyük ölçüde değişebilir
- Build performansını kümülatif dağılım fonksiyonu (CDF) ile değerlendiren bir örnekten hareketle, tek bir görsel ya da istatistik değerden ziyade verinin kendisine birden fazla yöntemle bakma ihtiyacı doğdu
- Tüm örnekler sabit seed kullanılan tek bir sentetik veri kümesinden üretildi; tam betik,
nix-shellshebang’i dahil olmak üzere Nix ortamında her görseli olduğu gibi yeniden üretmeyi sağlıyor - Hikâye amaçlı veri ve grafik üretiminde yapay zeka kullanıldı
Ortalama ile bakınca başarısız görünen önbellek dağıtımı
- Bir web servisinin istek gecikmesini azaltmak için yeni bir önbellek katmanı bir hafta boyunca dağıtıldı; ancak ortalama gecikme 112 ms’den 122 ms’ye çıkarak %9 arttı
- Yalnızca ortalamaya bakıldığında, değişikliği geri almak ve olay müdahalesi ile postmortem analiz başlatmak gerektiren bir regresyon olarak yorumlamak kolaydır
Tek veriden çıkan dört farklı yargı
- Dağıtım öncesi ve sonrası istatistikler farklı yönleri işaret ediyor
- Ortalama: 112 ms → 122 ms, %9 kötüleşme
- p50 medyan: 99 ms → 54 ms, %46 iyileşme
- p95: 224 ms → 454 ms, %103 kötüleşme
- p99: 309 ms → 678 ms, %119 kötüleşme
- Ortalama hafif bir regresyona işaret ederken, medyana göre tipik istekler neredeyse iki kat hızlandı; p99’a göre ise en kötü isteklerin iki kattan fazla yavaşladığı ciddi bir sorun görülüyor
- Aynı veriden hesaplanan ortalama ve medyan zıt yönleri gösterdiği için, kişinin kendi yargısını destekleyen istatistiği seçmesi kolaydır
Dağılım şeklinin ortaya çıkardığı iki istek grubu
- Yoğunluk grafiğinde dağıtım öncesi dağılım tek bir tepeye sahipti; dağıtımdan sonra ise iki tepeye ayrıldı
- Bu şekil istatistik değerleri arasındaki çelişkiyi açıklıyor, ancak yoğunluk grafiklerinin de sınırlamaları var
- Şekil, seçilen yumuşatma parametresine göre değişir
- İki dağılımın doldurulmuş alanları üst üste binince okumak zorlaşır
- İki grubun varlığı görünür, fakat medyan gibi yüzdelik konumlarını doğrudan kavramak zordur
CDF ile tüm yüzdelik dilimleri karşılaştırmak
- Kümülatif dağılım fonksiyonu (CDF), her gecikme süresi
xiçin x milisaniye veya daha kısa sürede tamamlanan isteklerin oranını gösterir - Dağıtım öncesi ve sonrası CDF’ler tek grafikte üst üste konduğunda, tüm istek grubu içinde her yüzdelik dilimin nasıl hareket ettiği görülebilir
- Dağıtım sonrası eğri, 140 ms altındaki bölgede sola kayarak daha fazla isteğin eskisine göre hızlandığını gösterir; 140 ms sonrasında ise daha fazla istek yavaşlamıştır
- İki eğrinin kesiştiği yaklaşık 140 ms, değişikliğin etkisinin iyileşmeden kötüleşmeye döndüğü sınırdır
- İki CDF kesiştiğinde etkinin yönü seçilen yüzdelik dilime göre değiştiğinden, hiçbir tekil yüzdelik dilim değişimin tamamını özetleyemez
Her yüzdelik dilimde değişim miktarını ölçmek
- CDF, her aralığın hızlanıp hızlanmadığını gösterir; ancak değişim miktarını doğrudan göstermez
- Shift function, her yüzdelik dilim
piçin dağıtım sonrası gecikme ile dağıtım öncesi gecikme arasındaki farkı hesaplar- 0’ın altı iyileşen aralıktır
- 0’ın üstü yavaşlayan aralıktır
- Böylece dağılımın her noktasında değişimin yalnızca yönü değil, büyüklüğü de görülebilir
Dağıtım sürecinde büyüyen regresyon
- Yeni önbellek katmanı bir hafta boyunca trafiğin %0’ından %100’üne kademeli olarak genişletildi; yalnızca dağıtım öncesi ve sonrası iki anı karşılaştırmak aradaki değişimleri kaçırır
- Günlük dağılımların üst üste yığıldığı ridgeline grafiğinde, dağıtım ilerledikçe hızlı isteklerin ana tepesinin sola kaydığı ve yavaş isteklerin ikinci tepesinin sağda belirdiği görülür
- Medyan düşerken yavaş isteklerin sayısı ve gecikmesi sessizce artar
- Gecikme yaklaşık olarak log-normal dağıldığı için x ekseninde logaritmik ölçek kullanılır
- Doğrusal eksende hızlı isteklerin tepesi yüksek görünür, yavaş istekler ise silik biçimde yayılır; iki tepeyi birlikte okumak zorlaşır
- Günlük sütunları ve gecikme süresine göre trafik miktarını renkle gösteren ısı haritasında da yeni istek grubu silik biçimde ortaya çıkar
- Bir haftanın tamamı tek bir toplulaştırılmış değere indirgenirse, yedi farklı günlük dağılım ve değişim trendi kaybolur
Cache hit ve miss’e ayırarak iki tepeli dağılımı çözümlemek
- Gerçek
lldanalizinde, gecikmenin iki tepeli dağılımını görebilmek için verileri ikili dosya boyutuna, örneğin 50 MiB’yi aşıp aşmadığına göre ayırmak gerekiyordu - Sentetik örnekteki yeni katmanda istekler; önbellekten karşılanan hit ve backend’e iletilip ek bir hop’tan geçen miss olarak ayrılır
- Dağıtım sonrası isteklerin CDF’si önbellek sonucuna göre ayrıldığında her grup yeniden tek bir tepeye sahip olur
- Cache hit’ler mevcut baseline’a göre sola kayarak hızlanır
- Cache miss’ler ek hop maliyeti nedeniyle çok daha sağda konumlanır
Yanıt boyutunda bulunan neden ve aksiyon
- Cache miss yalnızca çalışma mekanizmasıdır; hangi isteklerin neden miss’e düştüğünü anlamak için yanıt boyutuna da bakmak gerekir
- Önbellek küçük ve sık kullanılan nesneleri tutar; büyük nesneler ise tahliye edilir veya baştan hiç alınamaz
- Gecikme ile yanıt boyutu arasındaki ilişkiyi cache hit/miss renkleriyle ayırıp her eksenin yoğunluk dağılımını birleştiren jointplot’ta iki grup net biçimde görünür
- Küçük yanıt/düşük gecikme grubu cache hit’tir
- Büyük yanıt/yüksek gecikme grubu cache miss’tir
- Gecikmenin iki tepeli dağılımı, yanıt boyutu dağılımının iki tepeliliğinden kaynaklanır; buna önbellek maksimum nesne boyutunu artırarak veya büyük yanıtları bölerek yanıt verilebilir
Tek grafiğin ötesine geçip dağılımın tamamına bakmak
- Tek bir panel ya da grafik, durumun tamamını göstermekte yetersiz kalır ve bazı durumlarda yanlış yargılara yol açabilir
- Aynı veriye birden fazla yöntemle bakmak; dağılımın şeklini, yüzdelik dilimlere göre etkiyi, zaman içindeki değişimi, alt grupları ve nedenleri birlikte anlamayı sağlar
- Özellikle CDF, birden fazla istek grubunu karşılaştırırken tüm dağılımı tek bir grafikte göstermek için kullanışlıdır
Henüz yorum yok.