De nieuwe versie stabiliseert de implementatie van de opslag "
Met Extstore kunt u SSD/Flash-drives gebruiken om de cachegrootte uit te breiden. Net als bij RAM is Flash-opslag niet permanent en wordt deze gereset bij opnieuw opstarten. De reikwijdte van de nieuwe modus is het garanderen van een efficiënte caching van grote gegevens. Bij gebruik van "extstore" worden sleutels en metagegevens, zoals voorheen, alleen in RAM opgeslagen, maar grote gegevens die aan sleutels zijn gekoppeld, waarvan de grootte een ingestelde drempel overschrijdt, worden opgeslagen in externe opslag en alleen de aanwijzer blijft in RAM.
Als de sleutel is gekoppeld aan kleine gegevens, werkt Memcached zoals gewoonlijk, houdt de gegevens in het geheugen en heeft geen toegang tot externe opslag. Als er veel vrij geheugen is, kunnen de meest benodigde gegevens bovendien volledig in de cache in RAM worden geplaatst (u kunt bijvoorbeeld opgeven dat alleen objecten groter dan 1024 bytes die gedurende 3600 seconden niet zijn geopend, worden gereset naar Flash ).
De implementatie is geoptimaliseerd om maximale prestaties en minimale CPU-belasting te garanderen, wat ten koste gaat van de opslagefficiëntie (hoge mate van fragmentatie). Om de levensduur van Flash-drives te verlengen, worden gegevens opeenvolgend gebufferd en naar de opslag gespoeld. Om de cachestatus tussen herstarts op te slaan, kunt u de mogelijkheid gebruiken die in release 1.5.18 verscheen om een cachedump naar een bestand te dumpen. Bij de volgende keer opstarten kunt u de cache uit dit bestand herstellen om pieken in de belasting van inhoudsprocessors te elimineren als gevolg van het leeg zijn van de cache (de cache wordt onmiddellijk "warm").
De tweede belangrijke verandering in Memcached 1.6 was de herwerking van de netwerkcommunicatiecode, die is aangepast om batchverzoeken binnen één systeemoproep automatisch te verwerken. Voorheen, bij het verzenden van meerdere GET-opdrachten in een enkel TCP-pakket, zou memcached de resultaten verzenden met afzonderlijke systeemaanroepen. In Memcached 1.6 worden de antwoorden samengevoegd en geretourneerd door een enkele systeemoproep te verzenden. Als gevolg hiervan zijn er nu gemiddeld 1.5 sleutels per systeemoproep, wat in tests een vermindering van de CPU-belasting met maximaal 25% en een vermindering van de latentie met enkele procenten aantoont.
Het herontwerp van het netwerksubsysteem maakte het ook mogelijk om indien nodig over te gaan tot dynamische toewijzing van buffers, in plaats van het statisch toewijzen van buffers. Deze optimalisatie verminderde het geheugengebruik tijdens het wachten op nieuwe opdrachten via een door de klant tot stand gebrachte verbinding van 4.5 KB naar 400-500 bytes, en maakte het ook mogelijk om veel oproepen naar malloc, realloc en free te elimineren, wat leidde tot onnodige geheugenfragmentatie op systemen met een groot aantal aansluitingen. Elke werkthread verwerkt nu zijn eigen pool van lees- en schrijfbuffers voor actieve clientverbindingen. Om de grootte van deze buffers aan te passen
de opties “-o resp_obj_mem_limit=N” en “-o read_buf_mem_limt=N” zijn aanwezig.
Tak 1.6 kondigde ook de afschaffing aan van
Bron: opennet.ru