Yan yana
GecikmevsThroughput
Gecikme (latency) ile throughput arasındaki fark nedir?
Güncellendi 2 dk okuma6 fark
Kısaca
Gecikme (latency) tek bir isteğin ya da veri parçasının ulaşma süresidir; throughput ise bir sistemin birim zamanda işlediği veri ya da istek miktarıdır.
Gecikme
Gecikme, bir istek ile yanıtın başlaması arasında geçen süredir; genellikle milisaniyeyle ölçülür ve bir uygulamanın ne kadar hızlı hissettirdiğini belirler.
Gecikme sayfasını okuThroughput
Verim
Throughput (verim), bir sistemin birim zamanda gerçekte işlediği veri ya da iş miktarıdır; ağda saniyedeki megabit, sunucuda saniyedeki istek sayısı gibi.
Throughput sayfasını okuGecikme ve Throughput karşılaştırması
| Özellik | Gecikme | Throughput |
|---|---|---|
| Ölçtüğü | Tek bir isteğin ya da paketin beklemesi | Birim zamanda işlenen iş ya da veri |
| Birimler | Milisaniye | Saniyedeki istek, Mbps |
| Benzetme | Tek bir arabanın yolculuğu ne kadar sürdüğü | Saatte kaç arabanın geçtiği |
| İyileştiren | Daha kısa mesafe, daha az gidiş-dönüş, önbellekleme | Paralellik, toplu işleme, daha fazla kapasite |
| Kullanıcıların fark ettiği | Hızlı yanıt verme | Yoğun anlarda kapasite |
| Raporlanma biçimi | p95 ve p99 gibi yüzdelik dilimler | Zaman içindeki ortalamalar ve tepeler |
Fark, açıklamalı
Gecikme beklemeyi ölçer: bir düğmeye tıklamakla yanıtı görmek arasındaki milisaniyeler ya da bir paketin İstanbul'dan Frankfurt'a yolculuğu. Throughput ise hacmi ölçer: bir sunucunun saniyede kaç isteği tamamladığı ya da bir hattın saniyede gerçekte kaç megabit taşıdığı. Bir otoyol benzetmesi işe yarar: gecikme tek bir arabanın yolculuğu ne kadar sürede tamamladığı, throughput ise saatte kaç arabanın geçtiğidir.
İkisi ilişkilidir ama birbirinden bağımsızdır. Bir uydu bağlantısının throughput'u yüksek ama gecikmesi de yüksek olabilir; az yüklü bir sunucu hızlı yanıt verebilir ama aynı anda az sayıda isteği ele alabilir. Yük altında birbirini etkilerler: bir sistem en yüksek throughput'una yaklaştıkça kuyruklar oluşur ve gecikme keskin şekilde yükselir; yük testleri bunu yanıt sürelerinin yukarı kıvrıldığı nokta olarak ortaya çıkarır.
Farklı yollarla iyileştirilirler. Gecikme, CDN'ler ve edge sunucular gibi daha kısa mesafelerle, daha az gidiş-dönüşle, daha hızlı kod yollarıyla ve önbelleklemeyle düşer. Throughput ise daha fazla paralellikle, toplu işlemeyle, daha fazla örnekle, daha iyi donanımla ve kilitler ya da yavaş sorgular gibi darboğazları kaldırarak artar. Bazen ödünleşirler: toplu işleme throughput'u artırır ama tek tek öğeleri bekletir.
Sık yapılan bir yanlış, bant genişliğinin, throughput'un ve gecikmenin hız denen tek bir şey olduğunu düşünmektir. Bant genişliği bir hattın en yüksek kapasitesi, throughput gerçekte ulaşılan değer, gecikme ise beklemedir. Büyük dosyaları indirmek için hızlı olan bir bağlantı, gecikmesi yüksekse oyunlarda ya da görüntülü aramalarda yine yavaş hissettirebilir.
Hangisini kullanmalısınız?
Gecikme şu durumlarda doğru seçim:
- Etkileşimli uygulamalar, oyunlar ya da görüntülü aramalar geliştiriyorsunuz.
- Kullanıcılar her bir yanıtı bekliyor.
- En yavaş istekler olan kuyruk gecikmesini (tail latency) önemsiyorsunuz.
Throughput şu durumlarda doğru seçim:
- Büyük yığınları, akışları ya da dosya aktarımlarını işliyorsunuz.
- Yoğun saatlerde çok sayıda isteği ele almanız gerekiyor.
- Yapılan toplam iş, her öğenin beklemesinden daha önemli.
Sık sorulan sorular
Bir sistemin hem throughput'u hem gecikmesi yüksek olabilir mi?
Evet. Bir uydu bağlantısı ya da toplu işleme yapan bir iş çok miktarda veri taşırken her parçanın ulaşması yine uzun sürebilir.
Gecikme yük altında neden artar?
Bir sistem kapasitesine yaklaştıkça istekler CPU, bağlantı ya da kilitler için kuyruklarda beklemeye başlar; bu yüzden throughput yüksek kalsa bile her biri daha uzun sürer.
Bant genişliği ile throughput arasındaki fark nedir?
Bant genişliği bir hattın taşıyabileceği en yüksek hızdır. Throughput ise gerçekte ulaşılan hızdır; ek yük, tıkanıklık ve iki uçtaki cihazlar yüzünden genellikle daha düşüktür.