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.