- 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.