Facebook-ը ներկայացրել է TMO մեխանիզմը, որը թույլ է տալիս պահպանել սերվերների հիշողության 20-32%-ը

Facebook-ի (Ռուսաստանի Դաշնությունում արգելված) ինժեներները զեկույց են հրապարակել անցյալ տարվա TMO (Transparent Memory Offloading) տեխնոլոգիայի ներդրման մասին, որը թույլ է տալիս զգալի խնայողություններ անել RAM-ում սերվերների վրա՝ աշխատանքի համար չպահանջվող երկրորդական տվյալները տեղափոխելով ավելի էժան կրիչներ, օրինակ՝ NVMe: SSD - սկավառակներ. Facebook-ը գնահատում է, որ TMO-ի օգտագործումը կարող է խնայել RAM-ի 20-ից 32%-ը յուրաքանչյուր սերվերի վրա: Լուծումը նախատեսված է ենթակառուցվածքներում օգտագործելու համար, որտեղ հավելվածներն աշխատում են մեկուսացված տարաներում: TMO-ի միջուկի բաղադրիչներն արդեն ներառված են Linux միջուկում:

Linux միջուկի կողմից տեխնոլոգիան աջակցվում է PSI (Pressure Stall Information) ենթահամակարգով, որը հասանելի է 4.20 թողարկումից սկսած: PSI-ն արդեն օգտագործվում է տարբեր ցածր հիշողության մշակիչներում և թույլ է տալիս վերլուծել տեղեկատվությունը տարբեր ռեսուրսների (CPU, հիշողություն, I/O) ձեռքբերման սպասման ժամանակի մասին: PSI-ի միջոցով օգտագործողի տարածքի պրոցեսորները կարող են ավելի ճշգրիտ գնահատել համակարգի բեռնվածության մակարդակները և դանդաղեցման օրինաչափությունները՝ թույլ տալով անոմալիաները վաղ հայտնաբերել, նախքան դրանք նկատելի ազդեցություն կունենան կատարողականի վրա:

Օգտվողի տարածքում TMO-ն տրամադրվում է Senpai բաղադրիչի կողմից, որը cgroup2-ի միջոցով դինամիկ կերպով կարգավորում է հավելվածի բեռնարկղերի հիշողության սահմանը՝ հիմնվելով PSI-ից ստացված տվյալների վրա: Senpai-ն վերլուծում է PSI-ի միջոցով ռեսուրսների պակասի առաջացման նշանները, գնահատում է հավելվածների զգայունությունը հիշողության հասանելիության դանդաղեցման նկատմամբ և փորձում է որոշել կոնտեյների կողմից պահանջվող հիշողության նվազագույն չափը, որի դեպքում շահագործման համար պահանջվող տվյալները մնում են RAM-ում և ուղեկցող: տվյալները, որոնք տեղավորվել են ֆայլի քեշում կամ ուղղակիորեն չեն օգտագործվում այս պահին, դուրս են մղվում փոխանակման միջնորմ:

Facebook-ը ներկայացրել է TMO մեխանիզմը, որը թույլ է տալիս պահպանել սերվերների հիշողության 20-32%-ը

Այսպիսով, TMO-ի էությունն այն է, որ գործընթացները հիշողության սպառման առումով խիստ դիետա պահելն է՝ ստիպելով փոխանակել չօգտագործված հիշողության էջերը, որոնց վտարումը էապես չի ազդում աշխատանքի վրա (օրինակ՝ կոդով էջերը, որոնք օգտագործվում են միայն սկզբնավորման ժամանակ և մեկանգամյա օգտագործման համար։ տվյալները սկավառակի քեշում): Ի տարբերություն հիշողության ճնշմանն ի պատասխան փոխանակման բաժանման տեղեկատվության արտաքսման, TMO-ում տվյալները դուրս են մղվում՝ հիմնվելով պրոակտիվ կանխատեսման վրա:

Վտարման չափանիշներից է 5 րոպե հիշողության էջ մուտք գործելու բացակայությունը։ Նման էջերը կոչվում են սառը հիշողության էջեր և միջինում կազմում են հավելվածների հիշողության մոտ 35%-ը (կախված հավելվածի տեսակից՝ 19%-ից մինչև 65%)։ Preemption-ը հաշվի է առնում անանուն հիշողության էջերի հետ կապված գործունեությունը (հավելվածի կողմից հատկացված հիշողություն) և ֆայլերի քեշավորման համար օգտագործվող հիշողությունը (հատկացված միջուկի կողմից): Որոշ հավելվածներում հիմնական սպառումը անանուն հիշողությունն է, բայց մյուսներում ֆայլի քեշը նույնպես կարևոր է: Քեշի վտարման անհավասարակշռությունից խուսափելու համար TMO-ն օգտագործում է նոր paging ալգորիթմ, որը համաչափորեն վտարում է անանուն էջերը և ֆայլի քեշի հետ կապված էջերը:

Հազվադեպ օգտագործվող էջերը դանդաղ հիշողության մեջ մղելը էական ազդեցություն չի ունենում աշխատանքի վրա, սակայն կարող է զգալիորեն նվազեցնել ապարատային ծախսերը: Տվյալները լցվում են SSD կրիչներ կամ RAM-ի սեղմված փոխանակման տարածք: Ինչ վերաբերում է մեկ բայթ տվյալների պահպանման արժեքին, ապա NVMe SSD-ի օգտագործումը մինչև 10 անգամ ավելի էժան է, քան RAM-ում սեղմումը:

Facebook-ը ներկայացրել է TMO մեխանիզմը, որը թույլ է տալիս պահպանել սերվերների հիշողության 20-32%-ը


Source: opennet.ru

Добавить комментарий