Penanda aras komprehensif yang membandingkan sistem cache dan pangkalan data popular telah mencetuskan perbincangan hangat dalam komuniti pembangun, terutamanya mengenai pilihan visualisasi data dan perbezaan prestasi yang tidak dijangka antara teknologi yang serupa.
Skala Logaritma Menyembunyikan Perbezaan Prestasi Sebenar
Keputusan penanda aras, walaupun menyeluruh dari segi skop, telah menerima kritikan kerana menggunakan penskalaan logaritma dalam graf prestasi mereka. Pilihan visualisasi ini telah menyukarkan pembaca untuk memahami magnitud sebenar perbezaan prestasi antara sistem. Apa yang kelihatan sebagai kelebihan sederhana pada carta logaritma sebenarnya mewakili jurang prestasi yang besar - dengan Memcached mencapai prestasi sehingga tiga kali lebih pantas daripada Redis dalam beberapa senario, walaupun kelihatan hanya sedikit lebih baik dalam graf.
Beberapa ahli komuniti telah menggesa supaya data dipersembahkan semula menggunakan penskalaan linear untuk memberikan gambaran yang lebih jelas tentang perbezaan prestasi dunia sebenar. Maklum balas ini menyerlahkan betapa pentingnya visualisasi data yang betul apabila mempersembahkan penanda aras teknikal kepada komuniti.
Penemuan Prestasi Utama:
- Memcached berbanding Redis : Kelebihan prestasi sehingga 3x untuk Memcached (dikaburkan oleh penskalaan logaritma)
- Valkey berbanding Redis : Prestasi mengatasi secara konsisten disebabkan seni bina berbilang benang
- Garnet : Prestasi saluran paip yang luar biasa walaupun menggunakan pelaksanaan C
- Penskalaan Benang: Prestasi mencapai tahap mendatar sekitar 6-8 benang merentasi kebanyakan sistem
- Kesan Saluran Paip: Peningkatan prestasi yang ketara dengan nilai saluran paip yang lebih tinggi (1, 10, 100, 1000)
Valkey Muncul sebagai Alternatif Redis yang Kuat
Salah satu penemuan paling ketara daripada penanda aras adalah prestasi Valkey yang konsisten mengatasi Redis merentasi pelbagai senario ujian. Kelebihan prestasi ini nampaknya berpunca daripada seni bina berbilang benang Valkey, berbeza dengan reka bentuk benang tunggal Redis. Keputusan ini telah menjana keghairahan dalam kalangan pembangun yang melihat ini sebagai pengesahan untuk fork yang dipacu komuniti yang muncul selepas perubahan pelesenan Redis.
Jurang prestasi antara Valkey dan Redis telah mengejutkan beberapa pemerhati yang menjangkakan hanya perbezaan kecil antara kedua-dua sistem. Walau bagaimanapun, gabungan peningkatan pembiayaan, perhatian pembangun, dan penambahbaikan seni bina telah membolehkan Valkey mendahului pendahulunya dalam ujian piawai ini.
Sistem Yang Diuji:
- Memcache: Penyimpan data nilai-kunci dalam memori (1 juta kunci pada /dev/shm)
- Redis: Penyimpan data dalam memori (1 juta kunci pada /dev/shm)
- Valkey: Cabang Redis dengan seni bina berbilang benang
- Garnet: Cache serasi Redis daripada Microsoft dalam bahasa C
- SQLite: Pangkalan data SQL mematuhi ACID dalam proses (1 ribu kunci dalam /tmp/)
- RocksDB: Penyimpan nilai-kunci kekal daripada Facebook (1 juta kunci pada /dev/shm)
- WiredTiger: Penyimpan nilai-kunci kekal daripada MongoDB (1 juta kunci pada /dev/shm)
![]() |
---|
Repositori GitHub untuk " Cache Benchmarks ", yang merangkumi pelbagai penanda aras teknologi caching, termasuk Valkey dan Redis |
Prestasi Pipeline Luar Biasa Garnet
Mungkin keputusan paling menarik datang daripada Garnet, cache serasi Redis Microsoft yang ditulis dalam C#, yang menunjukkan prestasi luar biasa dalam senario pipeline tinggi. Walaupun dibina pada runtime terurus yang biasanya dikaitkan dengan overhed prestasi, Garnet mencapai keputusan ini melalui teknik pengoptimuman agresif yang mengelakkan pengumpulan sampah dan menggunakan memori tidak terurus secara meluas.
Falsafah reka bentuk sistem melibatkan pengelakan strategik corak C# biasa seperti async/await, sebaliknya memindahkan operasi I/O terus ke benang permintaan rangkaian. Pendekatan ini, walaupun menghasilkan kod C# yang tidak idiomatik, menunjukkan bagaimana kejuruteraan yang teliti boleh mengatasi batasan bahasa yang dianggap.
Berbilang benang: Reka bentuk sistem yang boleh mengendalikan pelbagai tugas secara serentak merentasi benang pemprosesan yang berbeza, biasanya meningkatkan prestasi untuk operasi serentak.
Spesifikasi Persekitaran Ujian:
- CPU: 3.1 GHz 12-Core Intel Xeon W (c8g.8xlarge 32-core ARM64 untuk beberapa ujian)
- Memori: 64 GB 2666 MHz DDR4
- Platform: Linux (Apple Silicon tidak diuji)
- Tempoh Ujian: 30 saat bagi setiap penanda aras
- Operasi: 1,000,000 jumlah operasi dengan 50% nisbah bacaan
Kebimbangan Metodologi Ujian
Maklum balas komuniti juga telah menyerlahkan isu berpotensi dengan metodologi ujian, terutamanya mengenai pilihan protokol dan konfigurasi sistem. Beberapa pakar menyatakan bahawa Memcached diuji menggunakan protokol teks lama dan bukannya protokol binari yang disyorkan, yang boleh memberi kesan kepada keterwakilan keputusan untuk penggunaan moden.
Selain itu, persoalan timbul mengenai tingkah laku platform ujian, dengan dataran prestasi berlaku sekitar 6-8 benang merentasi kebanyakan sistem walaupun berjalan pada pemproses ARM64 32-teras. Ini menunjukkan kemungkinan batasan seni bina atau isu konfigurasi yang mungkin tidak menggambarkan prestasi optimum dunia sebenar.
Penanda aras memberikan pandangan berharga tentang prestasi cache dan pangkalan data, tetapi respons komuniti menekankan kepentingan persembahan data yang jelas dan metodologi ujian yang komprehensif apabila menilai prestasi sistem. Memandangkan teknologi ini terus berkembang, penanda aras sedemikian berfungsi sebagai alat penting untuk pembangun membuat keputusan infrastruktur, dengan syarat keputusan dipersembahkan dan ditafsir dengan betul.
Rujukan: Cache Benchmarks