Az új verzió stabilizálja a tároló megvalósítását "
Az Extstore lehetővé teszi az SSD/Flash meghajtók használatát a gyorsítótár méretének bővítésére. A RAM-hoz hasonlóan a Flash-tárhely sem állandó, és újraindításkor visszaáll. Az új mód célja a nagy adatok hatékony gyorsítótárazásának biztosítása. Az "extstore" használatakor a kulcsok és a metaadatok a korábbiakhoz hasonlóan csak a RAM-ban tárolódnak, de a kulcsokhoz kapcsolódó nagyméretű adatok, amelyek mérete meghaladja a beállított küszöbértéket, külső tárolóban tárolódnak, és csak a mutató marad a RAM-ban.
Ha a kulcs kis adathoz van társítva, akkor a Memcached a szokásos módon működik, az adatokat a memóriában tartja, és nem fér hozzá a külső tárolóhoz. Ha sok a szabad memória, akkor a legszükségesebb adatok teljesen elhelyezhetők a RAM gyorsítótárában (például megadhatja, hogy csak az 1024 bájtnál nagyobb, 3600 másodpercig nem elért objektumok legyenek visszaállítva Flash-re ).
A megvalósítást úgy optimalizálták, hogy biztosítsa a maximális teljesítményt és a minimális CPU-terhelést, a tárolási hatékonyság rovására (nagyfokú töredezettség). A Flash meghajtók élettartamának meghosszabbítása érdekében az adatok pufferelése és tárolása egymás után történik. Az újraindítások közötti gyorsítótár állapotának mentéséhez használhatja az 1.5.18-as kiadásban megjelent képességet a gyorsítótár kiíratásának fájlba való kiírásához. A következő indításkor visszaállíthatja a gyorsítótárat ebből a fájlból, hogy kiküszöbölje a tartalomfeldolgozók terhelési csúcsait a gyorsítótár üressége miatt (a gyorsítótár azonnal „felmelegszik”).
A második fontos változás a Memcached 1.6-ban a hálózati kommunikációs kód átdolgozása volt, amely alkalmas arra, hogy egy rendszerhíváson belül automatikusan feldolgozza a kötegelt kéréseket. Korábban, amikor több GET-parancsot küldtek egyetlen TCP-csomagban, a memcached külön rendszerhívásokkal küldte el az eredményeket. A Memcached 1.6-ban a válaszok összesítése és visszaadása egyetlen rendszerhívás elküldésével történik. Ennek eredményeként most átlagosan 1.5 kulcs van rendszerhívásonként, ami a tesztek során a CPU-terhelés akár 25%-os csökkenését és a várakozási idő több százalékos csökkenését mutatja.
A hálózati alrendszer áttervezése azt is lehetővé tette, hogy a pufferek statikus hozzárendelése helyett szükség szerint dinamikus kiosztásra váltsunk. Ez az optimalizálás 4.5 KB-ról 400-500 bájtra csökkentette a memóriafelhasználást, miközben új parancsokra várt a kliens által létrehozott kapcsolaton keresztül, és lehetővé tette a sok malloc, realloc és free hívás eltávolítását, amelyek a memória szükségtelen töredezettségéhez vezetnek. nagy számú kapcsolattal rendelkező rendszerek. Mostantól minden munkaszál saját olvasási és írási pufferkészletet kezel az aktív ügyfélkapcsolatokhoz. Ezen pufferek méretének beállításához
a „-o resp_obj_mem_limit=N” és „-o read_buf_mem_limt=N” opciók állnak rendelkezésre.
A Branch 1.6 is bejelentette az elavulást
Forrás: opennet.ru