Ana içeriğe geç
Programlama

Conviva sorgu motorunda io_uring mmap'ten daha yavaş kaldı

Öne çıkanlar

  • Conviva, Rust sorgu motorunda mmap yerine io_uring kullanınca sorgu süreleri 13,6 saniyeden 21,8 saniyeye çıktı.
  • Yeni mimari majör sayfa hatalarını 35 kat azalttı ancak minör sayfa hatalarını 8 kat artırdı.
  • O_DIRECT ve doğrudan tampon erişimi optimizasyonlarına rağmen süre ancak 16 saniyeye düşürülebildi.

Veri analitiği şirketi Conviva mühendisleri, Rust tabanlı sorgu motorlarında mmap mekanizmasını Linux'un modern asenkron G/Ç arayüzü io_uring ile değiştirdiklerinde performansın düştüğünü bildirdi. Şirket, trilyonlarca olayı analiz eden DataFusion ve Arrow tabanlı mimarisinde, yüksek eşzamanlılık altında mmap kaynaklı sayfa önbelleği çekişmesi ve yüksek gecikme süreleri yaşadı. Bu sorunu çözmek amacıyla io_uring ve O_DIRECT tabanlı yeni bir katmana geçiş yapıldı ancak ilk testlerde sorgu süreleri mmap'e kıyasla yüzde 60 daha yavaş çıktı.

Linux sunucularında yapılan testlerde io_uring, majör sayfa hatalarını 128 binden 3 bin 600 seviyesine indirerek çekirdek düzeyindeki takılmaları azalttı. Buna karşın sorgu süresi 13,6 saniyeden 21,8 saniyeye fırladı ve minör sayfa hataları 8,6 milyona yükseldi. Mühendisler, Arrow kütüphanesinin varsayılan bellek kopyalama işlemlerinin çekirdeği sürekli yeni bellek alanları ayırmaya ve sıfırlamaya zorladığını, bunun da devasa bir minör sayfa hatası yükü ürettiğini saptadı.

O_DIRECT bayrağının etkinleştirilmesi ve bellek kopyalamanın doğrudan io_uring tamponları üzerinden yapılmasıyla sorgu süresi 16 saniyeye kadar çekildi. Ancak bu iyileştirme dahi mmap'in başlangıçtaki 13,6 saniyelik başarımını geçmeye yetmedi. Şirket, tek bir iş parçacığı üzerinden yönetilen katmanın aşırı iş yükü aldığını ve io_uring kuyruğuna aynı anda 40 istek göndermenin mimari tıkanıklık yarattığını belirterek ayrıntılı enstrümantasyon sürecine geçtiğini açıkladı.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.