CCoW: ottimizzazione del copy-on-Write considerando la località spaziale nei carichi di lavoro, parte 4

Apr 03, 2024

3.3. Monitoraggio dell'accesso alle pagine precopiate

Si suppone che CCoW ammortizzi il sovraccarico per la gestione frequente degli errori di pagina. Tuttavia, copiare le pagine in anticipo porta a un altro problema: monitorare gli accessi alla pagina dopo la copia.

Esiste una forte connessione tra l'elaborazione degli errori e la memoria. Per la maggior parte delle persone, gli errori sono spesso visti come una cosa negativa, ma possono essere opportunità per imparare e crescere. Gestendo correttamente gli errori, possiamo migliorare la nostra memoria e aiutarci a comprendere e rispondere meglio a situazioni simili.

Un modo per affrontare gli errori è riflettere e analizzare. Quando commettiamo un errore, dovremmo prenderci del tempo per riflettere su come si è verificato l’errore e su cosa possiamo fare per evitare che un errore simile si ripeta. Attraverso la riflessione, possiamo identificare le cause profonde dei problemi e sviluppare contromisure per risolverli. Questo tipo di analisi non riguarda solo gli errori, ma può aiutarci a prendere decisioni migliori in altre situazioni della vita e aiutarci a migliorare le nostre capacità e capacità.

Un altro modo per affrontare gli errori è permettersi di accettarli e andare avanti. Non dovremmo lasciare che gli errori ci rallentino o ci frustrino. Dovremmo invece vederli come opportunità di crescita, permettendoci di imparare dai nostri errori e continuare a migliorare. Se riusciamo ad accettare gli errori e ad affrontarli con un atteggiamento positivo, possiamo sviluppare una mentalità forte e una forte fiducia in noi stessi, il che è molto importante per mantenere una buona memoria.

Infine, possiamo rafforzare la nostra memoria condividendo i nostri errori. Quando raccontiamo agli altri gli errori che abbiamo commesso, tendiamo a ricordare quegli eventi più profondamente. Questo perché quando lo diciamo agli altri dobbiamo rendere le cose più chiare e ricordare ogni dettaglio dell'errore. In questo modo possiamo comprendere meglio questi errori ed evitare che si ripetano.

In sintesi, esiste una forte relazione tra elaborazione degli errori e memoria. Gestendo correttamente gli errori, possiamo rafforzare la nostra memoria, migliorare le nostre capacità e abilità e diventare persone migliori. Dovremmo considerare gli errori come un’opportunità, affrontare attivamente le difficoltà, imparare e crescere da esse. Si può vedere che abbiamo bisogno di migliorare la memoria, e la Cistanche deserticola può migliorare significativamente la memoria perché la Cistanche deserticola è un materiale medicinale tradizionale cinese che ha molti effetti unici, uno dei quali è quello di migliorare la memoria. L'efficacia di Cistanche deserticola deriva dai molteplici principi attivi che contiene, tra cui acido tannico, polisaccaridi, glicosidi flavonoidi, ecc. Questi ingredienti possono promuovere la salute del cervello attraverso una varietà di percorsi.

10 ways to improve memory

Fare clic su Scopri la memoria a breve termine come migliorare

Nello schema originale copia su scrittura, la prima scrittura su ciascuna pagina viene catturata dal gestore degli errori di pagina.

Viene copiata solo la pagina errata e il sistema può monitorare con precisione l'accesso a ciascuna pagina tramite il gestore degli errori di pagina. D'altra parte, quando il sistema copia un'intera regione, tutte le pagine della regione vengono mappate al processo con autorizzazione scritta.

Pertanto, le scritture successive su quelle pagine copiate possono avvenire senza attivare il meccanismo di gestione degli errori di pagina, quindi il sistema non può tenere traccia degli accessi alle pagine copiate. Ciò può essere problematico quando il processo esegue fork ripetutamente. Supponiamo che una regione abbia un'elevata località spaziale e che un'epoca sia definita come il periodo tra due biforcazioni.

La località alta può essere catturata contando i page fault che si sono verificati nella regione. Supponiamo quindi che il processo crei un nuovo processo con un fork. Quando viene avviata una nuova epoca con il fork, il primo accesso in scrittura a una delle pagine nella regione avvierà CCoW, copiando tutte le pagine nella regione. Ora il processo ha tutte le pagine con permesso di scrittura e non vengono generati ulteriori errori di pagina dalla regione fino alla fine dell'epoca.

Quando si ricomincia una nuova epoca, si considera che la regione abbia una copertura bassa nell'epoca, dato che la regione ha solo una pagina copy-on-write. Pertanto, ogni scrittura nella regione viene elaborata tramite il meccanismo originale di copia su scrittura per pagina, compromettendo così l'opportunità di ottimizzazione delle prestazioni anche se la regione ha una località elevata.

Tieni presente che si ritiene che la regione abbia nuovamente una località elevata nell'epoca successiva e il processo viene ripetuto per alternare la situazione. Per risolvere questo problema, abbiamo bisogno di un meccanismo per monitorare l'accesso alla pagina dopo la copia.

Questo studio propone di sfruttare il bit sporco nella voce della tabella delle pagine (PTE). In generale, le architetture moderne mantengono varie informazioni nel PTE per ogni pagina e il bit sporco è uno dei campi supportati dalla maggior parte delle architetture.

Quando MMU elabora un accesso in scrittura alla memoria, imposta automaticamente il dirty bit della pagina corrispondente. Ciò implica al contrario che quando viene impostato il bit sporco per una pagina, la pagina è stata aggiornata con accessi in scrittura.

Sulla base di questa idea abbiamo modificato il meccanismo di calcolo della copertura. Inizialmente, tutte le regioni sono considerate regioni normali. Durante il fork, la copertura per le regioni normali viene calcolata con il numero di copie su scritture utilizzando l'equazione (1).

ways to improve memory

Durante la gestione dell'errore di pagina per una regione con elevata località, tutte le pagine nella regione vengono copiate con il bit sporco cancellato. Inoltre, la regione è contrassegnata come regione precopiata. Durante il fork, la copertura della regione copiata viene calcolata con il numero di pagine sporche nella regione come segue:

improve memory

La copertura calcolata per ciascuna regione viene trasportata attraverso il fork e utilizzata come metrica per la località spaziale della regione. Quando si verifica un errore di scrittura di una pagina in una regione, il sistema controlla la copertura della regione e può precopiare le pagine per le regioni ad alta località.

La Figura 2 illustra una situazione in cui la copertura viene calcolata dopo le precopie. Supponiamo che entrambe le regioni vengano copiate (ombreggiate in rosso) e che le pagine 0, 2, 3, 4 e 11 abbiano tutte il dirtybit impostato.

Per calcolare la copertura durante l'elaborazione del fork, il sistema utilizza il dirty bit invece del conteggio copy-on-write poiché le regioni vengono copiate nell'epoca corrente. Pertanto, la regione 0 ha una copertura del 66%.
Mentre la copertura della regione 1 è del 15%. Per gestire l'errore di pagina per la pagina 3, la regione 0 viene copiata nuovamente, mentre l'errore di pagina per la pagina 9 viene gestito con il meccanismo originale. In questo modo possiamo evitare che le regioni ad alta località sfuggano di vista.

boost memory

3.4. Catturare la località

Poiché il gestore degli errori di pagina si trova sul percorso critico per le prestazioni nel sistema operativo, dovremmo ridurre al minimo il sovraccarico per l'implementazione dello schema proposto.
Fondamentalmente, CCoW richiede un meccanismo per calcolare la copertura e il modo più semplice per implementare questa funzionalità è tenere traccia delle pagine che attivano page fault con una bitmap, come descritto nella Sezione 3.2.

Durante la gestione di un errore di pagina, il sistema imposta il bit corrispondente alla pagina errata. Durante il fork, il sistema esegue la scansione della bitmap per contare il numero di pagine difettose per ciascuna regione e calcola la copertura. La bitmap viene reimpostata dopo il calcolo.

Questo approccio è semplice ma impone elevati vincoli di spazio e tempo. Il sistema dovrebbe mantenere una voce bitmap da un bit per ogni pagina da 4 KB e ispezionare l'intera bitmap durante il fork. Considerando l'enorme ingombro di memoria delle applicazioni ad uso intensivo di memoria, queste operazioni comporteranno un sovraccarico elevato durante il fork, annullando il beneficio prestazionale di CCoW. Ottimizziamo questa implementazione sfruttando le caratteristiche del page fault.

Se si verifica un errore di pagina da una pagina, la pagina non incorre in ulteriori errori di pagina finché il processo non crea un nuovo processo. Pertanto, ogni pagina può innescare al massimo un page-fault e, per una regione con n pagine, i page-fault possono verificarsi solo fino a n volte. Ciò implica che contare il numero di errori di pagina per regione è sufficiente per calcolare la copertura, anziché mantenere la bitmap per le singole pagine.

Pertanto, sostituiamo la bitmap con i contatori di errori. Ogni regione è associata a una coppia di contatori come segue: uno per il conteggio degli errori di pagina nell'ultima epoca e un altro per il conteggio degli errori di pagina nell'epoca corrente.

Il primo viene utilizzato per determinare la località spaziale delle regioni, mentre il secondo viene utilizzato per monitorare la località spaziale dell'epoca attuale. Durante il fork, il contatore errori corrente viene copiato sul contatore errori precedente.

Se una regione viene copiata in questa epoca, il numero di pagine sporche nella regione viene invece scritto nel contatore errori precedente. I contatori vengono popolati durante la creazione di una nuova area di memoria virtuale (VMA) e recuperati quando la VMA corrispondente viene ridotta o non mappata. Questa ottimizzazione riduce l'overhead di spazio di CCoW da un bit per pagina a pochi byte per regione.

memory enhancement


For more information:1950477648nn@gmail.com

Potrebbe piacerti anche