Sebuah benchmark komprehensif yang membandingkan sistem cache dan database populer telah memicu diskusi signifikan di komunitas developer, terutama seputar pilihan visualisasi data dan perbedaan performa tak terduga antara teknologi serupa.
Skala Logaritmik Menyamarkan Perbedaan Performa Sesungguhnya
Hasil benchmark, meskipun menyeluruh dalam cakupannya, telah mendapat kritik karena menggunakan skala logaritmik dalam grafik performa mereka. Pilihan visualisasi ini membuat pembaca sulit memahami besarnya perbedaan performa aktual antara sistem. Yang tampak sebagai keunggulan sederhana pada grafik logaritmik sebenarnya mewakili kesenjangan performa yang substansial - dengan Memcached berkinerja hingga tiga kali lebih cepat daripada Redis dalam beberapa skenario, meskipun tampak hanya sedikit lebih baik dalam grafik.
Beberapa anggota komunitas telah meminta agar data dipresentasikan ulang menggunakan skala linear untuk memberikan gambaran yang lebih jelas tentang perbedaan performa dunia nyata. Umpan balik ini menyoroti betapa pentingnya visualisasi data yang tepat saat mempresentasikan benchmark teknis kepada komunitas.
Temuan Kinerja Utama:
- Memcached vs Redis: Keunggulan kinerja hingga 3x lipat untuk Memcached (tersamarkan oleh skala logaritmik)
- Valkey vs Redis: Performa yang konsisten lebih unggul berkat arsitektur multithreaded
- Garnet: Kinerja pipeline yang luar biasa meskipun menggunakan implementasi C
- Thread Scaling: Plateau kinerja sekitar 6-8 thread di sebagian besar sistem
- Dampak Pipeline: Peningkatan kinerja yang signifikan dengan nilai pipeline yang lebih tinggi (1, 10, 100, 1000)
Valkey Muncul sebagai Alternatif Redis yang Kuat
Salah satu temuan paling menonjol dari benchmark adalah performa Valkey yang konsisten mengungguli Redis di berbagai skenario pengujian. Keunggulan performa ini tampaknya berasal dari arsitektur multithreaded Valkey , yang kontras dengan desain single-threaded Redis . Hasil ini telah menghasilkan antusiasme di kalangan developer yang melihat ini sebagai validasi untuk fork yang digerakkan komunitas yang muncul setelah perubahan lisensi Redis .
Kesenjangan performa antara Valkey dan Redis telah mengejutkan beberapa pengamat yang mengharapkan hanya perbedaan marginal antara kedua sistem. Namun, kombinasi peningkatan pendanaan, perhatian developer, dan perbaikan arsitektur telah memungkinkan Valkey unggul dari pendahulunya dalam tes standar ini.
Sistem yang Diuji:
- Memcache: Penyimpanan data key-value dalam memori (1 juta kunci pada /dev/shm)
- Redis: Penyimpanan data dalam memori (1 juta kunci pada /dev/shm)
- Valkey: Fork dari Redis dengan arsitektur multithreaded
- Garnet: Cache kompatibel Redis dari Microsoft dalam bahasa C
- SQLite: Database SQL ACID-compliant dalam proses (1 ribu kunci di /tmp/)
- RocksDB: Penyimpanan key-value persisten dari Facebook (1 juta kunci pada /dev/shm)
- WiredTiger: Penyimpanan key-value persisten dari MongoDB (1 juta kunci pada /dev/shm)
![]() |
---|
Repositori GitHub untuk " Cache Benchmarks ", yang mencakup berbagai benchmark teknologi caching, termasuk Valkey dan Redis |
Performa Pipeline Luar Biasa Garnet
Mungkin hasil paling menarik datang dari Garnet , cache kompatibel Redis milik Microsoft yang ditulis dalam C# , yang menunjukkan performa luar biasa dalam skenario high-pipeline. Meskipun dibangun pada managed runtime yang biasanya dikaitkan dengan overhead performa, Garnet mencapai hasil ini melalui teknik optimisasi agresif yang menghindari garbage collection dan menggunakan unmanaged memory secara ekstensif.
Filosofi desain sistem ini melibatkan penghindaran strategis pola C# tipikal seperti async/await, sebaliknya memindahkan operasi I/O langsung ke thread permintaan jaringan. Pendekatan ini, meskipun menghasilkan kode C# yang tidak idiomatis, menunjukkan bagaimana rekayasa yang cermat dapat mengatasi keterbatasan bahasa yang dipersepsikan.
Multithreaded: Desain sistem yang dapat menangani beberapa tugas secara bersamaan di berbagai thread pemrosesan, biasanya meningkatkan performa untuk operasi konkuren.
Spesifikasi Lingkungan Pengujian:
- CPU: 3.1 GHz 12-Core Intel Xeon W (c8g.8xlarge 32-core ARM64 untuk beberapa pengujian)
- Memori: 64 GB 2666 MHz DDR4
- Platform: Linux (Apple Silicon belum diuji)
- Durasi Pengujian: 30 detik per benchmark
- Operasi: 1.000.000 total operasi dengan rasio baca 50%
Kekhawatiran Metodologi Pengujian
Umpan balik komunitas juga menyoroti masalah potensial dengan metodologi pengujian, terutama mengenai pilihan protokol dan konfigurasi sistem. Beberapa ahli mencatat bahwa Memcached diuji menggunakan protokol teks lama daripada protokol biner yang direkomendasikan, yang dapat mempengaruhi representativitas hasil untuk deployment modern.
Selain itu, muncul pertanyaan tentang perilaku platform pengujian, dengan plateau performa terjadi sekitar 6-8 thread di sebagian besar sistem meskipun berjalan pada prosesor ARM64 32-core. Ini menunjukkan kemungkinan keterbatasan arsitektur atau masalah konfigurasi yang mungkin tidak mencerminkan performa dunia nyata yang optimal.
Benchmark ini memberikan wawasan berharga tentang performa cache dan database, tetapi respons komunitas menekankan pentingnya presentasi data yang jelas dan metodologi pengujian komprehensif saat mengevaluasi performa sistem. Seiring teknologi ini terus berkembang, benchmark semacam itu berfungsi sebagai alat penting bagi developer yang membuat keputusan infrastruktur, asalkan hasilnya dipresentasikan dan diinterpretasikan dengan benar.
Referensi: Cache Benchmarks