Gli ingegneri di Google questo mese hanno iniziato a pubblicare nuove patch per il sottosistema di gestione della memoria di Linux e i relativi componenti per una funzionalità chiamata Working Set Reporting.

La funzionalità Working Set Reporting si basa su MGLRU e ha lo scopo di gestire meglio le VM o i container con commit eccessivo. La recente serie di patch RFC riassume le cose come segue:

Background
==========
Sia per i client che per i server, i carichi di lavoro possono essere containerizzati con macchine virtuali, container Kubernetes o memcgs. I carichi di lavoro differiscono tra server e client.

I lavori del server hanno impronte di memoria più prevedibili e sono preoccupati per la stabilità e le prestazioni. Una tecnica è il recupero proattivo, che recupera la memoria prima della pressione della memoria e rende evidente la quantità di memoria effettivamente libera su una macchina.

Le applicazioni client sono più esplosive e imprevedibili poiché reagiscono alle interazioni dell’utente. Il sistema deve rispondere rapidamente a eventi interessanti ed essere consapevole del consumo di energia.

Una macchina con un impegno eccessivo può ridimensionare l’impronta dei contenitori tramite memory.max/high, virtio-balloon, ecc.
Il dispositivo balloon è un tipico meccanismo per condividere la memoria tra una VM guest e un host. È particolarmente utile in scenari con più macchine virtuali in cui la memoria è sovraccaricata e sono necessarie modifiche dinamiche alle dimensioni della memoria della macchina virtuale quando i carichi di lavoro cambiano nel sistema. Il dispositivo a palloncino ora ha una serie di funzionalità per aiutare a condividere in modo giudizioso le risorse di memoria tra gli ospiti e l’host (ad es. Suggerimenti di pagine gratuiti, statistiche, rapporti di pagine gratuiti). Per un programma controller host incaricato di ottimizzare le risorse di memoria in un ambiente multi-VM, deve utilizzare questi strumenti per rispondere a due domande concrete:

1. Quando è il momento giusto per modificare il pallone?
2. Di quanto dovrebbe essere cambiato il palloncino?

Nel 2013 è stato realizzato un primo progetto per lo sviluppo di una tale funzionalità”auto-balloon”. Più recentemente, sono stati creati dispositivi VIRTIO aggiuntivi (virtio-mem, virtio-pmem) che offrono più strumenti per una serie di di casi d’uso, ciascuno con vantaggi e svantaggi. Una proposta precedente per estendere MGLRU con interfacce working set si concentra sui casi d’uso del server ma non funziona per i client.

Proposta
==========
Una struttura di reporting Working Set unificata che funzioni sia per i server che per i client. Coinvolge istogrammi per nodo sull’host, istogrammi per memcg e un’estensione del driver virtio-balloon.

Esistono due modi per lavorare con i rapporti Working Set: basati su eventi e tramite query. Il controller host può ricevere notifiche dal recupero, che produce un rapporto, oppure il controller può richiedere direttamente l’istogramma.
Patch 1 introduce il meccanismo di reporting Working Set e le interfacce host. Vedere la sezione Dettagli per
Patch 2 estende il driver virtio-balloon con il reporting Working Set.
L’RFC iniziale si basa su MGLRU ed è inteso come una prova di concetto per discussioni e perfezionamenti. TJ e miro a supportare l’LRU attivo/inattivo e la stima del working set dallo spazio utente. Stiamo lavorando su script demo e ottenendo anche alcuni numeri.

Oltre alle modifiche alla gestione della memoria del kernel Linux, ci sono Patch QEMU per VirtIO Balloon per aggiungere la funzione Working Set Reporting.

“Il caso d’uso è un host con memoria sovracommessa e 1 o più VM. L’obiettivo è ottenere informazioni tempestive e accurate sull’utilizzo complessivo della memoria al fine di guidare le attività di recupero appropriate, poiché in alcuni dispositivi client l’utilizzo casi in cui una VM potrebbe richiedere una frazione significativa della memoria complessiva per un certo periodo di tempo, ma poi entrare in un periodo di quiete che si traduce in un gran numero di pagine fredde nel guest.

Il dispositivo balloon ora ha una serie di funzioni per assistere nella condivisione delle risorse di memoria tra gli ospiti e l’host (ad es. suggerimento di pagina gratuito, statistiche, report di pagina gratuiti).Come menzionato nella diapositiva 12 in [1], il fumetto non ha un buon meccanismo per guidare il recupero della cache degli ospiti. Il nostro caso d’uso include sia la tipica cache delle pagine che le”cache delle applicazioni”con memoria che dovrebbe essere scartata in tempi di pressione della memoria a livello di sistema.In alcuni casi, virtio-pmem può essere un metodo per il controllo host della cache degli ospiti, ma ci sono implicazioni indesiderate sulla sicurezza.”

E poi c’è anche ha proposto l’aggiornamento delle specifiche VirtIO che è stato inviato la scorsa settimana per la discussione.

O per una panoramica più semplice di questa funzionalità di Working Set Reporting, gli ingegneri di Google coinvolti hanno condiviso con noi le diapositive del loro discorso LSF/MM/BPF 2023 su questa funzionalità proposta:

La notifica il meccanismo per i rapporti di Working Set Reporting rimane in fase di sviluppo. Sarà sicuramente interessante vedere tutto ciò che verrà da questa iniziativa di Working Set Reporting.

Categories: IT Info