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


16

Stavo leggendo sulla swappiness in vari forum e ho visto alcuni video. Molti hanno affermato che è una buona cosa per gli utenti desktop ridurre il valore di swapiness 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é 60 è buono per i server? Ho provato a cercare una risposta (ho cercato qui per esempio) ma non riuscivo a capire. ... Si prega di utilizzare termini semplici: D


ha modificato la domanda. Va bene adesso?
Mina Michael,

Risposte:


22

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

Lo swapiness è la quantità di swap che viene eseguita, in particolare quanto aggressivamente si scambia. Per i miei server lo swapiness è vicino allo zero, dato che mi assicuro che abbiano abbastanza memoria per tutto. Non esiste un valore "ottimale per i server". c'è 60, che è l'impostazione predefinita, e poi c'è "il tuo valore" che dipende dall'uso e dalla memoria disponibile.

Se hai server che a volte usano CARICHI di memoria, potresti averli più alti del valore predefinito, ma direi che alcuni server (server di database?) Potrebbero volerli mantenere più bassi rispetto a un computer di casa.


bene ok: DI stava seguendo questo unix.stackexchange.com/questions/88693/… . la seconda risposta (quella attualmente con 2 voti positivi) diceva che 60 potrebbe essere più adatto per i server. ... E fammi capire bene. Dovrei impostare un elevato swappiness se eseguo processi che richiedono memoria grande e quelli bassi se eseguo più processi di piccole dimensioni?
Mina Michael,

(e a seconda delle specifiche del mio computer) Ho un core 2 duo a circa 2,9 GHz con grafica integrata Intel tra l'altro
Mina Michael

1
Impossibile dirlo. Dipende da molte cose, come indicato anche in quella risposta -> alcuni database potrebbero fare il loro caching, ma altri no. Dipende dai programmi e dal tuo hardware. C'è un valore predefinito e la cosa migliore che puoi fare è testare le prestazioni del tuo sistema in quale situazione. Come detto, ho aggiunto abbastanza mem ai miei sistemi e so cosa richiedono, quindi posso avere lo swappiness a circa 0. Ma su sistemi sani alcuni swap possono essere una buona cosa. non esiste un semplice consiglio di configurazione "dio per tutti" qui, leggi la risposta con il miglior voto. Inoltre: dice "potrebbe essere", non "è" in quella seconda risposta
Nanne,

(e secondo le tue specifiche: la cosa più importante se stai parlando della memoria che hai e tu, ma non c'è bisogno specifico di aggiungerla qui: potremmo parlare per giorni di tutti i tipi di specifiche, la cosa migliore da fare è leggere il la risposta più alta su quel collegamento unix che hai fornito e continua testando come funziona nel tuo ambiente.) "
Nanne,

bene, quando ho detto che non riuscivo a capire quello che ho letto. Sono abbastanza debole in termini di conoscenza (e persino di linguaggio per essere onesto XD) ... quindi devo solo continuare a provare! ok grazie: D
Mina Michael,

8

Il valore di swapiness è ridimensionato in modo da confondere le persone. Vedono che ha un intervallo compreso tra 0 e 100, quindi pensano alla percentuale, quando il minimo effettivo è di circa 50.

60 significa approssimativamente non scambiare fino a quando non raggiungiamo circa l'80% dell'utilizzo della memoria, lasciando il 20% per cache e simili. 50 significa attendere fino all'esaurimento della memoria. Valori più bassi significano lo stesso, ma con una maggiore aggressività nel tentativo di liberare memoria con altri mezzi.

Lo descrivono abbastanza bene su http://lwn.net/Articles/83588/


Cosa significano valori più alti, ad esempio 80 o 100?
Giovedì

5

L'impostazione di swappiness è una modifica del modo in cui Linux calcola i vantaggi / gli svantaggi dello swap in un particolare scenario. Un'elevata swappiness non causerà lo scambio del sistema quando non è necessario e una bassa swapiness, a condizione che non si disabiliti completamente lo swap, non impedirà al sistema di effettuare lo swap quando è assolutamente necessario.

La swapiness predefinita di circa 60 è un ottimo compromesso che garantisce buone prestazioni del sistema assicurando che non stia faticando troppo a allocare memoria cache mentre è presente memoria di programma allocata inutilizzata.

Ricorda che se hai molta RAM per tutti i tuoi processi più cache, cosa che di solito dovrebbe essere il caso se hai molta RAM fisica, lo scambio non dovrebbe comunque essere un problema per te. Il modo preferito per risolvere problemi di scambio eccessivo è ridurre l'utilizzo della RAM da parte dei processi e / o aumentare la RAM fisica. Ridurre lo swappiness avrà un effetto negativo se ciò di cui hai veramente bisogno è più RAM.

Si prega di vedere la risposta che ho scritto a una domanda molto simile:

/ubuntu//a/184221/54256

Estratto:

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

Perché la maggior parte crede che lo scambio = cattivo e che se non si riduce lo scambio, il sistema cambierà quando non è realmente necessario. Nessuno di questi è veramente vero. Le persone associano lo scambio a momenti in cui il loro sistema viene impantanato, tuttavia, è principalmente scambiato perché il sistema viene impantanato, non viceversa. È vero che ci sono alcuni momenti in cui lo scambio può avere una notevole penalità delle prestazioni, ma il sistema lo avrà già preso in considerazione nella sua decisione di scambiare, e ha deciso che non farlo avrebbe una penalità complessiva maggiore nelle prestazioni del sistema o nella stabilità che potrebbe più tardi diventa evidente. Nel complesso, le impostazioni predefinite dovrebbero garantire le migliori prestazioni e affidabilità complessive. Consiglierei di lasciarlo al valore predefinito.

...

Dopo aver esaurito la memoria sufficiente per non disporre di memoria sufficiente per una cache senza intoppi, Linux può riassegnare parte della memoria dell'applicazione inutilizzata dalla RAM allo scambio.

Tuttavia, non lo fa secondo un limite definito. Non è come raggiungere una certa percentuale di allocazione, quindi Linux inizia a scambiare. Ha un algoritmo piuttosto "fuzzy". Tiene conto di molte cose, che possono essere meglio descritte da "quanta pressione c'è per l'allocazione della memoria". Se c'è molta "pressione" per allocare nuova memoria, aumenterà le possibilità che alcuni vengano scambiati per fare più spazio. Se c'è meno "pressione", diminuirà queste possibilità.

Il tuo sistema ha un'impostazione di "swappiness" che ti aiuta a modificare il modo in cui viene calcolata questa "pressione". Normalmente non è consigliabile modificarlo affatto, e non consiglierei mai di modificarlo. Lo scambio è nel complesso una cosa molto positiva: eventuali penali di prestazione occasionali devono essere compensate da un aumento della reattività e della stabilità complessive del sistema per una vasta gamma di attività. Se riduci lo swappiness, lasci che la quantità di memoria cache si riduca un po 'più di quanto farebbe altrimenti, anche quando potrebbe essere davvero utile. Rischi quindi di rallentare il tuo computer in generale, perché c'è meno cache, mentre la memoria viene occupata da applicazioni che non la usano nemmeno. Se questo è un compromesso abbastanza buono per qualsiasi problema specifico che stai avendo con lo scambio dipende da te.

Cosa succede quando il sistema viene impantanato e scambiato pesantemente?

Molte volte le persone guarderanno il loro sistema che sta schiacciando pesantemente il disco e usando molto spazio di swap e incolpando lo swap per esso. Questo è l'approccio sbagliato da adottare. Se lo scambio raggiunge mai questo estremo, significa che il tuo sistema ha una memoria estremamente bassa e lo scambio è l'unica cosa che gli impedisce di arrestare o uccidere i processi in modo casuale. Senza scambiare, in questa situazione, i processi andranno in crash e muoiono. Lo scambio è un sintomo di un problema più profondo. In un sistema con memoria sufficiente per tutte le sue attività, lo scambio assicura solo che la memoria sia utilizzata in modo efficiente, distribuendo la memoria alla cache su processi dormienti dove vede che ne varrà la pena. In un sistema in cui lo scambio sta schiacciando incessantemente il disco, non è colpa dello scambio.

Quando si sceglie ciò che deve essere scambiato su disco, il sistema tenta di selezionare la memoria che non viene effettivamente utilizzata, da leggere o da cui scrivere. Ha un algoritmo piuttosto semplice per calcolare questo che sceglie bene la maggior parte delle volte.

...

Ma come può lo swap accelerare il mio sistema? Lo scambio non rallenta le cose?

L'atto di trasferire i dati dalla RAM allo swap è un'operazione lenta, ma viene presa solo quando il kernel è abbastanza sicuro che il vantaggio complessivo supererà questo. Ad esempio, se la memoria della tua applicazione è salita al punto da non avere quasi più cache e il tuo I / O è molto inefficiente per questo motivo, puoi effettivamente ottenere molta più velocità dal tuo sistema liberando un po 'di memoria, anche dopo la spesa iniziale di scambio di dati per liberarli.

Sentiti libero di leggere l'intero post su /ubuntu//a/184221/54256


0

Lo swappiness è completamente in contraddizione con tutte queste risposte.

Il vero funzionamento della swappiness è descritto nell'articolo: https://gokulvasanblog.wordpress.com/2016/11/14/empathising-mammoths-mentality-a-study-on-linux-memory-management/

L'ambiguità è corroborata dalla dichiarazione di Andrew Morton: https://lwn.net/Articles/83593/

Mi metto le dita nelle orecchie e canto "la la la" finché la gente non mi dice "ho impostato lo swappiness a zero e non ha fatto quello che volevo che facesse".

Spero sia utile


1
Benvenuti in AU. Potresti riassumere i punti chiave dell'articolo che indichi e spiegare come risponde alla domanda, che non è di spiegare che cosa sia o meno lo swappiness.
Marc Vanhoomissen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.