GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come impedire che il sistema non risponda durante il thrashing (fuori dalla RAM)?

Ho 8 GB di RAM, ma a volte eseguo un paio di macchine virtuali e abbastanza processi Chrome per utilizzare la maggior parte della mia memoria. Di solito va bene, ma a volte il mio sistema inizia a rallentare ed è difficile per me riprendermi senza aspettare 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 privi di priorità. Se Chrome o la VM non rispondevano ma il mio ambiente grafico e il mio terminale erano ancora reattivi, potevo passare a un terminale, trovare il colpevole e ucciderlo. Potrei immaginare qualcosa come 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 scambiare.

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

Grazie!

EDIT:Sono ancora interessato a sapere se c'è qualcosa di carino per la memoria, ma ho appena scoperto che il mio sistema non ha spazio di scambio. Penso che ciò sia successo perché ho iniziato a utilizzare una home crittografata e uno scambio crittografato (vedi Swap non funziona su un'installazione pulita 14.04 utilizzando una home crittografata). Quindi, il mio sistema probabilmente non risponde perché non ho spazio di scambio, quindi il mio sistema non può sostituire i programmi non necessari quando la memoria è insufficiente.

Risposta accettata:

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

Se questo è vero, probabilmente sta contribuendo al problema.

Utilizzando più VM con grandi allocazioni di memoria, una quantità di RAM che normalmente sarebbe più che sufficiente per l'uso normale (8 GB) inizia a diventare ridotta, il che significa che il tuo sistema non sarà in grado di utilizzare la stessa quantità di cache e vorrà scambiare . Ora, se non hai lo scambio, ci sarà ancora più pressione sulla memoria e potresti persino interrompere 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, riallocando alcuni dati allocati ma usati di rado dalla memoria al disco, liberando memoria per i dati che stai utilizzando. L'aggiunta di swap, se in effetti non ne hai nessuno, aiuterà. Tuttavia, in termini di prestazioni, migliorerai molto di più se acquisti anche più RAM o ne usi meno.

Su un sistema in cui stai eseguendo VM ma sei anche utilizzando un normale desktop sull'host VM, non vuoi che le tue VM occupino tutta la tua RAM, infatti risparmierei metà della tua RAM (fino a 4 GB) per l'host, dato che stai eseguendo software sull'host e vuoi 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 intero sistema operativo separato con una serie di livelli di astrazione. Quindi puoi sempre ottenere una migliore efficienza se decidi di eseguire qualcosa sull'host piuttosto che in una VM, anche se se il tuo scopo per l'utilizzo delle VM è usare altri sistemi operativi, ciò non sarà possibile.

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

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 detto, potresti essere in grado di allocare meno alle VM).

Relazionato:Nessuno spazio rimasto sul dispositivo anche se c'è?

La tua domanda è espressa in termini semplici:desideri che l'interfaccia utente sia in grado di continuare a funzionare senza problemi anche se l'IO è congestionato. Tuttavia, è complicato rispondere. Il tuo sistema sarà già farlo al meglio delle sue capacità:le operazioni che non richiedono l'accesso al disco non subiranno ritardi. Se la tua "interfaccia utente balbetta" è perché il particolare processo responsabile di tale interfaccia utente richiede l'accesso al disco. In una situazione di memoria insufficiente e in cui il disco è in esaurimento, anche qualcosa che normalmente sarà banale, come leggere alcune configurazioni dalla tua home directory per scoprire quali sono le tue preferenze di visualizzazione, può essere lento a causa dell'esaurimento della cache del disco.

Potrei immaginare qualcosa come 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 thrashing, non è memoria, è disco, questo è il problema. C'è un "ionico" per questo. Anche se probabilmente non è quello che consiglierei per il tuo problema.

Un altro equivalente approssimativo di "bello per la memoria" è lo scambio:non puoi controllare quanto sia scambiabile ogni processo individualmente, ma il sistema fa un ottimo lavoro nel capire quali processi stai utilizzando attivamente e quindi hanno una priorità più alta da mantenere RAM.

Ma come ho detto e come regola d'oro, se stai esaurendo la RAM, acquistare più RAM è la soluzione con meno grattacapi e inconvenienti.


Ubuntu
  1. Come impedire a Windows 10 di danneggiare il superblocco Ext4 ogni volta?

  2. Come riparare l'installazione?

  3. Come impedire agli utenti di accedere alla directory principale?

  4. Come rilasciare le pagine enormi dall'applicazione bloccata

  5. Come posso rilevare le specifiche del chip di memoria RAM dall'interno di una macchina Linux

Come prevenire il timeout di SSH

Come controllare la RAM installata su Debian 10

Come controllare la RAM installata sul tuo sistema Ubuntu

Come installare la caffeina su Ubuntu 20.04 – Impedisci al desktop di diventare inattivo

Come impedire a PHP-FPM di consumare troppa RAM in Linux

Come impedire lo spegnimento degli schermi quando lo schermo è bloccato?