Questa pagina fornisce indicazioni sulla configurazione dell'ambiente Parallelstore per ottenere le migliori prestazioni.
Consigli generali
Rimuovi eventuali alias da
ls
per migliorare il rendimento predefinito. Su molti sistemi, è associato all'aliasls -color=auto
, che è molto più lento con la configurazione predefinita di Parallelstore.Se le prestazioni delle operazioni sugli elenchi sono lente, valuta la possibilità di attivare la memorizzazione nella cache per il montaggio di dfuse.
Libreria di intercettazione
La libreria libioil
può essere utilizzata per migliorare le prestazioni delle operazioni di lettura e scrittura su DFuse da applicazioni che utilizzano libc. La libreria aggira il kernel intercettando le chiamate di lettura e scrittura POSIX dall'applicazione per gestirle direttamente nello spazio utente. Per maggiori dettagli, consulta la libreria di intercettazione.
Nella maggior parte dei casi, consigliamo di utilizzare la libreria di intercettazione su un'invocazione per processo o per applicazione.
Le situazioni in cui potresti non volere o non dover utilizzare la libreria di intercettazione includono:
- Solo le applicazioni create con libc possono utilizzare la libreria di intercettazione.
- Se hai un carico di lavoro che trae vantaggio dalla memorizzazione nella cache, ad esempio l'accesso ripetuto agli stessi file, ti consigliamo di non utilizzare la libreria di intercettazione.
- Se il tuo carico di lavoro prevede un uso intensivo di metadati, ad esempio se lavori con molti file di piccole dimensioni o con un elenco di directory molto grande, la libreria di intercettazione probabilmente non migliorerà le prestazioni.
L'invocazione di LD_PRELOAD
può essere impostata come variabile di ambiente nell'ambiente shell, ma a volte questa operazione può causare problemi. Ti consigliamo invece di specificarlo con ogni comando.
In alternativa, è possibile collegare la libreria di intercettazione all'applicazione in fase di compilazione con il flag -lioil
.
dfuse
memorizzazione nella cache
La memorizzazione nella cache è attiva in dfuse
per impostazione predefinita.
dfuse
utilizza due flag relativi alla cache quando monta un'istanza Parallelstore:
--disable-wb-cache
utilizza la memorizzazione nella cache write-through anziché write-back.--disable-caching
disattiva tutta la memorizzazione nella cache.
I seguenti suggerimenti si applicano alla memorizzazione nella cache e al rendimento:
- Se utilizzi la libreria di intercettazione, la memorizzazione nella cache di scrittura viene ignorata. Ti consigliamo di specificare
--disable-wb-cache
quando utilizzi la libreria di intercettazione. - Se il tuo carico di lavoro prevede la lettura di molti file una volta, devi disattivare la memorizzazione nella cache.
- Per i carichi di lavoro che coinvolgono molti client che modificano i file e gli aggiornamenti devono essere disponibili immediatamente per altri client, devi disattivare la memorizzazione nella cache.
- Se il tuo carico di lavoro legge gli stessi file ripetutamente, la memorizzazione nella cache può migliorare le prestazioni. Ciò è particolarmente vero se i file rientrano nella memoria dei clienti.
dfuse
utilizza la cache di pagine di Linux per la memorizzazione nella cache. Per i carichi di lavoro costituiti da piccole I/O su file di grandi dimensioni, oltre a attivare la memorizzazione nella cache, può essere utile aumentare la lettura anticipata di dfuse. Per aumentare la lettura anticipata di dfuse, dopo aver montato
dfuse
, esegui i seguenti comandi:echo 4096 > /sys/class/bdi/\$(mountpoint -d /mnt)/read_ahead_kb echo 100 > /sys/class/bdi/\$(mountpoint -d /mnt)/max_ratio
Se i tuoi carichi di lavoro prevedono una combinazione degli scenari precedenti, puoi montare la stessa istanza Parallelstore su più punti di montaggio con impostazioni di memorizzazione nella cache diverse.
Conteggio thread e conteggi coda eventi
Quando monti l'istanza Parallelstore, ti consigliamo i seguenti valori per --thread-count
e --eq-count
:
- Il valore del numero di thread non deve superare il numero di core vCPU.
- Il valore massimo consigliato per il numero di fili è compreso tra 16 e 20. Oltre questo numero, i vantaggi in termini di prestazioni sono minimi o nulli, indipendentemente dal numero di core disponibili.
- Il valore della coda di eventi deve essere la metà del valore del numero di thread.
Se il tuo carico di lavoro prevede un numero molto elevato di operazioni su file di piccole dimensioni e un accesso elevato ai metadati, puoi provare ad aumentare i numeri oltre questi consigli.
Impostazione di striping dei file
Lo striping dei file è una tecnica di archiviazione dei dati in cui un file viene suddiviso in blocchi o strisce e distribuito su più destinazioni di archiviazione. Lo striping dei file può aumentare le prestazioni consentendo letture e scritture parallele su più target di archiviazione di supporto dell'istanza.
Quando crei l'istanza Parallelstore, puoi specificare una delle tre impostazioni di spianamento dei file:
- Minimo
- Bilanciato
- Massimo
Queste impostazioni possono avere un'importanza significativa sul rendimento di Parallelstore. Per la maggior parte dei carichi di lavoro, consigliamo l'impostazione bilanciata, che dovrebbe essere un compromesso ragionevole per la maggior parte dei carichi di lavoro. Se il rendimento con l'impostazione bilanciata non è accettabile:
L'impostazione minima può migliorare le prestazioni per i workload con molti file di piccole dimensioni, in particolare quando le dimensioni medie dei file sono inferiori a 256 KB.
L'impostazione massima può migliorare le prestazioni per i carichi di lavoro con file molto grandi, in genere superiori a 8 GB, in particolare quando molti client condividono l'accesso agli stessi file.
Per la regolazione avanzata, lo strumento daos
fornisce impostazioni per file o directory. La sperimentazione della regolazione avanzata comporta rischi relativi al rendimento e in genere non è consigliata. Per ulteriori dettagli, consulta Informazioni sulla ridondanza e sullo sharding dei dati nei DAOS.
Impostazione di striping della directory
Quando crei l'istanza Parallelstore, puoi specificare una delle tre impostazioni di striping delle directory:
- Minimo
- Bilanciato
- Massimo
Per la maggior parte dei carichi di lavoro, consigliamo l'impostazione massima.
Per i carichi di lavoro che prevedono molte schede di directory di grandi dimensioni, le impostazioni bilanciate o minime possono migliorare il rendimento dell'elenco. Tuttavia, il funzionamento di altre operazioni, in particolare la creazione di file, potrebbe risentirne.
multiutente
Quando utilizzi lo strumento dfuse
per montare l'istanza Parallelstore, ti consigliamo di specificare il flag --multi-user
. Questo flag indica al kernel di rendere il sistema di file disponibile a tutti gli utenti di un client, anziché solo all'utente che esegue il processo DFuse. DFuse viene visualizzato come un file system generico multiutente e le chiamate chown
e chgrp
standard vengono attivate. Tutte le voci del
file system sono di proprietà dell'utente che le ha create, come è normale in un
file system POSIX,
Quando specifichi il flag --multi-user
, devi anche aggiornare /etc/fuse.conf
come utente root aggiungendo la seguente riga:
user_allow_other
Sembra che il montaggio dell'istanza come multiutente non abbia implicazioni sulle prestazioni.
Impostazione di codifica a cancellazione
La codifica a correzione di errori è impostata su 2+1. Questa impostazione non può essere modificata. Qualsiasi I/O che non utilizza EC2+1 viene rifiutata.
Allokazione delle risorse dei container sidecar di Google Kubernetes Engine
Nella maggior parte dei casi, le prestazioni insoddisfacenti con Google Kubernetes Engine e Parallelstore sono causate da una quantità insufficiente di CPU o memoria allocata al contenitore sidecar Parallelstore. Per allocare correttamente le risorse, prendi in considerazione i seguenti suggerimenti:
Leggi le considerazioni evidenziate in Configurare le risorse per il contenitore sidecar. Scoprirai perché potresti dover aumentare l'allocazione delle risorse e come configurare l'allocazione delle risorse dei container sidecar utilizzando le annotazioni del pod.
Puoi utilizzare il valore
0
per disattivare eventuali richieste o limiti di risorse nei cluster standard. Ad esempio, impostandogke-parallelstore/cpu-limit: 0
egke-parallelstore/memory-limit: 0
, i limiti di CPU e memoria del contenitore sidecar saranno vuoti e verranno utilizzate le richieste predefinite. Questa impostazione è utile quando non sai quante risorse sono necessarie per i tuoi carichi di lavoro e vuoi che dfuse utilizzi tutte le risorse disponibili su un nodo. Dopo aver capito quante risorse sono necessarie per dfuse in base alle metriche del carico di lavoro, puoi impostare limiti appropriati.Nei cluster Autopilot, non puoi utilizzare il valore
0
per annullare l'impostazione dei limiti e delle richieste di risorse dei container sidecar. Devi impostare esplicitamente un limite di risorse più elevato per il contenitore sidecar sui cluster Autopilot e fare affidamento sulle Google Cloud metriche per decidere se è necessario aumentare il limite di risorse.