GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa può fare specificamente lo scambio che la RAM non può?

Ibernazione (o sospensione su disco). La vera ibernazione spegne completamente il sistema, quindi il contenuto della RAM viene perso e devi salvare lo stato in una memoria persistente. Alias ​​Scambio. A differenza di Windows con hiberfil.sys e pagefile.sys , Linux utilizza lo spazio di swap sia per l'overcommit della memoria che per l'ibernazione.

D'altra parte, l'ibernazione sembra un po' pignola per funzionare bene su Linux. Se "puoi" effettivamente andare in letargo è una cosa diversa. ¯\_(ツ)_/¯


Cosa si può fare con lo swap che non si farebbe anche aggiungendo RAM?

Questa domanda potrebbe effettivamente essere riformulata in Cosa si può fare con la RAM non volatile che non si farebbe anche aggiungendo altra RAM volatile? . Solo perché ti capita di dedicare una partizione per il paging (un modo dedicato di interagire con la RAM volatile), non cambia il fatto che faccia ancora parte di un supporto di archiviazione secondario persistente. Anche la partizione di scambio non è obbligatoria per mettere un sistema in ibernazione, può essere utilizzato anche un "file di scambio" creato su una partizione preesistente.

Alla fine, sia che tu stia usando una partizione di swap o un file di swap, ciò che memorizzerai sono cose da scrivere su o dalla RAM. Se dovessi staccare il cavo di alimentazione da un sistema con una partizione di swap abilitata, quella partizione di swap non verrebbe cancellata magicamente.

Mentre questi dati di scambio non verrebbero letti al tuo prossimo avvio (poiché il file di paging avrebbe voci corrispondenti a processi che non sono più in esecuzione), e alcune distribuzioni potrebbero adottare misure deliberate per distruggerlo durante un arresto corretto o un riavvio corretto , se qualcuno dovesse staccare un cavo da un sistema, sarebbe in grado di esaminare forensicamente quella partizione di swap.

Per quanto riguarda il caso dei dispositivi embedded che hai citato, Flash, essendo un tipo di memoria RAM non volatile (NVRAM o EEPROM), si esaurisce a causa della sua capacità di ricevere colpi di I/O (Flash Cell Endurance rappresentata in termini di numero di programmi /erase cycles) impallidisce rispetto a quello della RAM volatile. Ti radi letteralmente uno strato di ossido ogni volta che esegui una scrittura in quella posizione, e alla fine semplicemente non c'è più ossido per consentire l'immagazzinamento persistente della carica e fuoriesce letteralmente prima della sua successiva lettura.

D'altra parte, la sopravvivenza della RAM volatile è praticamente inesistente (dell'ordine di minuti in condizioni sperimentali ideali) rispetto al flash, se o quando si interrompe la sua fonte di alimentazione. Nel caso della RAM volatile non c'è nulla che possa fermare la perdita della carica e il corrispondente stato del flip-flop (ingressi, uscite determinanti, che poi rideterminano gli ingressi), ovvero latch controllati dal feedback.


32 GB di RAM e nessuna RAM di swap vs. 16 GB con 16 GB di swap.

Chiesto in questo modo, lo scambio fa principalmente risparmiare denaro, aumentando le prestazioni per rapporto dollaro, forse anche per watt.

Ma lo scambio è ancora più di "memoria lenta come un disco". È un archivio temporaneo per le pagine di memoria, che possono essere caricate direttamente (sporche come sono, senza sovraccarico del filesystem) nella RAM quando necessario.

Ovviamente molto dipende dal carico (il tipo del carico), e l'idea dello scambio può anche ritorcersi contro. Ecco perché c'è il parametro "swappiness", oltre a swapon / swapoff stesso e la discussione sulla taglia giusta.

Da wikipedia ho ricevuto questa dichiarazione sullo "swap" in Linux (nell'articolo "paging")

Il kernel Linux supporta un numero virtualmente illimitato di backend di scambio (dispositivi o file...

Se a più backend di swap viene assegnata la stessa priorità, vengono utilizzati in modo round-robin (che è in qualche modo simile ai layout di archiviazione RAID 0),...

Ciò dimostra che puoi trasformare lo scambio in qualcosa che ha più senso a livello hardware:un "disco scratch" dedicato darebbe a queste pagine scambiate una casa migliore. Idealmente, un'unità scratch dovrebbe essere (molto) piccola ma veloce e robusta.

Secondo la "nuova" regola delle dimensioni (radice quadrata di Giga), il tuo esempio dovrebbe confrontare:

16 GB RAM + 0 GB Swap+1000 GB Disk

16 GB RAM + 4 GB Swap+ 996 GB Disk

Perché ciò che davvero non ha senso è:

16 GB RAM+0 GB Swap + 1000 GB Disk

12 GB RAM+4 GB Swap + 1000 GB Disk

Sarebbe una partizione di swap su un tmpfs ("ramdisk") - forse nemmeno troppo dannosa, ma qui non vedo alcun vantaggio. Non puoi nemmeno andare in letargo.

(vedi sotto per zram e zswap, però, quando aggiungi la compressione a quello)

Per capire lo scambio devi considerare l'intero sistema e il carico medio. E poiché vm/mm (gestione della memoria virtuale) è un sistema complesso, è davvero difficile nominare un chiaro vantaggio. Mi piace l'idea di una transizione "fluida" in un sistema sovraccarico.

Ho 8 GB di RAM e nessuno scambio. Ma ancora difendo il concetto, AFA posso capire :-)

Ho trovato questa citazione redhat in uno dei link OP. Lo scenario è una richiesta di memoria sempre crescente, su 2 GB RAM + 2 GB Swap, se ricordo bene:

... Nel nostro caso [appena illustrato], è disponibile un bel po' di swap, quindi il tempo di scarse prestazioni è lungo.

Ma l'alternativa è OOM anche prima!

Il "tempo di scarse prestazioni" è lungo, sì, ma le prestazioni si riducono solo proporzionalmente al carico. Non conosco il contesto, forse vogliono solo mettere in guardia contro un troppo grande partizione di scambio. Suona anti-swap, ma a un secondo sguardo non lo è.

Poi di nuovo, per lo stesso motivo, non ho scambio. Voglio sapere quando io e le mie applicazioni raggiungiamo il limite, e poi deciderò se devo diminuire il carico, acquistare più RAM o attivare una partizione per lo swap (ho una o due piccole partizioni pronte per questo).

Ho cercato questo zram , quindi zswap cosa:molto interessante...:

In confronto, zswap funge da cache basata su RAM per i dispositivi di scambio. Ciò fornisce a zswap un meccanismo di rimozione per le pagine scambiate meno utilizzate, che manca a zram.

D'altra parte, zram funziona senza alcun dispositivo di scambio. Rende possibile ciò che ho detto non ha senso, ma non ho tenuto conto della compressione.

Il punto è questo sfratto meccanismo insito nello "scambio". Questo può essere molto utile sotto carico elevato, sia che si scambi scambiando o comprimendo.


Linux
  1. Un'introduzione allo spazio di scambio sui sistemi Linux

  2. Cos'è DROWN:una vulnerabilità che può mettere in pericolo il tuo traffico crittografato

  3. Cosa può causare la generazione di SIGHUP?

  4. Come posso sapere quale processo sta usando lo scambio?

  5. Scambia la dimensione della partizione per 4 GB di RAM

Qual è la giusta quantità di spazio di scambio per un moderno sistema Linux?

Cosa può fare per te un file dot di shell

Cosa fare quando Ctrl + C non può terminare un processo?

I/O su disco Linux OOM. Inoltre:scambia, a cosa serve?

Quanto deve essere grande la partizione di swap?

Cosa può causare un segnale 11?