Versi baru menstabilkan implementasi penyimpanan "
Extstore memungkinkan Anda menggunakan SSD/Flash drive untuk memperluas ukuran cache. Seperti halnya RAM, penyimpanan Flash tidak permanen dan diatur ulang saat restart. Ruang lingkup mode baru ini adalah untuk memastikan penyimpanan data besar yang efisien. Saat menggunakan "extstore", kunci dan metadata, seperti sebelumnya, hanya disimpan di RAM, tetapi data besar yang terkait dengan kunci, yang ukurannya melebihi ambang batas yang ditetapkan, disimpan di penyimpanan eksternal, dan hanya penunjuk yang tersisa di RAM.
Jika kunci dikaitkan dengan data kecil, maka Memcached berfungsi seperti biasa, menyimpan data di memori dan tidak mengakses penyimpanan eksternal. Jika ada banyak memori bebas, maka data yang paling dibutuhkan juga dapat ditempatkan sepenuhnya di cache di RAM (misalnya, Anda dapat menentukan bahwa hanya objek yang lebih besar dari 1024 byte yang belum diakses selama 3600 detik yang disetel ulang ke Flash ).
Implementasinya dioptimalkan untuk memastikan kinerja maksimum dan beban CPU minimal, dengan mengorbankan efisiensi penyimpanan (fragmentasi tingkat tinggi). Untuk memperpanjang umur Flash drive, data di-buffer dan dipindahkan ke penyimpanan secara berurutan. Untuk menyimpan status cache di antara restart, Anda dapat menggunakan kemampuan yang muncul di rilis 1.5.18 untuk membuang dump cache ke file. Pada permulaan berikutnya, Anda dapat memulihkan cache dari file ini untuk menghilangkan puncak beban pada pemroses konten karena cache kosong (cache segera menjadi βhangatβ).
Perubahan penting kedua di Memcached 1.6 adalah pengerjaan ulang kode komunikasi jaringan, yang disesuaikan untuk memproses permintaan batch secara otomatis dalam satu panggilan sistem. Sebelumnya, ketika mengirimkan beberapa perintah GET dalam satu paket TCP, memcached akan mengirimkan hasilnya dengan panggilan sistem terpisah. Di Memcached 1.6, respons dikumpulkan dan dikembalikan dengan mengirimkan satu panggilan sistem. Hasilnya, kini terdapat rata-rata 1.5 kunci per panggilan sistem, yang dalam pengujian menunjukkan pengurangan beban CPU hingga 25% dan pengurangan latensi hingga beberapa persen.
Desain ulang subsistem jaringan juga memungkinkan peralihan ke alokasi buffer dinamis sesuai kebutuhan, alih-alih menetapkan buffer secara statis. Pengoptimalan ini mengurangi konsumsi memori saat menunggu perintah baru melalui koneksi yang dibuat klien dari 4.5 KB menjadi 400-500 byte, dan juga memungkinkan untuk menghilangkan banyak panggilan ke malloc, realloc, dan gratis, yang menyebabkan fragmentasi memori yang tidak perlu pada sistem dengan jumlah koneksi yang banyak. Setiap thread pekerja kini menangani kumpulan buffer baca dan tulisnya sendiri untuk koneksi klien aktif. Untuk menyesuaikan ukuran buffer ini
opsi β-o resp_obj_mem_limit=Nβ dan β-o read_buf_mem_limt=Nβ disediakan.
Cabang 1.6 juga mengumumkan penghentian
Sumber: opennet.ru