Yeni sürüm, depolamanın uygulanmasını stabilize ediyor "
Extstore, önbellek boyutunu genişletmek için SSD/Flash sürücüleri kullanmanıza olanak tanır. RAM'de olduğu gibi Flash depolama da kalıcı değildir ve yeniden başlatıldığında sıfırlanır. Yeni modun kapsamı büyük verilerin verimli bir şekilde önbelleğe alınmasını sağlamaktır. "Extstore" kullanıldığında, anahtarlar ve meta veriler daha önce olduğu gibi yalnızca RAM'de saklanır, ancak boyutu belirlenmiş bir eşiği aşan anahtarlarla ilişkili büyük veriler harici depolamada saklanır ve yalnızca işaretçi RAM'de kalır.
Anahtar küçük verilerle ilişkilendirilmişse Memcached her zamanki gibi çalışır, verileri bellekte tutar ve harici depolamaya erişmez. Çok fazla boş bellek varsa, en çok ihtiyaç duyulan veriler ek olarak RAM'deki önbellekte tamamen yerleştirilebilir (örneğin, yalnızca 1024 bayttan büyük ve 3600 saniye boyunca erişilmeyen nesnelerin Flash'a sıfırlanmasını belirtebilirsiniz) ).
Uygulama, depolama verimliliğinden (yüksek seviyede parçalanma) ödün vererek maksimum performans ve minimum CPU yükünü sağlayacak şekilde optimize edilmiştir. Flash sürücülerin ömrünü uzatmak için veriler sırayla ara belleğe alınır ve depolamaya aktarılır. Yeniden başlatmalar arasında önbellek durumunu kaydetmek için, 1.5.18 sürümünde görünen, önbellek dökümünü bir dosyaya boşaltma özelliğini kullanabilirsiniz. Bir sonraki başlatmada, önbelleğin boş olması nedeniyle içerik işlemcilerindeki yükteki ani artışları ortadan kaldırmak için önbelleği bu dosyadan geri yükleyebilirsiniz (önbellek hemen "sıcak" hale gelir).
Memcached 1.6'daki ikinci önemli değişiklik, toplu istekleri tek bir sistem çağrısında otomatik olarak işleyecek şekilde uyarlanan ağ iletişim kodunun yeniden işlenmesiydi. Önceden, tek bir TCP paketinde birden fazla GET komutu gönderilirken memcached, sonuçları ayrı sistem çağrılarıyla gönderiyordu. Memcached 1.6'da yanıtlar toplanır ve tek bir sistem çağrısı gönderilerek döndürülür. Sonuç olarak, artık sistem çağrısı başına ortalama 1.5 anahtar bulunmaktadır; bu, testlerde CPU yükünde %25'e kadar bir azalma ve gecikmede de yüzde birkaç oranında bir azalma olduğunu göstermektedir.
Ağ alt sisteminin yeniden tasarlanması, arabelleklerin statik olarak atanması yerine gerektiğinde arabelleklerin dinamik olarak tahsis edilmesine geçilmesini de mümkün kıldı. Bu optimizasyon, istemci tarafından kurulan bir bağlantı üzerinden yeni komutları beklerken bellek tüketimini 4.5 KB'tan 400-500 bayta düşürdü ve ayrıca malloc, realloc ve free'ye yapılan birçok çağrıdan kurtulmayı mümkün kıldı ve bu da gereksiz bellek parçalanmasına yol açtı. Çok sayıda bağlantıya sahip sistemler. Artık her çalışan iş parçacığı, etkin istemci bağlantıları için kendi okuma ve yazma arabellek havuzunu yönetiyor. Bu arabelleklerin boyutunu ayarlamak için
“-o resp_obj_mem_limit=N” ve “-o read_buf_mem_limt=N” seçenekleri sağlanmaktadır.
Şube 1.6 da kullanımdan kaldırıldığını duyurdu
Kaynak: opennet.ru