Il lun 29 giu 2020, 16:35 Davide Prina <[email protected]> ha scritto:

> On 29/06/20 16:00, Giulio Turetta wrote:
>
> > Possiamo dire che la swap serve ad ospitare dati che il sistema ritiene
> > più conveniente ritrovare "pronti all'uso" piuttosto che doverli
> > ricreare
>
> non sono d'accordo. Lo swap server per ospitare quella parte di RAM
> usata (dati + eseguibili) che per diversi motivi Linux (considero solo
> questo kernel, ma il discorso può essere più generico) ha ritenuto non
> essere necessaria nell'immediato e/o per avere una quantità appropriata
> di RAM libera pronta all'uso
>

È evidente che nell'ambito della VM la "fetta" a accesso più rapido è la
RAM.
Cosa va in swap e cosa rimane in RAM è un discorso complesso e per nulla
scontato, incluso il mantenimento della RAM "pronta all'uso" che
richiederebbe un capitolo a parte (free o available?).
Ciò non toglie che il principio generale rimanga lo stesso, qualche che sia
la forma di conservazione (che l'accesso sia più rapido o più lento non
modifica il concetto di fondo).


> > Se vuoi fare un esperimento puoi disattivare la swap:
> >
> > $ sudo swapoff -a
>
> io consiglierei di giocare con swappiness per impostare il parametro che
> configura l'uso dello swap da parte di Linux.
> swappiness può assumere valori tra 0 e 100, dove più è basso è il valore
> e più è basso l'uso dello swap da parte di Linux (0 = non usare lo
> swap), mentre più è alto il valore e più è alto l'uso dello swap da
> parte di Linux (100 = usa lo swap per tutto ciò che non è attualmente
> usato).
>

Giocare con swappiness può essere interessante come esperimento e può
essere utile in alcuni casi.

Anche per la swappiness però il comportamento è molto più complesso di
quanto descritto generalmente e la banalizzazione che se ne fa (e se ne fa
molta sul tema) porta spesso ad un uso inutile se non dannoso dello
strumento.
Così come descritto in genere sembra infatti che esista una correlazione
lineare tra il valore di swappiness e l'impiego della swap: pur sorvolando
sulle differenze tra le varie versioni del kernel (vedi l'effetto del
valore 0) va detto chiaramente che non è così.

Il concetto secondo cui esistono cose "necessarie nell'immediato" da tenere
in RAM è fallace. Non a caso in passato abbiamo assistito a problemi
(talvolta anche gravi con sistemi al collasso) per un uso sconveniente
della VM con impostazioni sia predefinite che personalizzate (senza
consapevolezza).

Va sempre detto che la VM è usata per la quasi totalità dai processi. Linux
è solo il regista ma il suo grado di "consapevolezza" circa i dati in VM e
l'uso che se ne intende fare è scarsa. È importante puntualizzare questo
aspetto perché spesso gli utenti hanno un idea piuttosto confusa sul punto.

Per sperimentare la cosa basta collegare un disco esterno e provare a
copiare da o su di esso un grosso file (con dimensioni pari o maggiori
della RAM installata): la RAM sarà saturata dalla cache che Linux mantiene
per evitare nuovo I/O dal disco in caso di ulteriori letture. Questo è
corretto secondo il principio (innegabile) che la RAM va sempre sfruttata
il più possibile (avere RAM libera è concettualmente un errore) ma non è
sempre favorevole. L'operazione potrebbe spingere in swap fette di VM
ritenute inattive ma che potrebbero invece divenirlo a breve. Il successivo
richiamo di ampie fette di VM dalla swap ha portato in passato a crash
ricorrenti nelle distribuzioni quando si operava (per esempio) con grandi
volumi di I/O.

Questo per ribadire semplicemente che le configurazioni possibili sono
molte e il tema della VM e l'uso che se ne fa è molto molto molto
complesso. Meglio non dare mai nulla per scontato ed approfondire con
attenzione il significato di ogni parametro di configurazione che si
imposta.

Per la sola swappiness si potrebbe scrivere un romanzo :-)

https://www.howtogeek.com/449691/what-is-swapiness-on-linux-and-how-to-change-it/

Rispondere a