Նոր տարբերակը կայունացնում է պահեստի իրականացումը »
Extstore-ը թույլ է տալիս օգտագործել SSD/Flash կրիչներ՝ քեշի չափն ընդլայնելու համար: Ինչպես RAM-ի դեպքում, Flash-ի պահեստը մշտական չէ և վերագործարկվելուց հետո վերականգնվում է: Նոր ռեժիմի շրջանակը մեծ տվյալների արդյունավետ քեշավորում ապահովելն է: «extstore»-ն օգտագործելիս ստեղները և մետատվյալները, ինչպես նախկինում, պահվում են միայն RAM-ում, սակայն բանալիների հետ կապված մեծ տվյալներ, որոնց չափը գերազանցում է սահմանված շեմը, պահվում է արտաքին պահեստում, և միայն ցուցիչը մնում է RAM-ում:
Եթե բանալին կապված է փոքր տվյալների հետ, ապա Memcached-ը աշխատում է ինչպես միշտ, պահում է տվյալները հիշողության մեջ և չի մուտք գործում արտաքին պահեստ: Եթե կա շատ ազատ հիշողություն, ապա առավել անհրաժեշտ տվյալները կարող են լրացուցիչ տեղակայվել RAM-ի քեշում (օրինակ, կարող եք նշել, որ միայն 1024 բայթից ավելի մեծ օբյեկտները, որոնց հասանելի չեն եղել 3600 վայրկյան, վերականգնվում են Flash-ի: ).
Իրականացումը օպտիմիզացված է՝ ապահովելու առավելագույն կատարումը և պրոցեսորի նվազագույն բեռնվածությունը՝ ի հաշիվ պահեստավորման արդյունավետության (հատվածության բարձր մակարդակ): Ֆլեշ կրիչների ծառայության ժամկետը երկարացնելու համար տվյալները պահվում են բուֆերում և հաջորդաբար տեղափոխվում պահեստ: Քեշի վիճակը վերագործարկումների միջև պահպանելու համար կարող եք օգտագործել 1.5.18 թողարկման մեջ հայտնված հնարավորությունը՝ քեշի աղբարկղը ֆայլի մեջ նետելու համար: Հաջորդ գործարկման ժամանակ դուք կարող եք վերականգնել քեշը այս ֆայլից՝ բովանդակության պրոցեսորների բեռնվածության գագաթնակետերը վերացնելու համար՝ քեշի դատարկ լինելու պատճառով (քեշն անմիջապես դառնում է «տաք»):
Memcached 1.6-ի երկրորդ կարևոր փոփոխությունը ցանցային հաղորդակցության կոդի վերամշակումն էր, որը հարմարեցված է խմբաքանակի հարցումները ավտոմատ կերպով մշակելու մեկ համակարգային զանգի ընթացքում: Նախկինում GET մի քանի հրամաններ ուղարկելիս մեկ TCP փաթեթում, memcached-ը արդյունքներն ուղարկում էր առանձին համակարգային զանգերով: Memcached 1.6-ում պատասխանները հավաքվում և վերադարձվում են՝ ուղարկելով մեկ համակարգային զանգ: Արդյունքում, այժմ կա միջինը 1.5 ստեղն մեկ համակարգային զանգի համար, ինչը թեստերում ցույց է տալիս CPU-ի բեռնվածության կրճատում մինչև 25% և ուշացման մի քանի տոկոսով նվազում:
Ցանցի ենթահամակարգի վերանախագծումը նաև հնարավորություն տվեց անցնել բուֆերների դինամիկ տեղաբաշխմանը ըստ անհրաժեշտության՝ ստատիկ կերպով բուֆերներ նշանակելու փոխարեն: Այս օպտիմիզացումը նվազեցրեց հիշողության սպառումը հաճախորդի կողմից հաստատված կապի միջոցով նոր հրամանների սպասելիս՝ 4.5 ԿԲ-ից մինչև 400-500 բայթ, ինչպես նաև հնարավորություն տվեց ազատվել բազմաթիվ զանգերից դեպի malloc, realloc և free, որոնք հանգեցնում են հիշողության անհարկի մասնատմանը: համակարգեր մեծ թվով միացումներով: Յուրաքանչյուր աշխատանքային շղթա այժմ մշակում է կարդալու և գրելու բուֆերների իր հավաքածուն ակտիվ հաճախորդի միացումների համար: Այս բուֆերների չափը կարգավորելու համար
տրամադրված են «-o resp_obj_mem_limit=N» և «-o read_buf_mem_limt=N» տարբերակները:
Մասնաճյուղ 1.6-ը նույնպես հայտարարել է չեղյալ հայտարարելու մասին
Source: opennet.ru