Questa pagina descrive come ottimizzare il read-ahead NFS sui client Linux che montano i NetApp Volumes. Il read-ahead consente al kernel di precaricare i blocchi di file prima che un'applicazione li richieda, il che migliora la velocità effettiva di lettura sequenziale. Il read-ahead non sostituisce le opzioni di montaggio o l'ottimizzazione della concorrenza; configura prima queste opzioni. Per saperne di più, vedi Ottimizzare i client NFS Linux.
Prima di iniziare
Completa i seguenti prerequisiti prima di ottimizzare il read-ahead NFS:
Se prevedi di ottimizzare la tabella degli slot o gli slot di sessione, completa la concorrenza NFS Linux prima.
Monta il volume con le opzioni di montaggio NFS Linux appropriate, inclusa
rsize. Per saperne di più, vedi Opzioni di montaggio NFS Linux.Ottimizza il read-ahead dopo aver montato il volume.
Panoramica del read-ahead
Quando un'applicazione legge un file in sequenza, il client NFS Linux può richiedere dati aggiuntivi oltre alla lettura corrente. In questo modo, la latenza di rete viene nascosta e la velocità effettiva aumenta per i carichi di lavoro sequenziali, come la riproduzione dei log, lo streaming di contenuti multimediali, la copia collettiva e alcune scansioni di analisi.
Il read-ahead viene configurato per punto di montaggio. È meno efficace per i carichi di lavoro di lettura casuale rispetto ai carichi di lavoro di lettura sequenziale.
Valori predefiniti e rsize
Molte distribuzioni Linux impostano il read-ahead su circa 15 volte rsize. Alcune distribuzioni utilizzano un read-ahead fisso di 128 KiB indipendentemente da rsize, il che può ridurre le prestazioni di lettura sequenziale dopo un upgrade. Controlla il valore corrente nel file system montato prima di modificarlo.
Visualizzare il read-ahead per un montaggio
Ogni punto di montaggio NFS ha un dispositivo a blocchi di backup corrispondente in /sys/class/bdi/. Per trovare l'identificatore del dispositivo a blocchi di backup (BDI) e visualizzare il valore read_ahead_kb corrente, completa i seguenti passaggi:
Individua il montaggio in
/proc/self/mountinfoe prendi nota dell'identificatore BDI nel terzo campo.Leggi il valore in kilobyte:
cat /sys/class/bdi/BDEV/read_ahead_kb
Scegliere un valore di read-ahead
Utilizza le seguenti linee guida per selezionare un valore di read-ahead appropriato per il tuo carico di lavoro:
Se non hai bisogno delle massime prestazioni, mantieni il valore predefinito della distribuzione e non ottimizzare il read-ahead.
Inizia con 15 volte
rsize(in KiB) se la distribuzione non lo imposta più automaticamente.Per
rsize=1048576(1 MiB), 15 voltersizeè di circa 15.360 KiB (15 MiB).Aumenta o diminuisci il valore in passaggi e misura le prestazioni utilizzando l'applicazione e
nfsiostat. Prima di utilizzarli in produzione,testa i valori superiori a 15.360 KiB.
Il read-ahead interagisce con la cache delle pagine. I carichi di lavoro che ignorano la cache (O_DIRECT) non traggono vantaggio dal read-ahead come le letture sequenziali memorizzate nella cache.
Mantenere il read-ahead dopo i riavvii
Le modifiche dinamiche vengono applicate fino a quando non smonti o riavvii. Per mantenere queste modifiche per i montaggi NFS, crea una regola udev.
Crea
/etc/udev/rules.d/99-nfs-readahead.rulese regola il valoreread_ahead_kbin base alle esigenze:SUBSYSTEM=="bdi", ACTION=="add", PROGRAM="/usr/bin/awk -v bdi=$kernel 'BEGIN{ret=1} {if ($4 == bdi) {ret=0}} END{exit ret}' /proc/fs/nfsfs/volumes", ATTR{read_ahead_kb}="15360"Utilizza un percorso assoluto per
awksul tuo sistema nell'attributoPROGRAM=.Ricarica
udev:sudo udevadm control --reload
Rimonta i volumi NFS o riavvia per attivare le regole per i nuovi dispositivi BDI.
Testa prima le regole udev su un host non di produzione. Se l'espressione di corrispondenza è errata, le regole errate potrebbero influire sui dispositivi a blocchi non NFS.
Indicazioni per i carichi di lavoro
Quando ottimizzi il read-ahead, tieni presente le seguenti indicazioni in base al tipo di carico di lavoro:
Letture casuali (OLTP, I/O casuali di piccole dimensioni): mantieni il read-ahead predefinito.
Letture sequenziali (media, copia collettiva e alcuni computing ad alte prestazioni): aumenta fino a 15 volte
rsizee misura.Misti: ottimizza solo se la profilazione mostra un collo di bottiglia di lettura sequenziale.
Basso
rsize(64 KiB) con un read-ahead predefinito di 128 KiB: valuta la possibilità di aumentare il read-ahead a 960 KiB o più.
Combina l'ottimizzazione del read-ahead con le impostazioni appropriate di rsize, nconnect e concorrenza.