Comprensione della VM.scambianza

Comprensione della VM.scambianza
Il kernel Linux è un software piuttosto complesso con un lungo elenco di componenti come moduli, interfacce e file di configurazione [1]. Questi componenti possono essere configurati con valori specifici per ottenere un comportamento o una modalità di funzionamento desiderati del componente [2,3,4]. Successivamente, questa configurazione influenza direttamente sia il comportamento che le prestazioni del sistema Linux nel suo insieme.

I valori attuali del kernel Linux e dei suoi componenti sono resi accessibili utilizzando un'interfaccia speciale: la directory /proc [5]. Questo è un file system virtuale in cui i singoli file sono riempiti con valori in tempo reale. I valori rappresentano lo stato effettivo in cui si trova il kernel Linux. È possibile accedere ai singoli file nella directory /proc utilizzando il comando CAT come segue:

$ cat/proc/sys/net/core/somaxconn
128
$

Uno di questi parametri del kernel si chiama VM.scambianza. "Controlla il peso relativo dato allo scambio di memoria di runtime, invece di far cadere le pagine di memoria dalla cache della pagina del sistema" [6]. A partire da Linux Kernel Release 2.6 Questo valore è stato introdotto. È memorizzato nel file/proc/sys/vm/swappiness .

Usando lo swap

L'uso dello swap [6] era una parte essenziale dell'uso di macchine UNIX più piccole nei primi anni '90. È ancora utile (come avere una ruota di scorta nel veicolo) quando le perdite di memoria cattiva interferiscono con il tuo lavoro. La macchina rallenterà ma nella maggior parte dei casi sarà comunque utilizzata per finire l'attività assegnata. Gli sviluppatori di software gratuiti hanno fatto passi da gigante per ridurre ed eliminare gli errori del programma, quindi prima di cambiare i parametri del kernel considera prima di aggiornare una versione più recente dell'applicazione e le librerie correlate.

Se esegui numerosi compiti, le attività inattive verranno scambiate al disco, facendo un uso migliore della memoria con le attività attive. Editing video e altre applicazioni di consumo di memoria di grandi dimensioni hanno spesso quantità raccomandate di memoria e spazio su disco. Se hai una macchina più vecchia che non può avere un aggiornamento della memoria, fare più swap disponibile potrebbe essere una buona soluzione temporanea per te (vedi [6] su come saperne di più su questo).

Lo scambio può avvenire su una partizione separata o su un file di swap. La partizione è più veloce e favorita da molte applicazioni di database. L'approccio del file è più flessibile (vedere il pacchetto DPHYS-SWAPFILE in Debian GNU/Linux [7]). Avere più di un dispositivo fisico per lo scambio consente al kernel Linux di scegliere il dispositivo più rapidamente disponibile (latenza inferiore).

VM.scambianza

Il valore predefinito della VM.Swappiness è 60 e rappresenta la percentuale della memoria libera prima di attivare lo scambio. Più basso è il valore, minore viene utilizzato lo scambio e più pagine di memoria sono mantenute nella memoria fisica.

Il valore di 60 è un compromesso che funziona bene per i moderni sistemi desktop. Un valore inferiore è invece un'opzione consigliata per un sistema server. Come sottolinea il manuale di sintonizzazione delle prestazioni di Red Hat [8], si consiglia un valore di scambiatezza inferiore per i carichi di lavoro del database. Ad esempio, per i database Oracle, Red Hat raccomanda un valore di sconfitta di 10. Al contrario, per i database MARIADB, si consiglia di impostare la scambianza su un valore di 1 [9].

La modifica del valore influenza direttamente le prestazioni del sistema Linux. Questi valori sono definiti:

* 0: lo swap è disabilitato
* 1: quantità minima di scambio senza disabilitarlo del tutto
* 10: valore consigliato per migliorare le prestazioni quando esiste una memoria sufficiente in un sistema
* 100: scambio aggressivo

Come mostrato sopra, il comando Cat aiuta a leggere il valore. Inoltre, il comando SYSCTL ti dà lo stesso risultato:

# sysctl VM.scambianza
VM.SWAPPINESS = 60
#

Tieni presente che il comando sysctl è disponibile solo per un utente amministrativo. Per impostare il valore impostare temporaneamente il valore nel file system /proc come segue:

# Echo 10>/Proc/sys/VM/SWAppiness

In alternativa è possibile utilizzare il comando sysctl come segue:

# sysctl -w vm.SWAPPINESS = 10

Per impostare il valore in modo permanente, aprire il file /etc /sysctl.Conf come utente amministrativo e aggiungere la seguente riga:

VM.SWAPPINESS = 10

Conclusione

Sempre più utenti Linux eseguono macchine virtuali. Ognuno ha il proprio kernel oltre all'ipervisor che controlla effettivamente l'hardware. Le macchine virtuali hanno i dischi virtuali creati per loro, quindi modificare l'impostazione all'interno della macchina virtuale avrà risultati indeterminati. Sperimenta prima cambiando i valori del kernel hypervisor, in quanto controlla effettivamente l'hardware nella macchina.

Per le macchine più vecchie che non possono più essere aggiornate (hanno già la massima memoria supportata) è possibile considerare di posizionare un piccolo disco a stato solido nella macchina per utilizzarlo come dispositivo di swap aggiuntivo. Questo diventerà ovviamente un consumatori poiché le celle di memoria falliranno da molte scritture, ma può prolungare la vita di una macchina per un anno o più a basso costo. La latenza più bassa e le letture rapide daranno prestazioni molto migliori rispetto allo scambio di un disco ordinario, dando risultati intermedi a RAM. Questo dovrebbe consentire di utilizzare VM un po 'più bassa.Valori di scambianza per prestazioni ottimali. Dovrai sperimentare. I dispositivi SSD stanno cambiando rapidamente.

Se si dispone di più di un dispositivo di swap, prendi in considerazione l'idea di renderlo un dispositivo RAID per stringere i dati sui dispositivi disponibili.

È possibile apportare modifiche alla scambianza senza riavviare la macchina, un grande vantaggio rispetto ad altri sistemi operativi.

Cerca di includere solo i servizi di cui hai bisogno per la tua attività. Ciò ridurrà i requisiti di memoria, migliorerà le prestazioni e manterrà tutto più semplice.

Un'ultima nota: aggiungerai carico ai dispositivi di swap. Ti consigliamo di monitorare le temperature di loro. Un sistema surriscaldato abbasserà la frequenza della CPU e rallenterà.

Riconoscimenti

L'autore vorrebbe dire un ringraziamento speciale a Gerold Rupprecht e Zoleka Hatitongwe per le loro osservazioni e commenti critici durante la preparazione di questo articolo.

Collegamenti e riferimenti

* [1] Tutorial del kernel Linux per principianti, https: // linuxhint.com/linux-kernel-tutorial-beginners/

* [2] Derek Molloy: Scrivere un modulo Kernel Linux - Parte 1: Introduzione, http: // derekmolloy.IE/Writing-A-Linux-Kernel-Module-Part-1-Introduction/

* [3] Derek Molloy: Scrivere un modulo kernel Linux - Parte 2: un dispositivo di carattere, http: // derekmolloy.IE/Writing-a-linux-kernel-module-part-2-a-character-device/

* [4] Derek Molloy: Scrivere un modulo Kernel Linux - Parte 3: pulsanti e LED, http: // derekmolloy.IE/Kernel-GPIO-PROGRAMMING-Buttons-and-LEDS/

* [5] Frank Hofmann: comandi per gestire la memoria di Linux, https: // linuxhint.com/comandi-to-manage-linux-memory/

* [6] Frank Hofmann: Linux Kernel Memory Management: Swap Space, https: // LinuxHint.com/linux-memory-management-swap-space/

* [7] pacchetto dphys-swapfile per Debian GNU/Linux, https: // pacchetti.Debian.Org/Stretch/dphys-swapfile

* [8] Guida alla messa a punto delle prestazioni di Red Hat, https: // Access.cappello rosso.com/documentation/en-us/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-memory-tunables

* [9] Configurazione di MariaDB, https: // MariaDB.com/kb/en/libreria/configurazione-swappiness/