CCoW: ottimizzazione del copy-on-Write considerando la località spaziale nei carichi di lavoro, parte 6
Apr 03, 2024
La dimensione migliore della regione e la soglia variano in base alle caratteristiche del carico di lavoro. Per valutare l'influenza del carico di lavoro, misuriamo le prestazioni di CCoW sui carichi di lavoro con varie località. Nello specifico, abbiamo modificato il parametro della distribuzione Zipf, che determina il grado di località.
Esiste una stretta relazione tra memoria umana e carico di lavoro. Quando dobbiamo elaborare grandi quantità di informazioni o completare compiti complessi, il nostro cervello deve rimanere altamente vigile per garantire che tutte le informazioni necessarie vengano elaborate e archiviate correttamente. I neuroni nel cervello si connettono e comunicano costantemente, il che influenza notevolmente il modo in cui pensiamo e ricordiamo.
Sebbene l’elaborazione di grandi quantità di informazioni e il completamento di compiti complessi possano mettere alla prova la nostra memoria e le nostre capacità cognitive, la ricerca mostra che con una formazione e una pratica adeguate possiamo migliorare significativamente la nostra memoria e la nostra produttività. Ad esempio, attraverso esperimenti, gli scienziati hanno scoperto che attraverso un ampio allenamento e pratica della memoria, le persone possono migliorare significativamente la propria memoria e l’efficienza lavorativa.
Da questo punto di vista, possiamo concludere che la pratica e la formazione continua sono molto importanti per coloro che vogliono migliorare la propria memoria e l’efficienza lavorativa. Inoltre, mantieni un atteggiamento positivo, poiché lo stress può ostacolare la memoria e la produttività.
In sintesi, esiste una forte correlazione tra carico di lavoro e memoria. Finché rimaniamo concentrati, ci alleniamo e ci alleniamo regolarmente e manteniamo un atteggiamento positivo, possiamo migliorare significativamente la nostra memoria e l’efficienza lavorativa. Cistanche deserticola può anche regolare l'equilibrio dei neurotrasmettitori, come l'aumento dei livelli di acetilcolina e fattori di crescita, importanti per la memoria e l'apprendimento. Inoltre, Cistanche deserticola può anche migliorare il flusso sanguigno e promuovere l’apporto di ossigeno, il che può garantire che il cervello riceva nutrienti ed energia sufficienti, migliorando così la vitalità e la resistenza del cervello.

Fai clic su Scopri come migliorare la tua memoria
Gli accessi sono distribuiti uniformemente quando è {{0}} e maggiore è il valore di , maggiore è il livello di località mostrato dal carico di lavoro. Quando è 1.0, circa l'80% delle operazioni coinvolge il 20% dei dati.
Questo grado di località si trova comunemente in diversi carichi di lavoro reali, come afferma il principio di Pareto. Misuriamo con tre valori diversi, 1.0, 0.9 e 1.1, dove 1.0 è la linea di base e 0.9 e 1.1 rappresentano il carico di lavoro rispettivamente a bassa e alta località.
Le prestazioni originali del CoW variano in base ai carichi di lavoro, quindi il periodo di fork per un carico di lavoro è stato impostato in base al tempo misurato con la configurazione originale del CoW. Ad esempio, se la configurazione CoW originale richiede 10 secondi per ripristinare le prestazioni normali dopo un fork, anche le altre configurazioni CCoW effettuano il fork dei processi figli ogni 10 s.
La Figura 5 riepiloga il throughput medio e l'utilizzo della memoria di CCoW con carichi di lavoro di località diverse. Per il carico di lavoro a bassa località, le configurazioni con soglie CCoW piccole mostrano prestazioni migliori rispetto a quelle con soglie grandi. "CCoW-all" supera addirittura il CoW originale del 15% nel carico di lavoro a bassa località. Ciò è dovuto all'efficacia della precopia. Nel carico di lavoro a bassa località, gran parte della memoria dovrebbe essere replicata poiché gli accessi sono distribuiti sull'intero spazio degli indirizzi del processo. In effetti, la copia di intere regioni comporta la copia anticipata della memoria necessaria con un basso sovraccarico.

Pertanto, minore è la soglia, maggiori saranno le prestazioni del programma con il carico di lavoro a bassa località. Tuttavia, questa tendenza ha l’effetto opposto con carichi di lavoro localizzati. Con carichi di lavoro ad alta località, molti accessi si concentrano su poche pagine.
Ciò implica che solo una piccola parte della memoria deve essere replicata durante il processo di copia-scrittura. Copiare l'intera regione su un page fault tende a copiare le pagine a cui non si accede affatto.
Ciò comporta solo un sovraccarico temporale, compromettendo le prestazioni con carichi di lavoro in località più elevate. Di conseguenza, CCoW-all mostra le prestazioni peggiori con il carico di lavoro ad alta località. Altre configurazioni mostrano modelli simili di carichi di lavoro di base; le prestazioni raggiungono il picco al valore soglia dell'80% e diminuiscono con soglie più piccole.

L'utilizzo della memoria del benchmark mostra una tendenza costante indipendentemente dal grado di localizzazione dei carichi di lavoro. 'CCoW-all' rappresenta sempre il massimo utilizzo della memoria perché copia sempre tutte le pagine nella memoria dopo un fork. Oltre a ciò, le impronte di memoria sono inversamente proporzionali al valore di soglia; minore è il valore di soglia, maggiore è la memoria utilizzata dal benchmark.
L'amplificazione della memoria è aumentata solo fino al 10% rispetto alla configurazione CoW originale, che è considerata in un range ragionevole. Oltre ad analizzare le prestazioni di CCoW, confrontiamo le prestazioni di CCoW con quelle della pagina enorme trasparente (THP) schema di Linux.
THP è in qualche modo simile a CCoW in quanto mira a mitigare il sovraccarico derivante da pagine piccole. "CoW-THP" nella Figura 5 rappresenta le prestazioni della configurazione abilitata per THP. Si noti che il sistema abilitato per THP gestisce il CoW suddividendo pagine enormi in pagine base prima di copiare la pagina difettosa, e così fanno altri schemi che ottimizzano il THP [12–15,17].
Possiamo osservare che THP mostra prestazioni migliori rispetto alla configurazione predefinita "Solo CoW". Attribuiamo il miglioramento delle prestazioni alla maggiore efficienza nella traduzione degli indirizzi con pagine enormi.
Nello specifico, secondo lo schema THP, è probabile che la parte calda dello spazio degli indirizzi del processo venga suddivisa in pagine di base, fornendo così le stesse prestazioni della configurazione "CoW-only". Tuttavia, la parte fredda dello spazio degli indirizzi del processo non è divisa e mantenuta con pagine enormi. Pertanto, ciò può aumentare in una certa misura le prestazioni dell'applicazione.
Tuttavia, THP non fornisce lo stesso miglioramento delle prestazioni di CCoW. La Figura 6 mostra la distribuzione cumulativa del throughput durante la valutazione. L'asse x rappresenta il throughput in operazioni al secondo e l'asse y rappresenta il rapporto cumulativo tra prestazioni e prestazioni. il valore della portata. Ad eccezione di CCoW-all, possiamo trovare tre intervalli di throughput osservati frequentemente indipendentemente dalle configurazioni.
Il primo gruppo nel rapporto cumulativo da {{0}} a 0.1 indica il periodo durante il quale la prestazione del benchmark diminuisce subito dopo il fork. Poi la prestazione recupera nel tempo, come nel secondo gruppo con un rapporto cumulativo di 0,1 a 0,7.
I restanti rapporti cumulativi nell'intervallo da {{0}},7 a 1,0 provengono da accessi che non comportano errori di pagina. Nel complesso, le configurazioni CCoW tendono ad avere cali di prestazioni più gravi rispetto al CoW originale. Nello specifico, con il carico di lavoro ad alta località dello schema CoW originale, il throughput scende a circa 1900.000 operazioni al secondo subito dopo il fork.

Quindi aumenta lentamente fino all'intervallo di 2500.000 operazioni al secondo. Con CCoW, le prestazioni sono scese ulteriormente, fino all'intervallo di 1700.000 operazioni al secondo. Tuttavia, le prestazioni si sono riprese più velocemente, dimostrando prestazioni migliori rispetto al CoW originale per la maggior parte del tempo (vale a dire, principalmente sul lato destro del grafico cumulativo). Possiamo osservare una tendenza simile anche da altri carichi di lavoro e la configurazione CCoW-all dimostra un comportamento estremo; subito dopo il fork le prestazioni calano notevolmente e rimangono basse mentre la maggior parte dello spazio degli indirizzi viene copiato con accessi diffusi.
Dopodiché, tuttavia, si verificano solo pochi page-fault, quindi la maggior parte degli accessi vengono elaborati senza page-fault. Pertanto, il throughput ha una distribuzione bimodale in CCoW. Da questa valutazione, abbiamo confermato che CCoW fornisce prestazioni ottimali ottimizzando il caso comune.
Tuttavia, il calo delle prestazioni dovrebbe essere affrontato per ottenere caratteristiche prestazionali migliori. A tal fine, stiamo attualmente lavorando per limitare la quantità di dati copiati subito dopo il fork.

4.2. Prestazioni CCoW su carico di lavoro realistico
Per valutare il CCoW proposto su un carico di lavoro realistico, abbiamo utilizzato Redis e YCSB. Redis è un database chiave-valore in memoria ampiamente utilizzato per accelerare le applicazioni su scala Internet.
Abbiamo utilizzato il benchmark YCSB per popolare le coppie chiave-valore in un'istanza Redis e per eseguire operazioni su di esse. Nello specifico, l'istanza Redis viene inizializzata con 10 GB di coppie chiave-valore con la configurazione YCSB predefinita.
Tutte le chiavi e i valori hanno dimensioni rispettivamente di 23 e 100 byte e ciascuna chiave contiene 10 campi di valori. Dopo aver popolato l'istanza Redis, l'abbiamo configurata per creare istantanee e quindi alimentare le operazioni di aggiornamento con YCSB.
Per incorporare la località temporale negli accessi ai valori-chiave, impostiamo il carico di lavoro YCSB per selezionare le chiavi di destinazione in base alla distribuzione Zip utilizzando il valore del parametro 1.0.
Effettuando 100 GB di aggiornamenti, abbiamo raccolto il throughput per ogni secondo del rapporto benchmark YCSB. La Figura 7 riepiloga il throughput medio e l'utilizzo della memoria dell'istanza Redis quando il sistema è configurato per utilizzare il CoW o il CCoW originale. Tieni presente che abbiamo utilizzato 2 MB per la dimensione della regione e tutti i valori dei risultati sono stati normalizzati rispetto a quelli di CoW.

Nel complesso, tutte le configurazioni CCoW hanno sovraperformato il CoW originale, indipendentemente dalla soglia di copertura. Allo stesso modo, come analizzato in precedenza, le prestazioni sono state determinate dal compromesso tra il miglioramento delle prestazioni derivante dalla riduzione del copy-on-write e il sovraccarico derivante dalla copia di pagine aggiuntive. Quando il valore di soglia è elevato, vengono copiate solo poche regioni, riducendo così sia le opportunità di ottimizzazione che il sovraccarico della memoria.
Quando il valore di soglia scende al di sotto dell'85%, l'impronta della memoria aumenta e comporta un sovraccarico maggiore. Di conseguenza, il throughput medio di CCoW varia in base alla soglia di copertura ma dimostra un miglioramento delle prestazioni fino al 5% rispetto al CoW originale.
Con il carico di lavoro Redis e YCSB, abbiamo osservato solo un miglioramento marginale delle prestazioni con THP. Ciò è dovuto al fatto che, nel carico di lavoro, gli accessi in scrittura sono sparsi in tutto lo spazio degli indirizzi del processo e le pagine enormi vengono effettivamente suddivise in pagine base durante la gestione del CoW.
Poiché il processo Redis può avere solo poche pagine enormi, le sue prestazioni sono simili a quelle della configurazione di base. Questo risultato dimostra che l'approccio basato su THP è meno efficace nei carichi di lavoro ad alta intensità di scrittura e CCoW supera THP.
Per valutare l'accuratezza del meccanismo nell'identificazione delle regioni ad alta località, abbiamo classificato il motivo del meccanismo di generazione della copia per ciascuna pagina copiata. Nello specifico, abbiamo raccolto il rapporto tra le pagine copiate e il totale delle pagine copiate. Quando il rapporto di precopia èx%, aumentando l'occupazione di memoria totale di y%, possiamo calcolare il rapporto di precopia non necessaria dividendo y per x.
Ad esempio, nella configurazione CCoW-80, viene copiato il 26,9% delle pagine copiate, aumentando l'occupazione di memoria del 6,7%. Ciò implica che il 24,9% delle pagine pre-copia non vengono referenziate. La tabella 1 riassume il calcolo. Il rapporto di copie inutili varia dal 23,4% al 35,6% e dal risultato della valutazione si può concludere che lo schema proposto cattura accuratamente le regioni ad alta località.

5. Conclusioni
In questo studio, abbiamo proposto CCoW, uno schema copy-on-write ottimizzato per carichi di lavoro con elevata località spaziale. CCoW divide lo spazio degli indirizzi del processo in regioni e stima la loro località con la copertura.
Una scrittura in una regione con località elevata porta il gestore pagefault a precopiare le pagine vicine. Per tenere traccia correttamente della copertura dopo la pre-copia, CCoW sfrutta il bit sporco nella tabella delle pagine. La valutazione con parametri di riferimento ha confermato che lo schema proposto può identificare regioni ad alta località con costi generali ridotti, consentendo un miglioramento delle prestazioni dalle applicazioni senza modifiche.
Come accennato in precedenza, le prestazioni calano notevolmente subito dopo il fork a causa dell'enorme quantità di dati da copiare. Stiamo attualmente lavorando sulla gestione del calo delle prestazioni, limitando la velocità di pre-copia ed eseguendo la pre-copia in modo asincrono. Stiamo anche progettando di incorporare un meccanismo adattivo che ottimizzi i parametri di configurazione in base alle caratteristiche del carico di lavoro attuale.
Contributi dell'autore: Concettualizzazione, MH e S.-HK; metodologia, MH; software, MH;convalida, MH e S.-HK; analisi formale, MH e S.-HK; indagine, MH e S.-HK; risorse, S.-HK; cura dei dati, MH; stesura-preparazione di bozze originali, MH; scrittura-revisione e editing, MH e S.-HK; visualizzazione, MH; supervisione, S.-HK; amministrazione del progetto, S.-HK; acquisizione di finanziamenti, S.-HK Tutti gli autori hanno letto e accettato la versione pubblicata del manoscritto.

Finanziamento: questa ricerca è stata supportata da una sovvenzione dell'Istituto di ricerca sull'elettronica e sulle telecomunicazioni (ETRI) finanziata dal governo coreano (20ZS1310) e dal programma BK21 FOUR della Fondazione nazionale di ricerca coreana finanziato dal Ministero dell'Istruzione (NRF5199991014091).
Dichiarazione del Comitato di Revisione Istituzionale: Non applicabile.
Dichiarazione di consenso informato: non applicabile.
Dichiarazione sulla disponibilità dei dati: non applicabile.
Conflitti di interessi: gli autori non dichiarano alcun conflitto di interessi.
Riferimenti
1. Gorman, M. Comprendere il gestore della memoria virtuale di Linux; Prentice Hall: Upper Saddle River, NJ, USA, 2007.
2. Bovet, DP; Cesati, M. Comprendere il kernel Linux; O'Reilly: Newton, Massachusetts, Stati Uniti, 2001.
3. Love, Sviluppo del kernel R. Linux, 3a ed.; Addison Wesley: Boston, Massachusetts, Stati Uniti, 2010.
4. Labs, R. Redis. Disponibile online: https://github.com/redis/redis (accesso il 7 giugno 2021).
5. Silberschatz, A.; Galvin, PB; Gagne, G. Concetti del sistema operativo; Addison-Wesley Longman Publishing Co., Inc.: Boston, MA, Stati Uniti, 2018.
6. Harris, SL; Harris, D. Design digitale e architettura informatica; Morgan Kaufmann: Burlington, Massachusetts, Stati Uniti, 2022.
7. Abi-Chahla, F. Intel Core i7 (Nehalem): architettura di AMD? Disponibile online: https://www.tomshardware.com/reviews/Intel-i7-nehalem-cpu,2041.html (accesso il 18 ottobre 2021).
8. Pham, B.; Bhattacharjee, A.; Eckert, Y.; Loh, GH Aumentare la portata TLB sfruttando il clustering nelle traduzioni delle pagine. Negli atti del 20° Simposio internazionale IEEE 2014 sull'architettura dei computer ad alte prestazioni (HPCA'14), Orlando, FL, USA, 15–19 febbraio 2014; pagine 558–567.
For more information:1950477648nn@gmail.com






