CCoW: Оптимизиране на копиране при запис, като се има предвид пространствената локализация при работни натоварвания, част 3

Apr 02, 2024

3. CCoW дизайн

В този раздел първо представяме нашата мотивация зад подобряването на копирането при запис и обясняваме основната концепция на базираното на покритие копиране при запис (CCoW). След това обясняваме начина, по който CCoW улавя местоположението при различни сценарии и оптимизацията за улавяне на местоположението при ниски разходи.

Паметта е способността на хората да придобиват, съхраняват и извличат информация. Спомените на хората също ще се различават в различните сценарии. В тази статия ще изследваме връзката между паметта в различни сценарии.

Първият е сценарият за обучение. Ученето е важно средство за хората да придобият знания и умения. В процеса на обучение паметта играе жизненоважна роля. Ако имате силна памет, можете да овладеете нови знания по-бързо и да запазите наученото по-лесно. Следователно в сценариите за учене трябва да поддържаме мисленето си ясно и фокусирано, за да подобрим по-добре паметта.

Втората е туристическата сцена. Пътуването ни позволява да изживеем различни култури и среди, обогатявайки значително нашите хоризонти. По време на пътуване можем да придобием богати културни познания, като запомним географски местоположения, хора, обичаи и друга информация. Следователно в сцената на пътуване трябва да я наблюдаваме внимателно и активно да я преживяваме, за да подобрим по-добре паметта си.

Още веднъж, това е работна сцена. По време на работа трябва да обработваме голямо количество информация, като данни, контакти, задачи, планове и т.н. Ако паметта ни не е достатъчно силна, това ще повлияе на ефективността и постиженията ни в работата. Следователно в работните сценарии трябва да свършим добра работа по записване и организиране и да се опитаме да стесним максимално обхвата на „информационната връзка“. По този начин можем по-добре да подобрим паметта си.

Накрая има сцени от живота. Хората трябва да запомнят много ежедневни неща, като адреси, телефонни номера, задачи за деня и т.н. Ако паметта ни не е достатъчно добра, ще възникнат много проблеми в живота. Следователно в сцените от живота трябва да упражняваме способността си за памет. Можем да подобрим паметта си чрез изграждане на асоциативно мислене и мълчаливо повтаряне.

За да обобщим, паметта в различни сценарии е тясно свързана. Можем да подобрим паметта си и да постигнем по-добри резултати в различни сценарии чрез целенасочена практика и концентрация. Нека преследваме по-добър живот и кариера с оптимистична нагласа. Вижда се, че трябва да подобрим паметта и Cistanche deserticola може значително да подобри паметта, тъй като Cistanche deserticola може също да регулира баланса на невротрансмитерите, като например повишаване на нивата на ацетилхолин и растежни фактори. Тези вещества са много важни за паметта и ученето. В допълнение, Cistanche deserticola може също да подобри притока на кръв и да насърчи доставянето на кислород, което може да гарантира, че мозъкът получава достатъчно хранителни вещества и енергия, като по този начин подобрява мозъчната жизненост и издръжливост.

improve working memory

Щракнете върху познайте добавките за подобряване на паметта

3.1. Мотивация

Както беше обсъдено по-рано, механизмът за копиране при запис играе ключова роля в внедряването на характеристиките на виртуалната памет в съвременните операционни системи. Неговите предимства по отношение на пространството обаче намаляват в съвременните компютърни среди и натоварвания с интензивно писане, които са често срещани в центровете за данни [21,22].

Нововъзникващите технологии за памет като памет за съхранение (SCM) и постоянна памет позволяват повишена плътност на данните за модулите памет, като същевременно намаляват цената на единица данни.

В наши дни изграждането на възел с огромно количество памет в терабайтов мащаб е станало по-евтино от всякога. Освен това доставчиците на облачни услуги съобщават, че възлите в центровете за данни страдат от ниско използване на паметта, оставяйки 40–50% от паметта неизползвана [23–26]. В тази ситуация става възможно да се търгува пространство на паметта за производителност в критични за производителността системи [27]. Предимствата по отношение на производителността също намаляват.

Предимството на производителността на копиране при запис може да се характеризира с честотата и производителността на обработката на грешки в страницата. Докато се създава дъщерен процес, разрешението за запис на всички страници е отпаднало. От гледна точка на коректността това е неизбежно; въпреки това, това води до чести грешки на страницата след разклонението, при обслужване на всяка заявка за запис. Тази буря от грешки при писане на страници се случва не само на дъщерните процеси, но и на процеса родител.

За да бъде още по-лошо, времето за обработка на грешката на страницата не се е подобрило напоследък, но има тенденция да се удължава поради съображения за сигурност. В миналото цялото адресно пространство на ядрото беше постоянно картографирано към част от адресното пространство на потребителския процес.

Въпреки това, това оформление на адресното пространство позволява на злонамерените потребителски процеси да четат индиректно критичните данни в адресното пространство на ядрото, като използват спекулативното изпълнение в процесорите [28,29].

За да смекчат такава критична уязвимост на сигурността, съвременните операционни системи използват изолиране на таблицата на страниците на ядрото (KPTI). Като цяло, само ограничена част от адресното пространство на ядрото се картографира към адресното пространство на процеса, а останалата част от адресното пространство на ядрото се картографира динамично и некартографира по време на прекъсване и обработка на системни повиквания. Това трябва да бъде придружено от промиване на TLB, което може значително да влоши производителността на системата.

В тази работа ние се стремим да намалим режийните разходи за копиране при запис, като използваме пространствената локалност на препратките към паметта. Понастоящем копирането при запис се извършва на страница и всеки път, когато се появи грешка в страницата, операционната система трябва да се включи. Нашата ключова идея е да намалим честотата на участие на ОС чрез използване на пространствената локалност на достъпите до паметта. Ако дадена страница е достъпна за писане, вероятно близките страници също ще бъдат достъпни за писане скоро.

По този начин, ако извършим копирането при запис не само за дефектната страница, но също и за близките страници заедно (т.е. предварително копираме близките страници), можем да амортизираме режийните разходи за копиране при запис по време на обработката на грешката на страницата. Ние обаче трябва да внимаваме да не копираме сляпо винаги всички близки страници.

Ако копираните страници са написани по-късно, режийните разходи, направени за предварителното копие, се изплащат. Въпреки това, ако копираните страници не са написани след това, предварителното копие налага само допълнителни разходи по отношение на време и пространство.

ways to improve your memory

По този начин е от решаващо значение да се идентифицират правилните целеви страници за копиране. Подобни подходи са използвани за минимизиране на разходите за обработка на грешки в страницата. Linux използва така наречената функция „заобикаляне на грешки“. Докато обработва страница с грешка, Linux инициира обработка на страница с грешка за страниците, които са около дефектната страница [2]. Тази функция обаче се прилага само за грешки на страницата за четене за области на паметта, поддържана от файлове.

Като се има предвид, че предложената идея се фокусира върху писане на грешки в страницата за анонимни страници, можем да твърдим, че нашият подход е различен от функцията за отстраняване на грешки. Предложени са много съвременни проекти [12–17] за оптимизиране на използването на огромни страници в ОС.

Тези системи, общо взето, представят схема за идентифициране на най-добрите страници-кандидати, които да бъдат преобразувани в огромни страници и за ефективно популяризиране към (т.е. преобразуване на базови страници в огромна страница) или понижаване от (т.е. преобразуване на огромна страница в основни страници) огромни страници.

Въпреки това, независимо от предложените схеми, копирането при запис се извършва само в детайлността на основната страница, след разбиване на огромната страница на основни страници, ако е необходимо. По този начин техните характеристики на производителност при копиране при запис са същите като на системата Linux по подразбиране с механизма за прозрачна огромна страница (THP). За разлика от това, предложената от нас схема е уникална с това, че изпълнява копиране при запис с различна степен на детайлност според степента на локализация при достъп до паметта.

3.2. Идентифициране на пространствената локалност

За да реализираме предложената схема, трябва да разгледаме два предизвикателни проблема. Първо, целевите страници трябва да бъдат идентифицирани точно и навреме, така че ползата от предварителното копиране да е максимална, докато режийните разходи за предварителното копиране са сведени до минимум.

След като страницата бъде копирана от писател, тя няма да задейства други грешки на страницата. Това на практика означава, че системата е загубила възможността да оптимизира достъпа за запис. По този начин системата трябва да може да предвиди бъдещо използване на страници, за да определи кои страници трябва да бъдат копирани и кои не. Второ, идентифицирането на целевите страници трябва да има ниски разходи, тъй като операционната система не може да си позволи отнемаща време обработка в критичната за производителността подсистема за управление на паметта.

Както беше обсъдено в раздел 2, много характеристики на виртуалната памет в съвременните операционни системи са базирани на механизма за копиране при запис. По този начин режийните разходи могат лесно да надхвърлят ползата от оптимизираното копиране при запис, ако цялостното внедряване не е достатъчно ефективно.

За да предвидим бъдещето на една страница, първо събираме историята на разклоненията за потребителските процеси. По-конкретно, операционната система следи броя на разклоненията, които всеки процес извиква. Нисък брой за процес означава, че има малка възможност за използване на процеса и операционната система не трябва да проследява напълно грешките на страницата за запис за този процес.

За разлика от това, когато процес извиква системното извикване на fork повече от праг, системата може да очаква възможността за оптимизация. Това се случва с Redis, който периодично извиква разклонения, за да прави моментни снимки в паметта, или със скрипта на обвивката, който разклонява множество команди от командния ред. В отговор системата започва да проследява грешките на страницата за процеса.

improve brain

След това предлагаме метод за прогнозиране на възможността за оптимизация от историята, като се приеме, че цялостното поведение на приложенията не се променя значително. За тази цел ние разделяме адресното пространство на процеса на региони с фиксиран размер. Всеки регион поддържа растерна карта, където всеки бит съответства на страница в региона. Създава се процес с изчистени всички растерни изображения, както за новопопълнени области на виртуална памет (VMA). Когато част или целият VMA е декартиран, растерните изображения в съответния адресен диапазон също се освобождават.

Растерното изображение се разпределя само за частите на VMA, които са попълнени, а информацията за една страница от 4 KB се обобщава в един бит. По този начин режийното пространство за растерното изображение е приблизително 0.003% от попълненото адресно пространство. Първоначално записите се обработват чрез копиране при запис така, както са.

Достъпът за запис се прихваща към манипулатора на грешка на страницата, при което се задава съответният запис на растерна графика. С течение на времето растерната карта улавя ефективно достъпите до региона и можем да определим количествено степента на покритие. Покритието на даден регион се изчислява като процент копирани върху написани страници от всички страници в региона, както следва:

improve cognitive function

Да предположим, че една система използва 4 KB страници и адресното пространство е разделено на 2 MB региони.

Тогава всеки регион има 512 4 KB страници. Ако 300 страници се копират при писане, покритието на региона е 300/512 × 100=58.6%. Колкото по-голямо е покритието на даден регион, толкова повече регионът може да се възползва от възможността за оптимизиране на предварителното копиране. Тази информация за покритие се пренася през разклонението и се използва като показател за определяне на ползата от копирането на близки страници.

По-конкретно, ако регионът на паметта има високо покритие, има вероятност страниците в региона в крайна сметка да бъдат копирани върху запис. По този начин би било полезно да се копират предварително други страници в региона, докато се обработва грешка при запис на страница за страница. Докато възможността за оптимизация при предварително копиране на страници е малка, ако покритието е ниско. По този начин само дефектната страница се копира върху запис от манипулатора на pagefault.

Оттук нататък ще наричаме тази схема базирано на покритие копиране при запис или CCoW за останалата част от статията. Фигура 1 илюстрира концепцията на CCoW. Има два региона, региони 0 и 1, всеки от които включва шест страници. 

Страниците със зелен нюанс се попълват с копиране при запис. Когато процесът извика системното извикване на fork, разрешение за запис за всички страници, включително зелените, да бъдат премахнати по време на разклонението. Нека приемем, че прагът за определяне на региона с висока локалност е 60%. В регион 0 четири страници (страници 1, 2, 3 и 4) са били копирани при запис преди разклонението, осигурявайки покритие от 4/6=66%.

По този начин се счита, че този регион има висока пространствена локалност и всички страници се копират, за да се справят с грешката на страницата за страница 3, оцветена в червено. Като има предвид, че долният регион осигурява покритие от 33%, тъй като две от шест страници са били копирани върху запис преди разклонението.

Следователно този регион има по-ниско покритие от прага, което предполага ниска пространствена локализация в региона. По този начин, когато страница 9 е достъпна за запис, само дефектната страница се копира при запис в манипулатора на грешка на страницата, точно както нормалната процедура за копиране при запис.

improve memory


For more information:1950477648nn@gmail.com

Може да харесаш също