-
Heap mengoperasikan Postgres multi-petabyte untuk analitik
-
Seiring pertumbuhan yang cepat, utilisasi node melampaui 80% dan menimbulkan masalah performa pada pipeline pengumpulan data
-
Penyebab masalahnya adalah SSD cenderung mengalami penurunan performa saat utilisasinya mendekati 100%
-
Masalah ini makin parah karena menggunakan ZFS yang berbasis CoW (Copy-on-Write)
→ setiap kali blok diperbarui, salinan baru akan ditulis
- Tentu saja, CoW juga punya berbagai keunggulan
→ kompresi di tingkat filesystem lebih mudah dibanding filesystem lain, sehingga ruang bisa dihemat dengan kompresi 4-5x
→ memiliki ketahanan yang lebih tinggi sehingga full_page_writes di Postgres bisa dinonaktifkan, yang pada gilirannya meningkatkan performa dan mengurangi total IO
→ snapshot point-in-time yang menjamin konsistensi - karena halaman tidak benar-benar bisa diubah, halaman lama tetap dipertahankan bahkan selama snapshot berlangsung
- Namun, filesystem CoW seperti ZFS akan mengalami penurunan performa saat kapasitasnya makin penuh
→ setiap kali halaman diperbarui, block allocator harus mencari blok kosong, sehingga saat utilisasi tinggi penurunan performanya menjadi sangat serius
→ blok yang sebelumnya sudah di-unlink harus dihapus dan dicampur kembali dengan blok yang ada
→ untuk mendapatkan rasio kompresi yang lebih tinggi, ukuran blok diatur besar menjadi 64kb sehingga masalahnya makin parah
→ karena alasan-alasan ini, sebaiknya utilisasi ZFS tidak melebihi 80%
- Mereka mencoba meng-upgrade ke ZFS 2.x dan mengganti kompresi dari lz4 ke Zstandard
→ lz4 sangat cepat dan menunjukkan rasio kompresi sekitar ~4.4x
→ Zstandard menunjukkan rasio kompresi hingga ~5.5x, yaitu peningkatan 20%
→ tetapi banyak benchmark menunjukkan bahwa Zstandard lebih lambat daripada lz4
→ karena itu mereka memutuskan melakukan pengujian ketat di kondisi nyata
→ hasil pengujian menunjukkan performa query tidak berubah, penggunaan storage turun ~20%, dan waktu query tulis berkurang setengahnya
- Cluster DB Heap dibagi menjadi 5 node dan masing-masing berada dalam ASG terpisah
→ perubahan node cukup dilakukan dengan melepaskannya dari ASG, lalu ASG membuat node baru, me-restore dari backup terakhir, dan masuk ke mode warm standby
→ mereka membuat AMI dengan konfigurasi baru dan melanjutkan migrasi satu node demi satu
→ total penggunaan turun ~21%, waktu tulis berkurang 50%, dan performa query hampir tidak berubah
1 komentar
Arch Linux mengganti alat kompresi paket dari xz ke Zstandard https://id.news.hada.io/topic?id=1227
Renaisans algoritme kompresi https://id.news.hada.io/topic?id=1228
Tulisan tersebut tidak membahas penggunaan CPU, tetapi menurut komentar penulis asli di HN, angkanya meningkat dari sekitar ~40% menjadi ~50%. (Artinya Zstd memang menggunakan CPU lebih banyak)