Come impedire al mio sistema di non rispondere quando si blocca (fuori RAM)?


11

Ho 8 GB di RAM, ma a volte eseguo un paio di macchine virtuali e processi Chrome sufficienti per utilizzare la maggior parte della mia memoria. Di solito va bene, ma a volte il mio sistema inizia a bloccarsi, ed è difficile per me recuperare da esso senza aspettare semplicemente che le cose migliorino poiché l'interfaccia utente è per lo più bloccata.

In tutti questi casi, i programmi che utilizzano la maggior parte della mia RAM potrebbero essere deprioritizzati. Se Chrome o la VM non rispondessero ma il mio ambiente grafico e il mio terminale fossero ancora reattivi, potrei passare a un terminale, trovare il colpevole e ucciderlo. Potrei immaginare qualcosa di simile a un "bello" per la memoria (in modo da poter utilizzare Chrome e la mia VM) o qualcosa per forzare l'ambiente grafico e il mio terminale a rimanere in memoria e non a scambiarsi.

C'è un modo per garantire che l'interfaccia utente rimanga reattiva quando il mio sistema è in crash?

Grazie!

EDIT: Sono ancora interessato a sapere se esiste qualcosa di simile alla memoria, ma ho appena scoperto che il mio sistema non ha spazio di swap. Penso che ciò sia accaduto perché ho iniziato a utilizzare una home crittografata e uno swap crittografato (vedere Swap non funzionante su un'installazione pulita 14.04 utilizzando home crittografata ). Quindi, il mio sistema probabilmente non risponde perché non ho spazio di scambio, quindi il mio sistema non può scambiare programmi non necessari quando la memoria è insufficiente.


Quindi sembra che tu abbia trovato la causa del tuo problema (nessuno swap allocato) - vuoi ora sapere come impostare lo swap crittografato? Forse potresti modificare la domanda o iniziare una nuova domanda.
thomasrutter,

1
Sono ancora interessato a una cosa di stile RAM piacevole dato che ho avuto problemi simili a quello descritto nella mia domanda prima anche quando avevo un file di scambio.
Sam King,

Risposte:


2

Ho appena scoperto che il mio sistema non ha spazio di swap

Se questo è vero, probabilmente sta contribuendo al problema.

Utilizzando più VM con grandi allocazioni di memoria, una quantità di RAM che sarebbe normalmente più che sufficiente per un uso normale (8 GB) inizia a diventare stretta, il che significa che il sistema non sarà in grado di utilizzare tanta cache e vorrà scambiare . Ora, se non si dispone di swap, ci sarà ancora più pressione sulla memoria e si potrebbe anche uccidere le attività a causa dell'esaurimento della memoria.

Swap cerca di migliorare la stabilità e le prestazioni complessive in situazioni come quella che hai descritto riassegnando alcuni dati allocati ma usati raramente nella memoria su disco, liberando memoria per i dati che stai utilizzando. L'aggiunta di swap, se davvero non ne hai, aiuterà. Tuttavia, in termini di prestazioni, migliorerai molto di più se acquisti anche più RAM o ne usi meno.

Su un sistema in cui esegui VM ma stai anche utilizzando un desktop normale sull'host VM, non vuoi che le VM occupino tutta la RAM, in effetti risparmierei metà della RAM (fino a 4 GB ) per l'host, dato che stai eseguendo software sull'host e desideri che sia reattivo.

Si noti inoltre che le macchine virtuali presentano inefficienze intrinseche non solo perché la loro RAM è totalmente separata, non condividono cache o buffer, ma eseguono un sistema operativo completamente separato in un numero di livelli di astrazione. Quindi puoi sempre ottenere una migliore efficienza se decidi di eseguire qualcosa sull'host anziché in una macchina virtuale, anche se lo scopo dell'utilizzo delle macchine virtuali è quello di utilizzare altri sistemi operativi, ciò non sarà possibile.

C'è un modo per garantire che l'interfaccia utente rimanga reattiva quando il mio sistema è in crash?

Quando la quantità di RAM che hai è un problema, tutto ciò che puoi fare è solo un hack: la vera soluzione è acquistare più RAM (anche se nel tuo caso, come ho già detto, potresti essere in grado di allocare meno alle VM).

La tua domanda è formulata in termini semplici: vuoi che l'IU sia in grado di continuare a funzionare senza problemi anche se l'Io è congestionato. Tuttavia, è complicato rispondere. Il tuo sistema lo farà già al meglio delle sue possibilità: le operazioni che non richiedono l'accesso al disco non verranno ritardate. Se la tua "UI sta balbettando" è perché il particolare processo responsabile di quella UI necessita dell'accesso al disco. In una situazione di memoria insufficiente e in cui il disco si rompe, anche qualcosa che normalmente sarà banale - come leggere alcune configurazioni dalla directory home per scoprire quali sono le tue preferenze di visualizzazione - può essere lento a causa dell'esaurimento della cache del disco.

Potrei immaginare qualcosa di simile a un "bello" per la memoria (in modo da poter utilizzare Chrome e la mia VM)

Non c'è davvero un "bello per la memoria". L'accesso alla memoria è così veloce che di solito puoi praticamente ignorarlo. Quando hai un thrashing, non è memoria, è disco, questo è il problema. C'è una "ionice" per questo. Anche se probabilmente non è quello che consiglierei per il tuo problema.

Un altro equivalente approssimativo di "piacevole per la memoria" è lo swap: non è possibile controllare quanto ogni processo sia swappy individualmente, ma il sistema fa un buon lavoro nel determinare quali processi si stanno attivamente utilizzando e quindi sono una priorità più alta da tenere in RAM.

Ma come ho detto e come è una regola d'oro, se stai esaurendo la RAM, acquistare più RAM è la soluzione con il minimo mal di testa e svantaggi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.