Facebook прадставіў механізм TMO, які дазваляе эканоміць 20-32% памяці на серверах

Інжынеры з кампаніі Facebook (забаронена ў РФ) апублікавалі справаздачу аб укараненні ў мінулым годзе тэхналогіі TMO (Transparent Memory Offloading), якая дазваляе значна эканоміць аператыўную памяць на серверах за кошт выцяснення не патрэбных для выканання працы другасных дадзеных на больш танныя назапашвальнікі, такія як NVMe SSD -дыскі. Па адзнацы Facebook, ужыванне TMO дазваляе эканоміць ад 20 да 32% АЗП на кожным серверы. Рашэнне разлічана на прымяненне ў інфраструктурах, у якіх прыкладанні запускаюцца ў ізаляваных кантэйнерах. Якія працуюць на боку ядра кампаненты TMO ужо ўключаны ў склад ядра Linux.

На боку ядра Linux праца тэхналогіі забяспечваецца падсістэмай PSI (Pressure Stall Information), якая пастаўляецца пачынальна з выпуску 4.20. PSI ужо прымяняецца ў розных апрацоўшчыках недахопу памяці і дазваляе прааналізаваць інфармацыю аб часе чакання атрымання розных рэсурсаў (CPU, памяць, увод / вывад). Пры дапамозе PSI апрацоўшчыкі ў прасторы карыстальніка могуць больш дакладна ацаніць узровень загружанасці сістэмы і характар ​​запаволення працы, што дазваляе выяўляць адхіленні на самым раннім этапе, калі яны яшчэ прыкметна не адбіваюцца на прадукцыйнасці.

У прасторы карыстача працу TMO забяспечвае кампанент Senpai, які праз cgroup2 дынамічна карэктуе абмежаванне памяці для кантэйнераў прыкладанняў на падставе дадзеных, атрыманых з PSI. Senpai аналізуе прыкметы пачатку недахопу рэсурсаў праз PSI, ацэньвае адчувальнасць прыкладанняў да запаволення доступу да памяці і спрабуе вызначыць той мінімальна неабходны кантэйнеру памер памяці, пры якім патрабаваныя для працы дадзеныя застаюцца ў АЗП, а спадарожныя дадзеныя, якія аселі ў файлавым кэшы ці напрамую не выкарыстоўваюцца ў дадзены момант, выцясняюцца ў раздзел падпампоўкі.

Facebook прадставіў механізм TMO, які дазваляе эканоміць 20-32% памяці на серверах

Такім чынам, сутнасць TMO у тым, каб трымаць працэсы на строгай дыеце з пункта гледжання спажывання памяці, прымусова дамагаючыся пераносу ў падзел падпампоўкі невыкарыстоўваных старонак памяці, выцясненне якіх прыкметна не ўплывае на прадукцыйнасць (напрыклад, старонкі з кодам, выкарыстоўваным толькі пры ініцыялізацыі, і адзінкава выкарыстоўваныя дадзеныя ў дыскавым кэшы). У адрозненне ад выцяснення інфармацыі ў раздзел падпампоўкі ў адказ на недахоп памяці, у TMO дадзеныя выцясняюцца на падставе папераджальнага прагназавання.

У якасці аднаго з крытэрыяў для выцяснення выкарыстоўваецца адсутнасць звароту да старонкі памяці на працягу 5 хвілін. Падобныя старонкі завуцца лядоўнямі (cold memory page) і ў сярэднім складаюць каля 35% памяці прыкладанняў (у залежнасці ад выгляду прыкладанняў назіраецца роскід ад 19% да 65%). Пры выцясненні ўлічваецца актыўнасць, звязаная з ананімнымі старонкамі памяці (памяць, якая выдаткоўваецца дадаткам) і памяццю, якая выкарыстоўваецца пры кэшаванні файлаў (вылучаецца ядром). У некаторых дадатках асноўнае спажыванне звязана з ананімнай памяццю, але ў іншых вялікае значэнне мае і файлавы кэш. Для таго, каб пазбегнуць дысбалансу пры выцясненні памяці ў кэш, у TMO ужываецца новы алгарытм падпампоўкі, які выцясняе ананімныя старонкі і старонкі, злучаныя з файлавым кэшам, прапарцыйна.

Выцясненне рэдка выкарыстоўваных старонак у павальнейшую памяць не адбіваецца моцна на прадукцыйнасці, але дазваляе значна зменшыць выдаткі на абсталяванне. Дадзеныя выцясняюцца на SSD-назапашвальнікі ці ў сціснутую вобласць падпампоўкі ў аператыўнай памяці. Па кошце захоўвання байта дадзеных ужыванне NVMe SSD да 10 раз танней выкарыстанні сціску ў аператыўнай памяці.

Facebook прадставіў механізм TMO, які дазваляе эканоміць 20-32% памяці на серверах


Крыніца: opennet.ru

Дадаць каментар