PostgreSQL 17'de ardışık 8kB sayfaların tek bir vektörel preadv() sistem çağrısıyla okunmasını sağlayan io_combine_limit parametresinin CPU context switch tasarrufunu, NVMe sıralı tarama hızlanmasını ve sorgu süresini hesaplayın.
Her 8 kB sayfa icin tekil read() sistem cagrisi yapilir. NVMe kuyruk derinligi doldurulamaz.
Ardışık sayfalar preadv() ile tek sistem çağrısında okunur. NVMe bant genişliği tam doyumdadır.
# PostgreSQL 17+ Streaming I/O ve Sirali Tarama Optimizasyonu # /etc/postgresql/17/main/postgresql.conf # Birlestirilmis I/O Boyutu (Varsayilan 128kB, NVMe SSD icin 256kB veya 512kB onerilir) io_combine_limit = 128kB # NVMe depolama icin eszamanli onceden okuma (read-ahead) derinligi effective_io_concurrency = 200 # Sirali tarama ve analitik sorgular icin bellek optimizasyonu shared_buffers = 16GB maintenance_work_mem = 2GB work_mem = 64MB # Sayfa boyutu (Varsayilan: 8kB)
PostgreSQL 16 ve öncesinde, sıralı tarama (Sequential Scan), VACUUM, ANALYZE veya büyük indeks oluşturma işlemlerinde veritabanı motoru disk sayfalarını teker teker, 8 kB'lık bloklar halinde read() çağrısıyla işletim sistemi çekirdeğinden isterdi.
100 GB boyutundaki bir tabloyu taramak için tam 13 milyon 107 bin adet sistem çağrısı yapılmak zorundaydı. Modern Linux çekirdeklerinde Meltdown/Spectre KPTI (Kernel Page Table Isolation) katmanı nedeniyle her sistem çağrısı 1-2 mikrosaniye CPU zamanı tüketir. 7.000 MB/s hızındaki ultra hızlı NVMe SSD'lerde bile CPU çekirdekleri donanımı besleyemez ve context switch darboğazında boğulurdu.
PostgreSQL 17 ile birlikte geliştirici Thomas Munro öncülüğünde yeni Streaming I/O altyapısı tanıtıldı. Bu özellik, sıralı blokları önceden tespit ederek tek bir vektörel preadv() sistem çağrısında birleştiren io_combine_limit (varsayılan 128 kB) parametresini getirdi.
128 kB ile tek seferde 16 sayfa, 512 kB ile 64 sayfa aynı anda çekilir. Sonuç olarak sistem çağrısı sayısı yüzde 93 ila 98 oranında azalır. NVMe SSD'lerin kuyruk derinliği doldurularak bant genişliği doyuma ulaştırılır ve analitik tarama sorguları 2 ila 3 kat daha hızlı tamamlanır.