CCoW: Optimalizing Copy-on-Write med tanke på den romlige lokaliteten i arbeidsbelastninger, del 3

Apr 02, 2024

3. CCoW Design

I denne delen introduserer vi først vår motivasjon bak forbedring av copy-on-write og forklarer det grunnleggende konseptet for dekningsbasert copy-on-write (CCoW). Deretter forklarer vi måten CCoW fanger lokaliteten under forskjellige scenarier og optimaliseringen for å fange lokaliteten med lav overhead.

Minne er menneskers evne til å tilegne seg, lagre og hente informasjon. Folks minner vil også være forskjellige i forskjellige scenarier. I denne artikkelen vil vi utforske forholdet mellom hukommelse i ulike scenarier.

Det første er læringsscenariet. Læring er et viktig middel for mennesker til å tilegne seg kunnskap og ferdigheter. I læringsprosessen spiller hukommelsen en viktig rolle. Hvis du har en sterk hukommelse, kan du mestre ny kunnskap raskere og lettere beholde innlært kunnskap. Derfor, i læringsscenarier, må vi holde vår tenkning klar og fokusert, for bedre å forbedre hukommelsen.

Den andre er reiselivsscenen. Å reise lar oss oppleve ulike kulturer og miljøer, noe som beriker vår horisont i stor grad. Under reiser kan vi tilegne oss rik kulturell kunnskap ved å huske geografiske steder, mennesker, skikker og annen informasjon. Derfor, i reisescenen, må vi observere nøye og aktivt oppleve det, for bedre å forbedre hukommelsen vår.

Nok en gang er det en arbeidsscene. På jobben må vi håndtere en stor mengde informasjon, som data, kontakter, oppgaver, planer osv. Hvis hukommelsen ikke er sterk nok, vil det påvirke arbeidseffektiviteten og prestasjonene våre. Derfor, i arbeidsscenarier, må vi gjøre en god jobb med å registrere og organisere og prøve å begrense spennet til "informasjonsforbindelse" så mye som mulig. På denne måten kan vi bedre hukommelsen vår.

Til slutt er det livsscener. Mennesker trenger å huske mange daglige ting, som adresser, telefonnumre, oppgaver for dagen, og så videre. Hvis hukommelsen vår ikke er god nok, vil det oppstå mange problemer i livet. Derfor, i livsscener, må vi trene vår hukommelsesevne. Vi kan forbedre hukommelsen vår ved å bygge assosiativ tenkning og gjenta stille.

For å oppsummere, er minne i forskjellige scenarier nært beslektet. Vi kan forbedre hukommelsen og oppnå bedre ytelse i ulike scenarier gjennom bevisst øvelse og konsentrasjon. La oss forfølge et bedre liv og karriere med en optimistisk holdning. Det kan sees at vi trenger å forbedre hukommelsen, og Cistanche deserticola kan forbedre hukommelsen betydelig, fordi Cistanche deserticola også kan regulere balansen av nevrotransmittere, som å øke nivåene av acetylkolin og vekstfaktorer. Disse stoffene er svært viktige for hukommelse og læring. I tillegg kan Cistanche deserticola også forbedre blodstrømmen og fremme oksygentilførsel, noe som kan sikre at hjernen får tilstrekkelig med næringsstoffer og energi, og dermed forbedre hjernens vitalitet og utholdenhet.

improve working memory

Klikk vet kosttilskudd for å forbedre hukommelsen

3.1. Motivasjon

Som diskutert tidligere, spiller kopi-på-skriv-mekanismen en nøkkelrolle i implementering av virtuelle minnefunksjoner i moderne operativsystemer. Imidlertid har fordelene med hensyn til plass blitt mindre i moderne datamiljøer og skriveintensive arbeidsbelastninger, som er vanlige i datasentre [21,22].

Nye minneteknologier som lagringsminne (SCM) og vedvarende minne muliggjør økt datatetthet for minnemoduler samtidig som kostnaden per dataenhet reduseres.

I dag har det blitt billigere enn noen gang å bygge en node med en enorm mengde minne i terabyte-skalaen. I tillegg har nettskytjenesteleverandører rapportert at nodene i datasentre lider av lavt minneutnyttelse, noe som lar 40–50 % av minnet være ubrukt [23–26]. I denne situasjonen blir det mulig å bytte minneplass mot ytelse i ytelseskritiske systemer [27]. Fordelene når det gjelder ytelse har også vært avtagende.

Ytelsesfordelen med kopiering-på-skriv kan karakteriseres av frekvensen og ytelsen til sidefeilhåndtering. Mens en underordnet prosess startet, falt skrivetillatelsen til alle sider. Fra korrekthetens perspektiv er dette uunngåelig; det fører imidlertid til hyppige sidefeil etter gaffelen, når du betjener hver skriveforespørsel. Denne stormen av skrivesidefeil skjer ikke bare med underordnede prosesser, men også med foreldreprosessen.

For å gjøre det verre, har ikke sidefeilhåndteringstiden forbedret seg i det siste, men har en tendens til å bli forlenget på grunn av sikkerhetsmessige årsaker. Tidligere ble hele kjerneadresseområdet vedvarende kartlagt til en del av brukerprosessens adresserom.

Imidlertid lar dette adresseromsoppsettet ondsinnede brukerprosesser indirekte lese kritiske data i kjerneadresserommet ved å utnytte den spekulative utførelsen i prosessorene [28,29].

For å redusere slike kritiske sikkerhetssårbarheter bruker moderne OS-er kjernesidetabellisolasjon (KPTI). Generelt er bare en begrenset del av kjerneadresserommet tilordnet prosessadresserommet, og resten av kjerneadresserommet blir dynamisk kartlagt og fjernet under avbruddet og systemanropshåndteringen. Dette må ledsages av TLB-spyling, som kan forringe systemets ytelse betydelig.

I dette arbeidet tar vi sikte på å redusere kostnadene ved å kopiere-på-skrive ved å utnytte den romlige lokaliteten til minnereferanser. Foreløpig foregår kopiering-på-skriving per side, og hver gang en sidefeil oppstår, bør operativsystemet bli involvert. Hovedideen vår er å redusere frekvensen av OS-involvering ved å utnytte den romlige lokaliteten til minnetilganger. Hvis en side åpnes for skriving, vil nærliggende sider sannsynligvis også bli åpnet for skriving snart.

Derfor, hvis vi utfører kopiering-på-skriving ikke bare for den defekte siden, men også for sider i nærheten sammen (dvs. forhåndskopiere sider i nærheten), kan vi amortisere overheaden for kopi-på-skriv under sidefeilhåndteringen. Vi bør imidlertid være forsiktige og ikke blindt alltid kopiere alle nærliggende sider.

Hvis de kopierte sidene skrives senere, tilbakebetales kostnadene som påløper for forhåndskopien. Men hvis de kopierte sidene ikke er skrevet i etterkant, påløper forhåndskopien bare ekstra overhead når det gjelder tid og plass.

ways to improve your memory

Derfor er det avgjørende å identifisere de riktige målsidene å kopiere. Lignende tilnærminger har blitt brukt for å minimere sidefeilhåndteringen. Linux bruker den såkalte "feil rundt"-funksjonen. Mens du håndterer en sidefeil, starter Linux sidefeilhåndteringen for sidene som er rundt den defekte siden [2]. Denne funksjonen brukes imidlertid bare på lesesidefeil for filstøttede minneregioner.

Gitt at den foreslåtte ideen fokuserer på å skrive sidefeil for anonyme sider, kan vi hevde at vår tilnærming er forskjellig fra feil-around-funksjonen. Mange toppmoderne design [12–17] har blitt foreslått for å optimalisere bruken av enorme sider i operativsystemet.

Disse systemene, til felles, presenterer et opplegg for å identifisere de beste kandidatsidene som skal konverteres til store sider og for å effektivt promotere til (dvs. konvertere basissider til en enorm side) eller nedgradere fra (dvs. konvertere en enorm side til basissider) store sider.

Imidlertid, uavhengig av de foreslåtte ordningene, utføres kopiering-på-skriv kun i grunnsidegranulariteten, etter at den enorme siden er delt opp i basissider om nødvendig. Dermed er ytelsesegenskapene deres for kopi-på-skriv de samme som standard Linux-systemet med den transparente enorme siden (THP)-mekanismen. Derimot er det foreslåtte opplegget vårt unikt ved at det utfører kopi-på-skriv med en annen granularitet i henhold til lokalitetsgraden i minnetilganger.

3.2. Identifisere den romlige lokaliteten

For å realisere den foreslåtte ordningen bør vi vurdere to utfordrende problemstillinger. For det første bør målsidene identifiseres presist og rettidig, slik at fordelen med forhåndskopien maksimeres mens overheaden for forhåndskopien minimeres.

Når en side er skopert av en forfatter, vil ikke siden utløse flere sidefeil. Dette betyr i praksis at systemet mistet muligheten til å optimere skrivetilgangen. Dermed bør systemet være i stand til å forutse fremtidig sidebruk for å bestemme hvilke sider som skal kopieres og hvilke som ikke er det. For det andre bør identifisering av målsidene ha lav overhead siden OS ikke har råd til tidkrevende prosessering i det ytelseskritiske minneadministrasjonsundersystemet.

Som diskutert i avsnitt 2, er mange virtuelle minnefunksjoner i moderne operativsystemer basert på kopier-på-skriv-mekanismen. Dermed kan overheaden lett oppveie fordelen med den optimaliserte kopi-på-skrive hvis den totale implementeringen ikke er tilstrekkelig effektiv.

For å forutsi fremtiden til en side, samler vi først historien til gafler for brukerprosesser. Spesifikt overvåker operativsystemet antall gafler som hver prosess påkaller. Et lavt antall for en prosess innebærer at det er liten mulighet til å utnytte prosessen, og operativsystemet trenger ikke å spore skrivesidefeilene for denne prosessen fullt ut.

I motsetning til dette, når en prosess påkaller gaffelsystemkallet mer enn en terskel, kan systemet forvente optimaliseringsmulighet. Dette skjer med Redis, som med jevne mellomrom påkaller gafler for å ta in-memorysnapshots, eller med shell-skriptet som deler flere kommandolinjekommandoer. Som svar begynner systemet å spore sidefeilene for prosessen.

improve brain

Deretter foreslår vi en metode for å forutsi optimaliseringsmuligheten fra historien, forutsatt at den generelle oppførselen til applikasjoner ikke endres vesentlig. For dette formål deler vi prosessadresserommet inn i regioner med fast størrelse. Hver region har en bitmap, der hver bit tilsvarer en side i regionen. En prosess startes med alle punktgrafikk slettet, som for nylig befolkede virtuelle minneområder (VMA). Når en del av hele VMA ikke er kartlagt, frigis også punktgrafikkene i det tilsvarende adresseområdet.

Punktgrafikken tildeles kun for de delene av VMA som er fylt ut, og 14 KB sideinformasjon er oppsummert til en bit. Dermed er plassen overhead for punktgrafikken omtrent 0.003 % av det fylte adresserommet. Til å begynne med behandles skrivinger gjennom kopi-på-skriving som den er.

En skrivetilgang er fanget til sidefeilbehandleren, hvorved den tilsvarende punktgrafikkoppføringen settes. Over tid fanger bitkartet effektivt tilgangene til regionen, og vi kan kvantifisere graden av dekning. Dekningen av en region beregnes som prosentandelen av kopi-på-skrevne sider av alle sider i regionen, som følger:

improve cognitive function

Anta at et system bruker 4 KB sider og adresseområdet er delt inn i 2 MB regioner.

Deretter har hver region 512 4 KB-sider. Hvis 300 sider kopieres på skrivere, er dekningen av regionen 300/512 × 100=58.6%. Jo høyere dekning av en region, desto mer kan regionen dra nytte av optimaliseringsmuligheten til forhåndskopien. Denne dekningsinformasjonen bæres over gaffelen og brukes som en beregning for å bestemme fordelen med å kopiere sider i nærheten.

Spesifikt, hvis minneregionen har høy dekning, vil sidene i regionen sannsynligvis bli kopiert-på-skrevet etter hvert. Derfor vil det være fordelaktig å forhåndskopiere andre sider i regionen mens du behandler en skrivesidefeil for en side. Mens optimaliseringsmulighetene ved forhåndskopiering av sider er liten hvis dekningen er lav. Dermed blir bare den defekte siden kopiert-på-skrevet av sidefeilbehandleren.

Heretter vil vi referere til denne ordningen som dekningsbasert kopi-på-skriv eller CCoW for resten av artikkelen. Figur 1 illustrerer konseptet CCoW. Det er to regioner, regioner 0 og 1, som hver består av seks sider. 

Sidene med grønn nyanse er fylt med kopi-på-skriv. Når prosessen påkaller gaffelsystemanropet, skriver du tillatelse for at alle sidene, inkludert de grønne, kan droppes under gaffelen. La oss anta at terskelen for å bestemme regionen med høy lokalitet er 60 %. I region 0 hadde fire sider (side 1, 2, 3 og 4) blitt kopiert til skriving før gaffelen, noe som ga en dekning på 4/6=66 %.

Dermed anses denne regionen for å ha høy romlig lokalitet, og alle sider kopieres for å håndtere sidefeilen for side 3, som farget i rødt. Mens den nedre regionen gir en dekning på 33 % ettersom to av seks sider hadde blitt kopiert-på-skrevet før gaffelen.

Derfor har denne regionen en lavere dekning enn terskelen, noe som antyder den lave romlige lokaliteten i regionen. Således, når side 9 er tilgjengelig for skriving, kopieres bare den defekte siden ved skriving i sidefeilbehandleren, akkurat som den vanlige kopier-på-skriv-prosedyren.

improve memory


For more information:1950477648nn@gmail.com

Du kommer kanskje også til å like