7 poin oleh GN⁺ 16 hari lalu | Belum ada komentar. | Bagikan ke WhatsApp
  • Pada kernel pengembangan Linux 7.0, ditemukan regresi performa serius pada server database PostgreSQL, di mana throughput turun hingga sekitar setengah dibanding kernel sebelumnya, dan hal ini ditemukan oleh insinyur Amazon/AWS
  • Hasil pengukuran di server Graviton4 menunjukkan bahwa Linux 7.0 hanya memberikan sekitar 0,51x throughput dibanding kernel sebelumnya, dan penyebabnya diketahui karena jauh lebih banyak waktu dihabiskan pada spinlock user-space
  • Penyebab regresi ini adalah perubahan pembatasan mode preemption kernel yang diterapkan di Linux 7.0; patch untuk mengembalikan PREEMPT_NONE sebagai nilai default telah diajukan, tetapi kemungkinan diterimanya masih tidak jelas
  • Penulis asli perubahan tersebut, Peter Zijlstra, menyatakan bahwa alih-alih memperbaiki kernel, PostgreSQL seharusnya dimodifikasi agar memanfaatkan ekstensi time slice RSEQ (Restartable Sequences)
  • Versi stabil Linux 7.0 dijadwalkan rilis sekitar 2 minggu lagi dan juga akan digunakan sebagai kernel dasar Ubuntu 26.04 LTS, sehingga dikhawatirkan akan terjadi penurunan performa yang luas sampai PostgreSQL beradaptasi

Penemuan masalah dan skalanya

  • Insinyur Amazon/AWS, Salvatore Dipietro, melaporkan regresi pada throughput dan latensi PostgreSQL
  • Berdasarkan pengukuran pada server Graviton4, Linux 7.0 hanya memberikan 0,51x throughput dibanding kernel yang ada sebelumnya
    • Penyebabnya dipastikan karena jauh lebih banyak waktu dihabiskan pada spinlock user-space

Penyebab regresi: pembatasan mode preemption

  • Hasil bisecting menunjukkan bahwa penyebabnya adalah perubahan yang membatasi mode preemption kernel di Linux 7.0
  • Perubahan tersebut dilakukan dengan arah hanya mempertahankan mode preemption Full dan Lazy untuk arsitektur CPU modern, dan dimasukkan sebagai bagian dari pembaruan scheduler Linux 7.0

Patch yang diajukan dan respons maintainer kernel

  • Dengan alasan regresi yang serius, patch untuk mengembalikan PREEMPT_NONE sebagai mode preemption default telah diajukan ke mailing list kernel Linux
  • Namun, Peter Zijlstra yang menulis kode aslinya bersikap negatif terhadap penerimaan patch tersebut, dan menyatakan bahwa solusinya adalah PostgreSQL memanfaatkan ekstensi time slice RSEQ (Restartable Sequences)
    • Ekstensi time slice RSEQ juga merupakan fitur yang disertakan di Linux 7.0
    • Zijlstra menjelaskan bahwa "hal ini dapat membatasi paparan preemption pada pemegang lock"

Cakupan dampak dan jadwal rilis

  • Jika posisi ini tetap dipertahankan, maka performa PostgreSQL dalam beberapa skenario di versi stabil Linux 7.0 dapat menurun tajam sampai PostgreSQL diperbarui
  • Versi stabil Linux 7.0 dijadwalkan rilis sekitar 2 minggu lagi
  • Linux 7.0 akan menjadi kernel dasar Ubuntu 26.04 LTS, sehingga Ubuntu 26.04 LTS yang dijadwalkan rilis pada akhir April juga berpotensi terkena dampak yang sama

Belum ada komentar.

Belum ada komentar.