4 puan yazan GN⁺ 2024-03-20 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Python 3.13'e yeni bir JIT derleyicisi oluşturma metodolojisi (copy-patch) eklendikten sonra, bunu PostgreSQL'e uygulamaya karar verildi.
  • pg-copyjit adlı yeni bir yaklaşım tanıtılıyor; bu, PostgreSQL sunucusunun hızını artırmanın bir yolu.
  • Tüm kod deneysel durumda ve gerçek üretim ortamında kullanmadan önce uzman incelemesi gerekiyor.

Başlangıçta JIT yoktu, sonra LLVM JIT derleyicisi ortaya çıktı

  • PostgreSQL'e LLVM kullanan JIT derleme eklendi, ancak LLVM'in JIT derleme için çok uygun olmayan yönleri var.
  • LLVM optimizasyonları maliyetli ve bunlar kullanılmazsa derlemenin kendisi anlamsız hale gelebilir.
  • PostgreSQL'in sorgu maliyeti tahmini gerçek çalışma süresiyle doğrudan ilişkili olmadığından, birçok kullanıcı JIT derleyicisini devre dışı bırakıyor.

2021'de copy-and-patch açıklandı

  • Mümkün olan en kısa sürede hızlı ve yeterince iyi kod üretmeye ihtiyaç var.
  • copy-patch yaklaşımı, C ile yazılmış stencil'leri (şablon fonksiyonlar) kullanarak kodu hızlıca üretiyor.
  • Stencil'ler yeni bir bellek alanına kopyalanıyor, boşluklar dolduruluyor ve ardından doğrudan 'derlenmiş' fonksiyona atlanabiliyor.

PostgreSQL'e copy-and-patch getirmek

  • PostgreSQL için yeni bir JIT motoru oluşturmak o kadar zor değil; LLVM'in bir eklenti haline getirilerek başka JIT derleyicilerinin de eklenebilmesi öneriliyor.
  • Tek bir _PG_jit_provider_init fonksiyonu sağlamak ve compile_expr, release_context, reset_after_error olmak üzere üç callback'i başlatmak yeterli.
  • copy-patch algoritması basit: her opcode için bir stencil bulunup ekleniyor ve gereken değerler boşluklara yazılıyor.

Mevcut durum

  • PostgreSQL 16 üzerinde çalışıyor ve şu anda yalnızca AMD64 destekleniyor.
  • Kod üretimi birkaç yüz mikrosaniyede tamamlanıyor; bu da kısa sorgularda bile kullanılabileceği anlamına geliyor.
  • Henüz optimizasyon aşamasında değil, ancak performansın yorumlayıcıya kıyasla şimdiden iyileştiği görülüyor.
  • Uygulanmış opcode sayısı az, ancak henüz desteklenmeyen sorgular için PostgreSQL yorumlayıcısı devreye giriyor.

Yapılacaklar...

  • Bu bir kavram kanıtı aşaması; kolay derlenebilir veya paketlenebilir hale getirmek henüz öncelik değil.
  • Odak noktası daha fazla opcode uygulamak ve optimizasyon fırsatları bulmak.
  • Diğer mimarilere taşımak da ciddi olarak değerlendiriliyor.

Teşekkürler

  • Mevcut işvereni Entr’ouvert'e teşekkür ediyor; ekip arkadaşları bu projeye zaman ayırabilmesi için destek olmuş.
  • DBA arkadaşlarına da teşekkür ediyor ve PoWA'yı denemelerini öneriyor.

GN⁺'ın görüşü

  • Bu yazı, PostgreSQL veritabanı sunucusunun performansını artırmak için yeni bir yaklaşım tanıtıyor. Bu, veritabanı yöneticileri ve geliştiriciler için ilgi çekici olabilir.
  • Deneysel kodun gerçek üretim ortamına uygulanmasından önce kapsamlı test ve doğrulama şart. Bunun nedeni veri kaybı veya kesinti gibi riskleri önlemek.
  • LLVM gibi mevcut JIT derleyicileriyle karşılaştırıldığında, copy-patch yaklaşımı daha hızlı kod üretimi sağlayarak kısa sorgularda da faydalı olabilir.
  • Bu teknoloji PostgreSQL topluluğu tarafından geniş ölçüde benimsenirse, farklı mimarilere desteğin artmasıyla birlikte veritabanı performans optimizasyonunda yeni bir sayfa açabilir.
  • Eleştirel açıdan bakıldığında, bu hâlâ erken bir aşama ve gerçek performans kazanımlarının üretim ortamlarında nasıl görüneceğini anlamak için daha fazla araştırma ve geliştirme gerekiyor.

Henüz yorum yok.

Henüz yorum yok.