Nova verzija stabilizira implementaciju skladišta "
Extstore vam omogućava da koristite SSD/Flash diskove za proširenje veličine keša. Kao i kod RAM-a, Flash memorija nije trajna i resetuje se nakon ponovnog pokretanja. Opseg novog načina rada je da osigura efikasno keširanje velikih podataka. Kada se koristi "extstore", ključevi i metapodaci se, kao i prije, pohranjuju samo u RAM, ali veliki podaci povezani s ključevima, čija veličina prelazi postavljeni prag, pohranjuju se u eksternu memoriju, a samo pokazivač ostaje u RAM-u.
Ako je ključ povezan s malim podacima, tada Memcached radi kao i obično, čuva podatke u memoriji i ne pristupa vanjskoj memoriji. Ako ima puno slobodne memorije, tada se najpotrebniji podaci mogu dodatno u potpunosti locirati u keš memoriju u RAM-u (na primjer, možete odrediti da se samo objekti veći od 1024 bajta kojima se nije pristupilo 3600 sekundi resetiraju na Flash ).
Implementacija je optimizirana kako bi se osigurale maksimalne performanse i minimalno opterećenje CPU-a, na račun efikasnosti skladištenja (visok nivo fragmentacije). Da bi se produžio vijek trajanja Flash diskova, podaci se u međuspremniku i ispiraju u pohranu uzastopno. Da biste sačuvali stanje predmemorije između ponovnih pokretanja, možete koristiti mogućnost koja se pojavila u izdanju 1.5.18 da dump dump keša u datoteku. Prilikom sljedećeg pokretanja, možete vratiti keš memoriju iz ove datoteke kako biste eliminirali vrhove opterećenja na procesorima sadržaja zbog toga što je keš prazan (keš memorija odmah postaje „topla“).
Druga važna promjena u Memcachedu 1.6 bila je prerada mrežnog komunikacionog koda, koji je prilagođen za automatsku obradu paketnih zahtjeva unutar jednog sistemskog poziva. Ranije, kada je slao više GET komandi u jednom TCP paketu, memcached bi slao rezultate sa zasebnim sistemskim pozivima. U Memcachedu 1.6, odgovori se agregiraju i vraćaju slanjem jednog sistemskog poziva. Kao rezultat, sada postoji u prosjeku 1.5 ključeva po sistemskom pozivu, što u testovima pokazuje smanjenje opterećenja CPU-a do 25% i smanjenje kašnjenja za nekoliko posto.
Redizajn mrežnog podsistema je također omogućio prelazak na dinamičku dodjelu bafera po potrebi, umjesto statičkog dodjeljivanja bafera. Ova optimizacija je smanjila potrošnju memorije dok se čekaju nove komande putem konekcije koju je uspostavio klijent sa 4.5 KB na 400-500 bajtova, a također je omogućila da se riješite mnogih poziva na malloc, realloc i free, što dovodi do nepotrebne fragmentacije memorije na sistemi sa velikim brojem priključaka. Svaka radna nit sada rukuje svojim vlastitim skupom bafera za čitanje i pisanje za aktivne klijentske veze. Za podešavanje veličine ovih bafera
dostupne su opcije “-o resp_obj_mem_limit=N” i “-o read_buf_mem_limt=N”.
Grana 1.6 je također najavila zastarjelost
izvor: opennet.ru