Perché le prestazioni del mio file system EFS sono lente?
Le mie prestazioni di Amazon Elastic File System (Amazon EFS) sono molto lente. Desidero identificare la causa e risolvere il problema.
Breve descrizione
L'architettura distribuita a più zone di disponibilità di Amazon EFS comporta un piccolo sovraccarico di latenza per ogni operazione sui file. Il throughput complessivo generalmente aumenta all'aumentare della dimensione media degli I/O perché l'overhead viene ammortizzato su una maggiore quantità di dati.
Le prestazioni di Amazon EFS dipendono da diversi fattori, tra cui:
- Classe di archiviazione EFS.
- Modalità di performance e throughput.
- Tipo di operazioni eseguite su EFS (ad esempio uso intensivo di metadati e così via).
- Proprietà dei dati archiviati in EFS (come dimensione e numero di file).
- Opzioni di montaggio.
- Limitazioni lato client.
Risoluzione
Classe di archiviazione EFS
Per ulteriori informazioni, consulta Riepilogo delle prestazioni.
Modalità di performance e throughput
Modalità di performance
Amazon EFS offre due modalità di prestazioni, General Purpose e Max I/O. Le applicazioni possono scalare i propri IOPS in modo elastico fino al limite associato alla modalità performance.
Per determinare quale modalità di prestazioni utilizzare, consulta Modalità di prestazioni.
Modalità Throughput
Di norma i carichi di lavoro basati su file sono elevati e generano livelli elevati di velocità effettiva per brevi periodi accanto a livelli inferiori per periodi più lunghi. Amazon EFS è progettato per raggiungere livelli di velocità effettiva elevati per periodi di tempo.
Il throughput e gli IOPS configurati influiscono sulle prestazioni di Amazon EFS.
È consigliabile confrontare i requisiti del carico di lavoro per aiutarti a selezionare le modalità di throughput e prestazioni appropriate. Quando selezioni il throughput assegnato, seleziona i valori che soddisfano i requisiti del carico di lavoro. Per analizzare il throughput e gli IOPS consumati dal tuo file system, consulta Using metric math with Amazon EFS.
Amazon EFS può scalare fino a petabyte di volume di storage con tre modalità di throughput: bursting, elastic e provisioned. Con la modalità throughput bursting, la velocità effettiva su Amazon EFS aumenta all’aumentare delle dimensioni del file system. Con la modalità throughput assegnato, è possibile effettuare istantaneamente il provisioning del file system indipendentemente dalla quantità di dati archiviati. Con il throughput elastico, puoi aumentare o diminuire il throughput in base al carico di lavoro. Per ulteriori informazioni sulle modalità throughput, consulta Come funzionano i crediti di burst di Amazon EFS?
Tipi di operazioni eseguite sull'istanza EC2
Operazioni I/O sui metadati
Le prestazioni di EFS ne risentono nelle seguenti situazioni:
- Quando le dimensioni dei file sono ridotte perché si tratta di un sistema distribuito. L'architettura distribuita comporta un piccolo sovraccarico di latenza per ogni operazione sui file. A causa di questa latenza per operazione, il throughput complessivo generalmente aumenta all'aumentare della dimensione media degli I/O perché l'overhead viene ammortizzato su più dati.
- Le prestazioni sui file system condivisi sono compromesse se un carico di lavoro o un'operazione genera in serie molti file di piccole dimensioni. Ciò comporta un aumento del sovraccarico di ciascuna operazione.
- L'I/O dei metadati si verifica se l'applicazione esegue operazioni ad alta intensità di metadati, come "ls," "rm," "mkdir," "rmdir," "lookup," "getattr," o "setattr" e così via. Qualsiasi operazione che richieda al sistema di recuperare l'indirizzo di un blocco specifico è considerata un carico di lavoro ad alta intensità di metadati. Per ulteriori informazioni, consulta quanto segue:
Misurazione: In che modo Amazon EFS riporta le dimensioni dei file system e degli oggetti e suggerimenti sulle prestazioni.
Opzioni di montaggio
- Se monti il file system con amazon-efs-utils, le opzioni di montaggio consigliate vengono applicate per impostazione predefinita.
- Se si utilizzano opzioni di montaggio non predefinite, è possibile che si verifichi un peggioramento delle prestazioni. Ad esempio, se utilizzi rsize e wsize inferiori o se riduci o disattivi la memorizzazione nella cache degli attributi. Controlla l'output del comando monta per vedere le opzioni di montaggio attualmente disponibili:
Per ulteriori informazioni, consulta Montare il file system sull'istanza EC2 ed eseguire il test.
Versione client NFS
Il protocollo Network File System (NFS) versione 4.1 (NFSv4) offre prestazioni migliori per le operazioni parallele di lettura di piccoli file (più di 10.000 file al secondo) rispetto a NFSv4.0 (meno di 1.000 file al secondo).
Limitazioni lato client
Collo di bottiglia nell'istanza EC2
Se l'applicazione che utilizza il file system non garantisce le prestazioni previste da EFS, ottimizza l'applicazione. Inoltre, esegui il benchmark dell'host o del servizio su cui è ospitata la tua applicazione, ad esempio Amazon EC2, AWS Lambda e così via. Una carenza di risorse sull'istanza EC2 potrebbe influire sulla capacità dell'applicazione di utilizzare EFS in modo efficace.
Per verificare se EC2 non è sufficientemente predisposto per i requisiti della tua applicazione, monitora i parametri di Amazon EC2 CloudWatch, come CPU, Amazon Elastic Block Store (Amazon EBS) e così via. L'analisi di varie metriche sull'architettura dell'applicazione e sui requisiti delle risorse aiuta a determinare se è necessario riconfigurare l'applicazione o l'istanza in base alle proprie esigenze.
Usa la versione del kernel Linux 4.0+
Per prestazioni ottimali e per evitare diversi problemi noti dei client NFS, è consigliabile utilizzare un'AMI con una versione del kernel Linux 4.0 o successiva.
Un'eccezione a questa regola sono RHEL e CentOS 7.3 e versioni successive. Il kernel per questi sistemi operativi ha ricevuto versioni con backport delle correzioni e dei miglioramenti applicati a NFS v4.1. Per ulteriori informazioni, consulta Supporto NFS.
Copiare i file
Quando copi i file con il comando cp, potresti riscontrare una lentezza. Questo perché il comando copia è un'operazione seriale, il che significa che copia ogni file uno alla volta. Se le dimensioni di ogni file sono ridotte, la velocità effettiva per l'invio del file è ridotta.
Potresti anche notare una latenza quando invii file. La natura distribuita di EFS significa che deve essere replicato su tutti i punti di montaggio, quindi c'è un sovraccarico per operazione su file. Pertanto, la latenza è un comportamento previsto.
Raccomandazioni
È consigliabile eseguire operazioni di I/O parallele, ad esempio con rsync. Se usi rsync, tieni presente che cp e rsync funzionano in operazioni seriali (a thread singolo) anziché in operazioni parallele. Questo rallenta il processo di copia. Usa strumenti come fpart o NU Parallel. Fpart è uno strumento che ti aiuta a ordinare gli alberi dei file e a comprimerli in "partizioni". Fpart è dotato di uno script di shell chiamato fpsync che avvolge fpart e rsync per lanciare diversi rsync in parallelo. Fpsync fornisce il proprio scheduler incorporato. Questo metodo completa le attività più velocemente rispetto al metodo seriale più comune.
Per ulteriori informazioni, consulta Prezzi di Amazon EFS.
Informazioni correlate
Contenuto pertinente
- AWS UFFICIALEAggiornata 5 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 5 mesi fa