Cosa può rendere Linux così insensibile?
L'overcommit della RAM disponibile, che causa una grande quantità di swapping, può sicuramente farlo. Ricorda che l'I/O ad accesso casuale sul tuo HDD meccanico richiede lo spostamento di una testina di lettura/scrittura, che può eseguire solo circa 100 ricerche al secondo.
È normale che Linux esca completamente a pranzo, se si sovraccarica la RAM "troppo". Ho anche un disco rotante e 8 GB di RAM. Ho avuto problemi con un paio di software con perdite di memoria. Cioè. il loro utilizzo della memoria continua a crescere nel tempo e non si riduce mai, quindi l'unico modo per controllarlo sarebbe stato arrestare il software e quindi riavviarlo. Sulla base delle esperienze che ho avuto durante questo, non sono molto sorpreso di sentire ritardi superiori a dieci minuti, se stai generando oltre 3 GB di swap.
Non lo vedrai necessariamente in tutti i casi in cui hai più di 3 GB di swap. La teoria dice che il concetto chiave è il thrashing. D'altra parte, se stai provando a passare da un set di lavoro all'altro e richiede lo scambio di 3 GB in entrata e in uscita, a 100 MB/s ci vorranno almeno 60 secondi anche se il pattern I/O può essere perfettamente ottimizzato. In pratica, il modello I/O sarà tutt'altro che ottimale.
Dopo la difficoltà che ho avuto con questo, ho riformattato il mio spazio di swap a 2 GB (molte volte più piccolo di prima), quindi il sistema non sarebbe stato in grado di scambiare così profondamente. Puoi farlo anche senza perdere tempo a ridimensionare la partizione, perché mkswap
accetta un parametro di dimensione facoltativo.
L'equilibrio approssimativo è tra l'esaurimento della memoria e l'interruzione dei processi e il blocco del sistema per così tanto tempo che ti arrendi e riavvii comunque. Non so se una partizione di swap da 4 GB sia troppo grande; potrebbe dipendere da cosa stai facendo. L'importante è fare attenzione a quando il disco inizia a muoversi, controllare l'utilizzo della memoria e rispondere di conseguenza.
Il controllo dell'utilizzo della memoria delle applicazioni multiprocesso è difficile. Per visualizzare l'utilizzo della memoria per processo senza contare due volte la memoria condivisa, puoi utilizzare sudo atop -R
, premi M e m e cerca nella colonna PSIZE. Puoi anche usare smem
. smem -t -P firefox
mostrerà PSS di tutti i tuoi processi firefox, seguito da una linea con PSS totale. Questo è l'approccio corretto per misurare l'utilizzo totale della memoria dei browser basati su Firefox o Chrome. (Sebbene ci siano anche funzionalità specifiche del browser per mostrare l'utilizzo della memoria, che mostrerà le singole schede).
AFAIK, il bloatware non dovrebbe impedire al sistema operativo di rispondere, quindi non prenderei in considerazione né accetterei che il bloatware sia la causa principale del problema
Non ti piacerà, ma penso che il bloatware lo sia il tuo problema (anche se non sono sicuro che sia la memoria o il disco il problema). Sfortunatamente, il kernel Linux è pessimo nel gestire situazioni di alta pressione della memoria ed è noto che richiede sostanzialmente un riavvio una volta che la memoria è esaurita. Ci sono tre cose che mi portano a credere che il tuo problema sia l'esaurimento delle risorse:
- Il tuo spazio su disco su root (/) e DATA è quasi pieno. Non sono sicuro per cosa usi DATA, ma ho già riscontrato problemi con il ridimensionamento della mia partizione di root troppo piccola e il mio sistema che diventa inutilizzabile.
- Hai una pressione elevata sulla memoria, il che significa che la tua RAM è quasi piena. Quando la RAM inizia a riempirsi, inizierai a ricevere errori di pagina. Gli errori di pagina si verificano quando il kernel non è in grado di allocare memoria sufficiente per un processo e deve invece utilizzare uno spazio di scambio molto più lento di alcuni sistemi. Questo ci porta alla nostra ultima osservazione:
- Il tuo spazio di scambio è quasi pieno. C'è chiaramente un'elevata pressione della memoria sul tuo sistema poiché sia la RAM che lo swap sono quasi pieni.
Fondamentalmente, metti insieme questi tre e il tuo sistema non ha abbastanza risorse disponibili per fare molto di tutto. Per quanto riguarda il modo in cui Linux gestisce male le situazioni di memoria insufficiente (rispetto, ad esempio, al kernel NT in Windows), Linux sembra essere così. Puoi trovare ulteriori discussioni in questo thread di Reddit e nella sua mailing list collegata.
Per quanto riguarda come risolvere la tua situazione, direi che aumentare la dimensione dello swap è una buona idea, ma dal momento che hai poco spazio su disco sarà un problema. A meno che il tuo server Minecraft non abbia un sacco di persone, penso che sarebbe sicuro ridurre la sua memoria a qualcosa di circa 1024 m (personalmente uso 1024 m con circa 10 persone e funziona bene). Userei anche lo spigot o la carta per il tuo server Minecraft poiché tendono ad essere più performanti.
Buona fortuna!
Qual è l'output di free -m
? La quantità di RAM che hai è inutile se non sappiamo quanto stai usando. Questo e sono interessato a sapere quanto spazio di swap viene utilizzato.
Penso che tu abbia risposto alla tua stessa domanda, però. Avere "molte schede" aperte nel tuo browser può sicuramente rallentare il tuo sistema se non le chiudi mai, poiché continueranno a consumare memoria a prescindere; quando il tuo sistema si blocca, quanti ne hai aperti alla volta?
Ha anche senso se il tuo sistema si sta bloccando da altre attività ad alta intensità di memoria come "generare un grafico molto grande da un diagramma UML molto complesso". Questo rallenterà assolutamente il tuo sistema mentre genera il grafico, quindi non è certo una sorpresa.
Sembra davvero che questo sia il modo in cui il tuo sistema dovrebbe comportarsi. O quello o mi manca qualcosa qui.
A proposito, le statistiche dell'HDD non contano quando il tuo sistema non risponde, poiché la mancanza di memoria è quasi sempre il colpevole.