Nová verzia stabilizuje implementáciu úložiska "
Extstore vám umožňuje použiť SSD/Flash disky na rozšírenie veľkosti vyrovnávacej pamäte. Rovnako ako v prípade pamäte RAM, úložisko Flash nie je trvalé a po reštarte sa resetuje. Cieľom nového režimu je zabezpečiť efektívne ukladanie veľkých dát do vyrovnávacej pamäte. Pri použití „extstore“ sú kľúče a metadáta, ako predtým, uložené iba v RAM, ale veľké dáta spojené s kľúčmi, ktorých veľkosť presahuje nastavený prah, sa ukladajú do externého úložiska a v RAM zostáva iba ukazovateľ.
Ak je kľúč spojený s malými údajmi, potom Memcached funguje ako zvyčajne, uchováva údaje v pamäti a nepristupuje k externému úložisku. Ak je veľa voľnej pamäte, najpotrebnejšie údaje môžu byť navyše úplne umiestnené vo vyrovnávacej pamäti RAM (napríklad môžete určiť, že iba objekty väčšie ako 1024 3600 bajtov, ku ktorým sa počas XNUMX XNUMX sekúnd nepristupovalo, sa obnovia na Flash ).
Implementácia je optimalizovaná tak, aby zabezpečila maximálny výkon a minimálne zaťaženie procesora na úkor efektívnosti úložiska (vysoká úroveň fragmentácie). Na predĺženie životnosti jednotiek Flash sa údaje ukladajú do vyrovnávacej pamäte a postupne sa ukladajú do úložiska. Ak chcete uložiť stav vyrovnávacej pamäte medzi reštartmi, môžete použiť možnosť, ktorá sa objavila vo verzii 1.5.18, na uloženie výpisu vyrovnávacej pamäte do súboru. Pri ďalšom spustení môžete obnoviť vyrovnávaciu pamäť z tohto súboru, aby ste eliminovali špičky v zaťažení procesorov obsahu v dôsledku prázdnej vyrovnávacej pamäte (vyrovnávacia pamäť sa okamžite „zahreje“).
Druhou dôležitou zmenou v Memcached 1.6 bolo prepracovanie kódu sieťovej komunikácie, ktorý je prispôsobený na automatické spracovanie dávkových požiadaviek v rámci jedného systémového volania. Predtým pri odosielaní viacerých príkazov GET v jednom TCP pakete memcached odosielal výsledky so samostatnými systémovými volaniami. V Memcached 1.6 sa odpovede agregujú a vracajú odoslaním jediného systémového volania. Vďaka tomu je teraz na jedno systémové volanie v priemere 1.5 kľúča, čo v testoch preukazuje zníženie záťaže CPU až o 25 % a zníženie latencie o niekoľko percent.
Redizajn sieťového subsystému tiež umožnil prejsť na dynamické prideľovanie vyrovnávacích pamätí podľa potreby namiesto statického prideľovania vyrovnávacích pamätí. Táto optimalizácia znížila spotrebu pamäte pri čakaní na nové príkazy prostredníctvom klientom vytvoreného pripojenia zo 4.5 KB na 400-500 bajtov a tiež umožnila zbaviť sa mnohých volaní malloc, realloc a free, ktoré vedú k zbytočnej fragmentácii pamäte na systémy s veľkým počtom pripojení. Každé pracovné vlákno teraz spracováva svoju vlastnú oblasť vyrovnávacích pamätí na čítanie a zápis pre aktívne pripojenia klientov. Ak chcete upraviť veľkosť týchto vyrovnávacích pamätí
sú poskytnuté možnosti „-o resp_obj_mem_limit=N“ a „-o read_buf_mem_limt=N“.
Pobočka 1.6 tiež oznámila ukončenie podpory
Zdroj: opennet.ru