GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:come utilizzare lo spazio di scambio solo per le emergenze?

Ho un laptop Debian (Buster) con 8 GB Sostituzione RAM e 16 GB. Sto eseguendo un'attività molto lunga. Ciò significa che il mio laptop è stato lasciato acceso negli ultimi sei giorni mentre girava.

Durante questa operazione ho periodicamente bisogno di utilizzare il mio laptop come laptop. Questo non dovrebbe essere un problema; l'attività di lunga durata è legata all'I/O, funziona su un disco rigido USB e non richiede molta RAM (<200 MB) o CPU (<4%).

Il problema è quando torno al mio laptop dopo alcune ore, sarà molto lento e potrebbero volerci 30 minuti per tornare alla normalità. Questo è così grave che i crash-monitor segnalano che le rispettive applicazioni si sono bloccate (in particolare le finestre del browser) e le cose iniziano a bloccarsi in modo errato.

Guardando sul monitor di sistema, dei 2,5 GB utilizzati circa la metà viene spostata in swap. Ho confermato che questo è il problema rimuovendo lo spazio di swap (swapoff /dev/sda8 ). Se lo lascio senza spazio di scambio, torna in vita quasi istantaneamente anche dopo 24 ore. Con lo scambio, è praticamente un mattone per i primi cinque minuti rimasti solo per sei ore. Ho confermato che l'utilizzo della memoria non supera mai 3 GB anche quando sono via.

Ho provato a ridurre lo swappiness (vedi anche:Wikipedia) a valori di 10 e , ma il problema persiste. Sembra che dopo un giorno di inattività il kernel ritenga che l'intera GUI non sia più necessaria e la cancelli dalla RAM (scambiandola su disco). L'attività di lunga durata è la lettura di un vasto albero di file e la lettura di ogni file. Quindi potrebbe essere che il kernel sia confuso nel pensare che la memorizzazione nella cache possa aiutare. Ma su una singola passata di un USB HD da 2 TB con circa 1 miliardo di nomi di file, un GB di RAM in più non aiuterà molto le prestazioni. Questo è un laptop economico con un disco rigido lento. Semplicemente non può caricare di nuovo i dati nella RAM abbastanza velocemente.

Come posso dire a Linux di utilizzare lo spazio di swap solo in caso di emergenza? Non voglio correre senza swap. Se accade qualcosa di inaspettato e il sistema operativo ha improvvisamente bisogno di qualche GB in più, non voglio che le attività vengano interrotte e preferirei iniziare a utilizzare lo scambio. Ma al momento, se lascio lo scambio abilitato, 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 quando il sistema viene lasciato senza altra opzione se non quella di scambiare o interrompere i processi.

Che cos'è un'emergenza?Devi davvero chiedere?... Spero che non ti ritrovi mai in un edificio in fiamme!

Non mi è possibile definire in questa domanda tutto ciò che potrebbe costituire un'emergenza. 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 utilizzando lo scambio.

Correlati:Ubuntu - Come controllare le connessioni SMB e il dialetto utilizzato su Linux?

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.

Risposta accettata:

Avere uno scambio così grande al giorno d'oggi è spesso una cattiva idea. Quando il sistema operativo ha scambiato solo pochi GB di memoria da scambiare, il tuo sistema era già morto per indicizzazione (come quello che hai visto)

È meglio usare zram con una piccola partizione di swap di backup . Molti sistemi operativi come ChromeOS, Android e varie distribuzioni Linux (Lubuntu, Fedora) hanno abilitato zram per impostazione predefinita per anni, specialmente per i sistemi con meno RAM. È molto più veloce di scambiare su HDD e in questo caso puoi sentire chiaramente la reattività del sistema. Meno su un SSD, ma secondo i risultati del benchmark qui sembra ancora più veloce anche con l'algoritmo lzo predefinito. Puoi passare a lz4 per prestazioni ancora migliori con un rapporto di compressione leggermente inferiore. La sua velocità di decodifica è quasi 5 volte più veloce di lzo in base al benchmark ufficiale

In effetti, anche Windows 10 e macOS utilizzano tecniche di compressione dei file di paging simili per impostazione predefinita

C'è anche zswap anche se non l'ho mai usato. Probabilmente vale la pena provare e confrontare quale è meglio per i tuoi casi d'uso

Dopodiché, un altro suggerimento è quello di ridurre la priorità di quei processi legati all'IO ed eventualmente lasciare un terminale in esecuzione con priorità più alta in modo da poter eseguire comandi su di esso immediatamente anche quando il sistema è sottoposto a un carico elevato

Ulteriori letture

  • Arch Linux – Miglioramento delle prestazioni – Zram o zswap
  • Abilita ZSwap per aumentare le prestazioni
  • Abilita zRAM per una migliore gestione della memoria e meno scambi
  • La RAM in Ubuntu sta esaurendosi? Abilita ZRAM
  • Differenza tra ZRAM e ZSWAP
  • zram vs zswap vs zcache Ultimate guide:quando usare quale
  • Linux, SSD e swap
  • https://wiki.debian.org/ZRam
  • https://www.kernel.org/doc/Documentation/blockdev/zram.txt
  • https://wiki.gentoo.org/wiki/Zram

Linux
  1. Come usare il comando sed di Linux

  2. Come scegliere un laptop Linux conveniente per le videoconferenze

  3. Linux:come utilizzare tre monitor su un laptop?

  4. Quanto spazio di scambio aggiungere per Oracle Database su Linux

  5. Come aggiungere spazio di swap in Linux

Come utilizzo Cockpit per la gestione del server Linux di casa

Come estendere lo spazio di scambio utilizzando il file di scambio in Linux

Come controllare le porte di ascolto in Linux (porte in uso)

Quanto swap dovresti usare in Linux?

Come creare e utilizzare file di scambio su Linux

Come controllare lo spazio di scambio in Linux