1 puan yazan GN⁺ 2 시간 전 | Henüz yorum yok. | WhatsApp'ta paylaş
  • 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

  • lld ile 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-shell shebang’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 x iç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 p iç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 lld analizinde, 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.

Henüz yorum yok.