Новата версия стабилизира внедряването на хранилището "
Extstore ви позволява да използвате SSD/флаш устройства за разширяване на размера на кеша. Както при RAM, флаш паметта не е постоянна и се нулира при рестартиране. Обхватът на новия режим е да осигури ефективно кеширане на големи данни. Когато използвате "extstore", ключовете и метаданните, както и преди, се съхраняват само в RAM, но големи данни, свързани с ключове, чийто размер надвишава зададен праг, се съхраняват във външно хранилище и само указателят остава в RAM.
Ако ключът е свързан с малки данни, тогава Memcached работи както обикновено, запазва данните в паметта и няма достъп до външна памет. Ако има много свободна памет, тогава най-необходимите данни могат допълнително да бъдат напълно разположени в кеша в RAM (например, можете да укажете, че само обекти, по-големи от 1024 байта, които не са били достъпни за 3600 секунди, се нулират към Flash ).
Внедряването е оптимизирано, за да осигури максимална производителност и минимално натоварване на процесора, за сметка на ефективността на съхранението (високо ниво на фрагментация). За да се удължи живота на флаш устройствата, данните се буферират и изхвърлят в хранилището последователно. За да запазите състоянието на кеша между рестартирането, можете да използвате възможността, която се появи във версия 1.5.18, за да изхвърлите дъмп на кеша във файл. При следващото стартиране можете да възстановите кеша от този файл, за да елиминирате пиковете в натоварването на процесорите за съдържание поради това, че кешът е празен (кешът веднага става „топъл“).
Втората важна промяна в Memcached 1.6 беше преработката на кода за мрежова комуникация, който е адаптиран да обработва автоматично пакетни заявки в рамките на едно системно повикване. Преди това, когато изпращаше множество GET команди в един TCP пакет, memcached изпращаше резултатите с отделни системни извиквания. В Memcached 1.6 отговорите се агрегират и връщат чрез изпращане на едно системно повикване. В резултат на това вече има средно 1.5 ключа на системно повикване, което при тестове демонстрира намаляване на натоварването на процесора с до 25% и намаляване на латентността с няколко процента.
Редизайнът на мрежовата подсистема също направи възможно преминаването към динамично разпределение на буфери, ако е необходимо, вместо статично присвояване на буфери. Тази оптимизация намали потреблението на памет при изчакване на нови команди чрез връзка, установена от клиента, от 4.5 KB до 400-500 байта и също направи възможно премахването на много извиквания на malloc, realloc и free, които водят до ненужно фрагментиране на паметта на системи с голям брой връзки. Всяка работна нишка вече обработва свой собствен пул от буфери за четене и запис за активни клиентски връзки. За да регулирате размера на тези буфери
предоставени са опциите „-o resp_obj_mem_limit=N“ и „-o read_buf_mem_limt=N“.
Клон 1.6 също обяви оттеглянето на
Източник: opennet.ru