Perché lo swappiness predefinito è 60? Quale sarebbe l'effetto se abbassassi il valore di swappiness per il mio PC desktop?

16

Stavo leggendo di swappiness in vari forum e ho visto alcuni video. Molti hanno affermato che è una buona cosa per gli utenti desktop ridurre il valore di swappiness al di sotto di 60 (che è l'impostazione predefinita). Alcuni hanno affermato che 60 è buono per i server. Esattamente perché sarebbe meglio per me abbassarlo e perché è buono per i server? Ho provato a cercare una risposta (ho guardato qui per esempio) ma non riusciva a capire. ... Si prega di usare termini semplici: D

    
posta Mina Michael 12.02.2014 - 19:03

4 risposte

21

La tua premessa è sbagliata. Non esiste un valore di swapiness 'buono per i server'.

Lo swap è la quantità di swap che viene eseguita, in particolare quanto è aggressivo lo scambio. Per i miei server lo swappiness è vicino allo zero, perché sono dannatamente sicuro che abbiano abbastanza memoria per tutto. Non esiste il valore "best for servers". c'è 60, che è l'impostazione predefinita, e quindi c'è "il tuo valore" che dipende dall'utilizzo e dalla memoria disponibile.

Se disponi di server che a volte utilizzano CARICHI di memoria, potresti averli più alti di quelli predefiniti, ma direi che alcuni server (server di database?) potrebbero volerli tenere più in basso di quanto farebbe un computer di casa.

    
risposta data Nanne 12.02.2014 - 19:17
8

Il valore di swappiness viene ridimensionato in modo da confondere le persone. Vedono che ha un range di 0-100, quindi pensano alla percentuale, quando il minimo effettivo è intorno ai 50.

60 significa approssimativamente non scambiare fino a raggiungere circa l'80% dell'utilizzo della memoria, lasciando il 20% per la cache e così via. 50 significa aspettare finché non esauriamo la memoria. Valori più bassi significano lo stesso, ma con crescente aggressività nel tentativo di liberare memoria con altri mezzi.

Lo descrivono piuttosto bene al link

    
risposta data David 17.07.2014 - 20:16
5

L'impostazione swappiness è un aggiustamento al modo in cui Linux calcola i vantaggi / gli svantaggi dello swapping in uno scenario particolare. Un'alta swappiness non farà cambiare il sistema quando non è necessario, e una bassa swappiness, a patto di non disabilitare completamente lo swap, non impedirà al tuo sistema di scambiarsi quando è assolutamente necessario.

Lo swappiness predefinito di 60 o giù di lì è un ottimo compromesso che garantisce buone prestazioni del tuo sistema, assicurando che non stia faticando troppo per allocare la memoria cache mentre è inutilizzata memoria di programma allocata.

Ricorda che se hai un sacco di RAM per tutti i tuoi processi oltre alla cache, che di solito dovrebbe essere il caso se hai un sacco di RAM fisica, lo scambio non dovrebbe essere un problema per te comunque. Il modo migliore per risolvere i problemi relativi a un eccessivo swapping è diminuire l'utilizzo della RAM da parte dei processi e / o aumentare la RAM fisica. La riduzione della swappiness avrà un effetto negativo se ciò di cui hai veramente bisogno è più RAM.

Vedi la risposta che ho scritto a una domanda molto simile:

link

Estratto:

  

Perché la maggior parte delle persone consiglia di ridurre la swappiness a 10-20?

     

Perché la maggior parte crede che lo swapping = brutto e che se non si riduce lo swappiness, il sistema si scambierà quando non ne ha davvero bisogno. Nessuno di questi è veramente vero. Le persone si associano a volte in cui il loro sistema si sta impantanando - tuttavia, scambia per lo più perché il sistema si impantana, non il contrario. È vero che ci sono alcuni momenti in cui lo swapping può avere una notevole penalizzazione delle prestazioni, ma il sistema lo ha già preso in considerazione per la sua decisione di swap, e ha deciso che non farlo avrebbe avuto una penalità complessiva maggiore nelle prestazioni o stabilità del sistema che potrebbero più tardi diventa evidente. Nel complesso, le impostazioni predefinite dovrebbero garantire le migliori prestazioni e affidabilità globali. Consiglierei di lasciarlo di default.

     

...

     

Una volta esaurita la memoria sufficiente che non è rimasto abbastanza per una cache con funzionamento regolare, Linux potrebbe riassegnare alcune memoria di applicazione inutilizzata dalla RAM per lo scambio.

     

Tuttavia non lo fa secondo un limite definito. Non è che raggiungi una certa percentuale di allocazione, quindi Linux inizia a scambiare. Ha un algoritmo piuttosto "fuzzy". Ci vuole un sacco di cose in considerazione, che possono essere meglio descritte da "quanta pressione c'è per l'allocazione della memoria". Se c'è molta "pressione" per allocare nuova memoria, aumenterà le probabilità che alcuni vengano scambiati per guadagnare più spazio. Se c'è meno "pressione" allora diminuirà queste possibilità.

     

Il tuo sistema ha un'impostazione "swappiness" che ti aiuta a modificare il modo in cui viene calcolata questa "pressione". Normalmente non è consigliabile modificarlo del tutto e sicuramente non lo consiglierei mai di alterarlo. Lo swapping è nel complesso una cosa molto buona - qualsiasi penalizzazione occasionale delle prestazioni è destinata a essere compensata da un aumento della reattività e stabilità generale del sistema per una vasta gamma di compiti. Se riduci lo swappiness, lasci che la quantità di memoria cache si riduca di un po 'di più rispetto a quella che avrebbe altrimenti, anche quando potrebbe essere davvero utile. Rischi quindi di rallentare il tuo computer in generale, perché c'è meno cache, mentre la memoria viene utilizzata da applicazioni che non la utilizzano nemmeno. Se questo è un compromesso abbastanza buono per qualsiasi problema specifico che stai avendo con lo scambio dipende da te. Se vai oltre e disabiliti effettivamente lo swapping, rischi di instabilità del sistema nel caso in cui il sistema esaurisca la memoria per i processi.

     

Che cosa sta succedendo quando il sistema è impantanato e si sta spostando pesantemente?

     

La maggior parte delle volte le persone guardano il loro sistema che sta massacrando il disco pesantemente e utilizzando un sacco di spazio di swap e colpa dello scambio per esso. Questo è l'approccio sbagliato da prendere. Se lo scambio ha raggiunto questo limite, significa che il tuo sistema ha una memoria estremamente bassa e lo scambio è l'unica cosa che impedisce che i processi si blocchino o uccidano casualmente. Senza lo scambio, in questa situazione, i processi si bloccheranno e moriranno. Lo scambio è un sintomo di un problema più profondo. In un sistema con memoria sufficiente per tutte le sue attività, lo swap assicura solo che la memoria sia utilizzata in modo efficiente, distribuendo la memoria alla cache su processi inattivi dove vede che ne varrà la pena. In un sistema in cui lo swapping sta inesorabilmente battendo il disco, non è colpa dello swap.

     

Quando si sceglie ciò che deve essere scambiato su disco, il sistema prova a selezionare la memoria che non viene effettivamente utilizzata, da leggere o scrivere da. Ha un algoritmo piuttosto semplice per calcolare ciò che sceglie bene la maggior parte del tempo.

     

...

     

Ma come può swap accelerare il mio sistema?Non scambia le cose lente?

     

L'atto di trasferire dati dalla RAM allo swap è un'operazione lenta, ma è necessaria solo quando il kernel è abbastanza sicuro che il vantaggio complessivo sarà superiore a questo. Ad esempio, se la memoria dell'applicazione è aumentata al punto che non è rimasta quasi nessuna cache e l'I / O è molto inefficiente a causa di ciò, è possibile ottenere molta più velocità dal sistema liberando memoria, persino dopo le spese iniziali di scambio dei dati per liberarlo.

Sentiti libero di leggere l'intero post sul link

    
risposta data thomasrutter 24.03.2014 - 04:52
0

Lo swappiness è completamente in contraddizione con tutte queste risposte.

Il vero lavoro di swappiness è descritto nell'articolo: link

L'ambiguità è corroborata dalla dichiarazione di Andrew Morton: link

Mi infilerò le dita nelle orecchie e canterò "la la la" finché la gente non lo dirà io "ho impostato lo swappiness a zero e non ha fatto ciò che volevo che facesse".

Spero che sia utile

    
risposta data user3624410 16.02.2018 - 16:21

Leggi altre domande sui tag