1 puan yazan GN⁺ 2024-07-09 | 1 yorum | WhatsApp'ta paylaş

C++ düşük gecikmeli uygulamalar için tasarım kalıpları

  • Yazarlar: Paul Bilokon, Burak Gunduz
  • Gönderim tarihi: 8 Eylül 2023
  • Konu: Düşük gecikmeli kod optimizasyonu, özellikle yüksek frekanslı işlem (HFT) sistemlerine odaklanıyor

Başlıca katkılar

  • Düşük gecikmeli programlama deposunun oluşturulması: Sıkı istatistiksel kıyaslama içeren pratik bir rehber
  • Piyasa nötr istatistiksel arbitraj stratejisinin optimize edilmesi: Hız ve kârlılıkta önemli iyileşmeler
  • Disruptor kalıbının C++ implementasyonu: Geleneksel kuyruklama yöntemlerine göre daha yüksek performans

Değerlendirme ölçütleri

  • Hız
  • Önbellek kullanımı
  • İstatistiksel anlamlılık vb.

Temel teknikler

  • Önbellek ısıtma: Önbelleği önceden başlatarak gecikmeyi azaltma
  • Constexpr: Derleme zamanı sabit değerlendirmesiyle performansı artırma

Gelecek yönelimler

  • Deponun genişletilmesi
  • Optimize edilmiş işlem algoritmalarının gerçek zamanlı işlem ortamlarında test edilmesi
  • Kapsamlı sistem kıyaslaması için Disruptor kalıbı ile işlem algoritmalarının entegre edilmesi

Hedef okur kitlesi

  • Akademi ve endüstrideki uygulayıcılar

GN⁺ özeti

Bu makale, düşük gecikmeli uygulamaların, özellikle de yüksek frekanslı işlem sistemlerinin performansını artırmaya yönelik tasarım kalıplarını ele alıyor. Düşük gecikmeli programlama deposu ve Disruptor kalıbının implementasyonu, uygulayıcılar için yararlı bir rehber olabilir. Önbellek ısıtma ve Constexpr gibi teknikler, gecikmenin azaltılmasına büyük katkı sağlıyor. Bu makale, performans optimizasyonuyla ilgilenenler için oldukça faydalı olacaktır.

1 yorum

 
GN⁺ 2024-07-09
Hacker News görüşü
  • Konuya kısa bir giriş niteliğinde

  • Lisans öğrencileri temel performans optimizasyonu unsurlarını zaten biliyor

    • Dal tahmini, önbellek tutarlılığı, komut önbelleği gibi temel kavramları öğreniyorlar
  • Performans düşüşü nedeni olan false sharing konusuna değinilmemesi şaşırtıcı

  • Optimizasyon ipucu özniteliklerine ([[likely]], [[unlikely]]) de değinilmemesi şaşırtıcı

  • İleri seviye performans optimizasyonu unsurları ele alınmıyor

    • Belirli IO API'leri, senkronizasyon primitive'leri, IPC mekanizmaları, derleyici yerleşik işlevleri vb.
  • Düşük gecikme programcıları için gerekli olan şey, gereksiz tahsisler ve kopyalamalara karşı tetikte olmaktır

    • Benchmark aracılığıyla performans düşüşü etkenlerini bulma alışkanlığı gerekir
  • Düşük gecikmeli bir sunucu yazarken vektör IO işlemlerinin küçük nesneleri ardışık bir buffer'a kopyalamaktan daha yavaş olabildiğini fark etti

    • Bedava kopyalama diye bir şey olmadığını vurguluyor
  • Test sonuçları t-istatistiği ve p-değeri veriyor

    • t-istatistiği, artıkların birim kök testi sonucunu gösteriyor
    • p-değeri, testin sıfır hipotezinin doğru olma olasılığını veriyor
  • Bu bölüm sanki LLM kullanılarak yazılmış gibi duruyor

  • 5 yıl boyunca günde bir kez olan kapanış fiyatını analiz edip 65 mikrosaniyelik gecikmeyle spread hesaplama örneği tuhaf

    • İç döngüde istatistik hesaplanmıyor
    • 65 mikrosaniye iç döngü için fazla yavaş
    • Daha çok optimizasyon tekniklerini alıştırmak için hazırlanmış bir örnek gibi görünüyor
  • C++ ile yazılmış bir hisse senedi borsası implementasyonunu paylaşıyor

    • LMAX disruptor pattern kullanıyor
    • Bunu Rust ile yeniden yazmayı düşünüyor
    • Rust'ta bellek yönetimi ve bağımlılıklar daha kolay
  • Bir C++ logging library yazdığını anlatıyor

    • LMAX disruptor'a benziyor
    • HFT topluluğunda kullanılıyor
    • Performans kaybı olmadan ayrıntılı logging sağlıyor
    • Ekip arkadaşlarının performans düşer korkusuyla önemli bilgileri loglamaması sorununu çözüyor
  • Derleme zamanında dispatch verimlidir çünkü hangi fonksiyonun çağrılacağı derleme aşamasında belirlenir

    • Derleyici çağrılacak fonksiyonu statik olarak belirleyebiliyorsa, o fonksiyonun kodunu doğrudan inline edebilir
    • Bu, tüm fonksiyon çağrısı overhead'ini ortadan kaldırır ve ek optimizasyonlara imkan tanır
  • CppCon 2017 sunum materyalini paylaşıyor

    • Konu, mikrosaniyeler sonsuzluk gibi hissettirdiğinde
    • Profesyonel bir geliştiriciyseniz tüm materyale bakmanız faydalı olur
  • High-frequency trading'in neden var olması gerektiğini sorguluyor

    • İnsanlar Bitcoin'in enerji israfından şikayet ediyor ama high-frequency trading topluma saf bir negatif etki yapıyor