Ho un laptop Debian (Buster) con 8 GB di RAM e 16 GB di swap. Sto eseguendo un'attività molto lunga. Ciò significa che il mio laptop è stato lasciato acceso negli ultimi sei giorni mentre si fa strada.
Nel fare ciò, periodicamente devo usare il mio laptop come laptop. Questo non dovrebbe essere un problema; l'attività di lunga durata è associata a I / O, funziona attraverso elementi su un disco rigido USB e non richiede molta RAM (<200 MB) o CPU (<4%).
Il problema è che quando torno al mio laptop dopo alcune ore, sarà molto lento e potrebbero essere necessari 30 minuti per tornare alla normalità. Questo è così grave che i monitor di arresto anomalo segnalano che le loro rispettive applicazioni sono bloccate (in particolare le finestre del browser) e che le cose iniziano a bloccarsi in modo errato.
Guardando il monitor di sistema, dei 2,5 GB utilizzati circa la metà viene spostato in swap. Ho confermato che questo è il problema rimuovendo lo spazio di swap ( swapoff /dev/sda8
). Se lo lascio senza spazio di scambio, ritorna in vita quasi istantaneamente anche dopo 24 ore. Con lo scambio, è praticamente un mattone per i primi cinque minuti essendo rimasto solo per sei ore. Ho confermato che l'utilizzo della memoria non supera mai i 3 GB anche quando sono assente.
Ho provato a ridurre lo swappiness ( vedi anche: Wikipedia ) ai valori di 10
e 0
, ma il problema persiste ancora. Sembra che dopo un giorno di inattività il kernel crede che l'intera GUI non sia più necessaria e la cancella dalla RAM (scambiandola su disco). L'attività di lunga durata è leggere un vasto albero di file e leggere ogni file. Quindi potrebbe essere che il kernel sia confuso nel pensare che la memorizzazione nella cache possa aiutare. Ma con una singola scansione di un USB HD da 2 TB con ~ 1 miliardo di nomi di file, una RAM GB aggiuntiva non contribuirà molto alle prestazioni. Questo è un laptop economico con un disco rigido lento. Semplicemente non è in grado di caricare nuovamente i dati nella RAM abbastanza velocemente.
Come posso dire a Linux di usare lo spazio di swap solo in caso di emergenza? Non voglio correre senza scambio. Se succede qualcosa di inaspettato e il sistema operativo improvvisamente ha bisogno di qualche GB in più, allora non voglio che le attività vengano uccise e preferirei iniziare a usare lo swap. Ma al momento, se lascio abilitare lo scambio, il mio laptop non può essere utilizzato quando ne ho bisogno.
La definizione precisa di "emergenza" potrebbe essere oggetto di dibattito. Ma per chiarire cosa intendo: un'emergenza sarebbe quella in cui il sistema è rimasto senza altra opzione che scambiare o uccidere i processi.
Che cos'è un'emergenza? - Devi davvero chiedere? ... Spero che non ti troverai mai in un edificio in fiamme!
Non è possibile per me definire tutto ciò che potrebbe costituire un'emergenza in questa domanda. Ma ad esempio, un'emergenza potrebbe verificarsi quando il kernel è così spinto per la memoria che ha iniziato a uccidere i processi con OOM Killer . Un'emergenza NON è quando il kernel pensa di poter migliorare le prestazioni usando lo scambio.
Modifica finale: ho accettato una risposta che fa esattamente quello che ho chiesto a livello di sistema operativo. I futuri lettori dovrebbero anche prendere nota delle risposte che offrono soluzioni a livello di applicazione.