Canonical ha proposto patch per velocizzare l'attivazione della modalità sospensione

Canonico offerta sulla mailing list degli sviluppatori del kernel Linux una serie di patch con implementazione pulizia opportunistica della memoria (“recupero opportunistico della memoria”), che consente di ridurre notevolmente il tempo necessario per entrare in modalità di sospensione. L'ottimizzazione si ottiene chiamando in modo proattivo l'operazione di rilascio delle strutture di memoria secondaria che non contengono informazioni univoche e possono essere ripristinate dinamicamente al ritorno dalla modalità di sospensione (ad esempio, aree memoria anonima e varie cache di pagine di memoria). L'idea principale è che dopo aver rimosso i dati non necessari, la dimensione dell'immagine della memoria da salvare prima di entrare in modalità di sospensione viene ridotta e, di conseguenza, è necessario meno tempo per scriverla e leggerla da supporti lenti.

Per impostazione predefinita, quando si salva un dump della memoria per l'ibernazione, il kernel salva la memoria così com'è con tutte le cache, ma esiste una capacità standard di liberare strutture non necessarie simulando condizioni di carenza di risorse nella fase iniziale dell'entrata in ibernazione. Questa funzionalità è attivabile tramite il parametro “/sys/power/image_size” e porta ad una notevole riduzione del tempo necessario per entrare in modalità sleep. Canonical suggerisce di aggiungere altri due parametri “/sys/power/mm_reclaim/run” e
"/sys/power/mm_reclaim/release", che ti consentirà di attivare in anticipo il rilascio di strutture non necessarie in modo che la transizione effettiva alla modalità di sospensione venga eseguita il più rapidamente possibile e il ritorno dalla modalità di sospensione richieda all'incirca lo stesso tempo di quando se ne utilizza uno esistente nel parametro del kernel "/sys/power/image_size".

I test su un sistema con 8 GB di RAM e 8 GB di partizione di swap con l'85% di utilizzo della memoria hanno mostrato nelle impostazioni predefinite (image_size=default) una diminuzione del tempo per entrare in modalità di sospensione da 51.56 a 4.19 secondi all'avvio del processo di cancellazione della memoria in eccesso 60 secondi prima di accedere alla modalità di sospensione. Riducendo la dimensione dell'immagine memorizzata, il tempo di recupero è diminuito da 26.34 a 5 secondi. Quando il sistema ha attivato la modalità standard per cancellare la memoria in eccesso (image_size=0), il tempo per entrare in modalità di sospensione è stato ridotto da 73.22 a 5.36 secondi, e il tempo per tornare dalla modalità di sospensione è rimasto praticamente invariato (è stato ridotto solo di un frazione di secondo, da 5.32 a 5.26 secondi).

Il metodo proposto potrebbe essere richiesto in situazioni in cui è necessario passare molto rapidamente alla modalità sospensione ed è possibile prevedere in anticipo la necessità di tale transizione. Ad esempio, nei sistemi cloud, ambienti virtuali a bassa priorità (ambienti spot in Amazon EC2) possono ibernare dinamicamente e rilasciare la memoria occupata man mano che aumenta il consumo di risorse da parte degli ambienti primari. Quando il carico sugli ambienti primari diminuisce, gli ambienti a bassa priorità ritornano dalla modalità di sospensione. In queste condizioni, per mantenere un'adeguata qualità del servizio, è importante ridurre al minimo il tempo necessario per entrare e uscire dalla modalità di sospensione. La fase di pulizia preventiva può essere attivata al raggiungimento di un certo livello del carico principale, precedente al livello che porta al congelamento degli ambienti a bassa priorità.

Fonte: opennet.ru

Aggiungi un commento