AWS adalah platform cloud yang sangat populer dan tepercaya untuk mengelola penerapan MongoDB, tetapi pertanyaan tentang XFS vs EXT4 membuat banyak pengembang bertanya-tanya sistem file Linux mana yang akan memberi mereka kinerja terbaik untuk aplikasi mereka. Panduan resmi MongoDB tentang penerapan ke produksi merekomendasikan penggunaan sistem file XFS di Linux, terutama saat menggunakan mesin penyimpanan WiredTiger. Namun, rekomendasi tersebut tidak memberi tahu kami mengapa kami harus mengharapkan peningkatan kinerja atau peningkatan kinerja seperti apa yang akan kami alami. Kami memutuskan untuk memahaminya dengan menyelidiki kinerja MongoDB secara kuantitatif di XFS sehingga Anda dapat membandingkan apakah EXT4 adalah pilihan yang lebih baik untuk instans AWS EC2 Anda.
Sistem File XFS
XFS adalah sistem file jurnal 64-bit yang sangat skalabel dan berkinerja tinggi yang dikembangkan di SGI pada tahun 1993 dan di-porting ke Linux pada tahun 2002. XFS mendukung I/O dan sistem file yang sangat paralel dengan ukuran hingga 9 Exabytes, dan hanya mencatat metadata sistem file, bukan data pengguna. Beberapa fitur peningkatan kinerja utama XFS adalah:
- Akses paralel melalui grup alokasi memastikan beberapa utas dapat melakukan I/O secara bersamaan pada volume yang sama.
- Alokasi berbasis luas mengurangi fragmentasi, ukuran metadata, dan meningkatkan performa I/O dengan mengizinkan operasi I/O yang lebih sedikit dan lebih besar.
- Alokasi yang tertunda meningkatkan kedekatan dan kinerja data. Fragmentasi dikurangi dengan menggabungkan penulisan dan pengalokasian luasan dalam potongan besar, dan file yang ditulis secara acak (seperti yang dipetakan memori) dapat dialokasikan secara berurutan
Ada lebih banyak fitur XFS untuk dijelajahi, dan Anda dapat mempelajari lebih lanjut di situs web XFS dan Panduan Pengguna XFS.
Menjalankan Tes Performa di MongoDB
Seperti yang mungkin telah Anda pelajari di postingan sebelumnya, kami telah menggunakan YCSB untuk membandingkan performa MongoDB, termasuk perbandingan mendetail performa MongoDB yang didukung MMAP di berbagai penyedia cloud. Kami memutuskan untuk menggunakan beban kerja YCSB yang sama dengan yang kami gunakan sebelumnya:Beban Kerja A (Update heavy:50% reads + 50% update). Fase penyisipan beban kerja mengukur kinerja 100% beban kerja tulis, sedangkan fase pemuatan akan mengukur kinerja terhadap beban kerja aktual (50/50% baca/perbarui).
Pengujian kami dijalankan pada driver sinkronisasi MongoDB, dan distro Linux adalah Amazon Linux (4.4.44-39.55.amzn1.x86_64). Kami mengambil MongoDB versi 3.2.10 yang menjalankan WiredTiger untuk pengujian kami karena WT adalah tempat di mana keuntungan yang lebih baik diharapkan dan menjalankan pengujian pada 2 rig perangkat keras yang berbeda:
- Disk berkecepatan tinggi :Instance AWS EC2 c3.large tempat MongoDB menggunakan disk SSD dalam konfigurasi RAID 0 untuk penyimpanan (dipetakan ke ukuran cluster ScaleGrid HighPerfLarge).
- Disk kecepatan sedang :Instance m3.medium AWS EC2 tempat MongoDB menggunakan disk yang disediakan EBS (Elastic Block Store) IOPS ditetapkan pada 300 IOPS (dipetakan ke ukuran cluster ScaleGrid Medium).
Catatan:Segala jenis pengujian kinerja di lingkungan tervirtualisasi harus dilakukan dengan sebutir garam. Tujuan kami di sini bukan untuk membandingkan angka kinerja pada lingkungan ini, tetapi untuk memberikan beberapa pengukuran kuantitatif perbedaan kinerja antara EXT4 dan XFS dalam lingkungan virtual yang sama.
Disk SSD Berkecepatan Tinggi
Kami menjalankan pengujian berikut pada rig berperforma tinggi kami:
- Dimasukkan 6 juta merekam di berbagai beban server (dengan memvariasikan jumlah utas klien YCSB).
- Menjalankan beban kerja pada jumlah operasi 10 juta catatan di berbagai beban server.
Hasil Performa Disk SSD
Karakteristik throughput/latency untuk penyisipan record 6M pada konfigurasi performa tinggi:
Karakteristik throughput/latensi untuk 10 juta operasi tulis/update pada konfigurasi performa tinggi:
Pengamatan Disk SSD
- XFS sangat cepat selama fase penyisipan dan eksekusi beban kerja. Pada jumlah utas yang lebih rendah, ini 50% lebih cepat daripada EXT4. Saat beban meningkat, kedua sistem file dibatasi oleh throughput perangkat keras yang mendasarinya, tetapi XFS masih mempertahankan keunggulannya.
- Latensi untuk XFS dan EXT4 sebanding di kedua proses. Perhatikan bahwa semua angka dalam detik mikro.
Disk IOPS yang Disediakan EBS lebih lambat (300 IOPS)
Tes berikut dijalankan pada rig kinerja berukuran sedang kami:
- Dimasukkan 3 juta merekam di berbagai beban server (dengan memvariasikan jumlah utas klien YCSB).
- Menjalankan beban kerja pada jumlah operasi 5 juta catatan di berbagai beban server.
Mengingat pengalaman kami dalam konfigurasi kelas atas, kami berharap XFS juga memiliki keunggulan yang layak dalam rig ini.
Hasil Performa Disk IOPS
Karakteristik throughput/latency untuk penyisipan record 3M pada konfigurasi medium:
Karakteristik throughput/latensi untuk operasi penulisan/pembaruan 5 juta pada konfigurasi medium:
Pengamatan Disk IOPS
- XFS sebanding, meskipun sedikit di belakang EXT4 pada konfigurasi ukuran sedang. Tampaknya pada tingkat sumber daya sistem ini, optimalisasi kinerja XFS tidak benar-benar membuat perbedaan. Ini adalah pengamatan penting jika Anda mempertimbangkan untuk men-deploy XFS pada instance yang lebih kecil dengan harapan meningkatkan performa.
XFS vs EXT4 di AWS EC2
Dalam hal kinerja, XFS memang merupakan pengganda kekuatan ketika dipasangkan dengan disk berkecepatan tinggi yang dapat dimanfaatkan secara nyata. Untuk sistem kelas bawah hingga menengah, tampaknya tidak dapat berbuat banyak untuk meningkatkan kinerja Anda.