Perché le prestazioni del mio file system EFS sono lente?

7 minuti di lettura
0

Le prestazioni di Amazon Elastic File System (Amazon EFS) sono molto lente. Quali sono i motivi più comuni di questo problema e come posso risolverlo?

Breve descrizione

L'architettura distribuita e a più zone di disponibilità di Amazon EFS comporta un piccolo sovraccarico di latenza per ogni operazione di file. La velocità di trasmissione effettiva di solito aumenta all'aumentare della dimensione media di I/O, poiché il sovraccarico viene ammortizzato su una maggiore quantità di dati.

Le prestazioni di Amazon EFS dipendono da diversi fattori, tra cui:

  • Classe di archiviazione di EFS.
  • Modalità di prestazioni e velocità di trasmissione effettiva.
  • Tipo di operazioni eseguite su EFS (ad esempio uso intensivo di metadati e così via).
  • Proprietà dei dati archiviati in EFS (ad esempio, dimensioni e numero di file).
  • Opzioni di montaggio.
  • Limitazioni lato client.

Risoluzione

Classe di archiviazione di EFS

Per ulteriori informazioni, consulta Riepilogo delle prestazioni.

Modalità di prestazioni e velocità di trasmissione effettiva

Modalità di prestazioni

Amazon EFS offre due modalità di prestazioni: Scopo generico e I/O max. Le applicazioni possono dimensionare i loro IOPS in modo elastico fino al limite associato alla modalità delle prestazioni. Per determinare quale modalità di prestazioni utilizzare, consulta Quali sono le differenze tra le modalità di prestazioni Scopo generico e I/O max in Amazon EFS?

Modalità di velocità di trasmissione effettiva

I carichi di lavoro basati su file sono in genere picchi che generano livelli elevati di velocità di trasmissione effettiva per brevi periodi, ma determinano livelli inferiori di velocità di trasmissione effettiva per periodi più lunghi. Amazon EFS è progettato per raggiungere livelli di velocità di trasmissione effettiva elevati per periodi di tempo.

La velocità di trasmissione effettiva e gli IOPS configurati influiscono sulle prestazioni di Amazon EFS. Come best practice, è opportuno confrontare i requisiti del carico di lavoro per aiutarti a selezionare le modalità di velocità di trasmissione effettiva e prestazioni appropriate. Se selezioni la velocità di trasmissione effettiva assegnata, seleziona i valori che si adattano correttamente ai requisiti del tuo carico di lavoro. Nel caso della modalità di bursting della velocità di trasmissione effettiva, puoi aumentare le dimensioni di Amazon EFS utilizzando file fittizi per aumentare la velocità di trasmissione effettiva di base. Per analizzare la velocità di trasmissione effettiva e gli IOPS utilizzati dal file system, consulta Utilizzo delle formule dei parametri con Amazon EFS.

Amazon EFS è inoltre scalabile fino a petabyte di volume di archiviazione e dispone di due modalità di velocità di trasmissione effettiva: bursting e provisioning. In modalità bursting, maggiore è la dimensione del file system EFS, maggiore sarà la scalabilità della velocità di trasmissione effettiva. Per la modalità di provisioning, la velocità di trasmissione effettiva per il file system è impostata in MB/s, indipendentemente dalla quantità di dati. Per ulteriori informazioni sulle modalità di velocità di trasmissione effettiva, consulta Come funzionano i crediti di bursting di Amazon EFS?

Tipi di operazioni eseguite sull'istanza EC2

Operazioni I/O dei metadati

Le prestazioni di EFS vanno in sofferenza nelle seguenti situazioni:

  • Quando le dimensioni dei file sono piccole perché è un sistema distribuito. Grazie a questa architettura distribuita, la latenza per ciascuna operazione sui file è minima. A causa di questa latenza per operazione, la velocità di trasmissione effettiva di solito aumenta all'aumentare della dimensione media di I/O, poiché il sovraccarico viene ammortizzato su una maggiore quantità di dati.
  • Le prestazioni sui file system condivisi vanno in sofferenza se un carico di lavoro o un'operazione genera molti file di piccole dimensioni in serie. Questo fa aumentare il sovraccarico di ogni operazione.
  • L'I/O dei metadati si verifica se l'applicazione esegue operazioni a uso intensivo 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 a uso intensivo di metadati. Per ulteriori informazioni, consulta quanto segue:
    Misurazione: in che modo Amazon EFS riporta le dimensioni di file system e oggetti.
    Ottimizzazione delle prestazioni dei file di piccole dimensioni.

Opzioni di montaggio

  • Se il file system viene montato usando amazon-efs-utils, per impostazione predefinita vengono applicate le opzioni di montaggio consigliate.
  • L'utilizzo di opzioni di montaggio non di default riduce potenzialmente le prestazioni. Ad esempio, l'uso di valori inferiori di rsize e wsize, riduce o disattiva la memorizzazione nelal cache degli attributi. Puoi controllare l'output del comando mount per vedere le opzioni di montaggio applicate correntemente:

Per ulteriori informazioni, consulta Montaggio del file system sull'istanza EC2 ed esecuzione del test.

Comando di esempio

>> mount

Output di esempio

fs-EXAMPLE3f75f.efs.us-east-1.amazonaws.com:/ on /home/ec2-user/efs type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=<EXAMPLEIP>,local_lock=none,addr=<EXAMPLEIP>)

Versione client NFS

Il protocollo Network File System (NFS) versione 4.1 (NFSv4) offre prestazioni migliori per le operazioni di lettura parallele di file piccoli (più di 10.000 file al secondo) rispetto a NFSv4.0 (meno di 1.000 file al secondo).

Per ulteriori informazioni, consulta Impostazioni di montaggio del client NFS.

Limitazioni lato client

Colli di bottiglia nell'istanza EC2

Se l'applicazione che utilizza il file system non fornisce le prestazioni previste da EFS, ottimizza l'applicazione. Puoi anche confrontare l'host o il servizio su cui è ospitata la tua applicazione, ad esempio Amazon EC2, AWS Lambda e così via. Una crisi di risorse sull'istanza EC2 potrebbe influire sulla capacità dell'applicazione di utilizzare EFS in modo efficace.

Per verificare se il provisioning di EC2 è insufficiente per i requisiti dell'applicazione, monitora i parametri di Amazon EC2 CloudWatch, ad esempio CPU, Amazon Elastic Block Store (Amazon EBS) e così via. L'analisi di vari parametri sull'architettura dell'applicazione e sui requisiti delle risorse consente di determinare se è necessario riconfigurare l'applicazione o l'istanza in base alle proprie esigenze.

Uso della versione del kernel Linux 4.0+

Per prestazioni ottimali e per evitare una serie di bug noti del client NFS, è consigliabile utilizzare un'AMI che abbia un kernel Linux versione 4.0 o successiva.

Un'eccezione a questa regola è RHEL e CentOS 7.3 e le relative versioni successive. Il kernel di questi sistemi operativi ha ricevuto versioni backport delle correzioni e dei miglioramenti applicati a NFS v4.1. Per ulteriori informazioni, consulta Supporto NFS.

Copia di file

Quando si copiano file usando il comando cp, si potrebbe verificare un rallentamento delle attività. Questo perché il comando copy è un'operazione seriale, il che significa che copia un file alla volta. Se le dimensioni di ogni file sono ridotte, la velocità di trasmissione effettiva per l'invio dei file è bassa.

Potresti anche notare una latenza durante l'invio di file. La natura distribuita di EFS implica che deve essere replicato su tutti i punti di montaggio, quindi c'è un sovraccarico per ogni operazione di file. Pertanto, ci si aspetta una latenza nell'invio dei file.

Suggerimenti

Una best practice consiste nell'eseguire operazioni I/O parallele, come l'utilizzo di rsync. Se utilizzi rsync, tieni presente che cp e rsync funzionano in operazioni seriali (a thread singolo) invece che in operazioni parallele. Questo rende la copia più lenta. Utilizza strumenti come fpart o NU Parallel. Fpart è uno strumento che ti aiuta a ordinare gli alberi dei file e a comprimerli in "partizioni". Fpart viene fornito con uno script di shell chiamato fpsync che avvolge fpart e rsync per lanciare diversi rsync in parallelo. Fpsync fornisce il proprio scheduler integrato. In questo modo puoi completare queste attività più velocemente rispetto all'utilizzo del più comune metodo seriale.

Per ulteriori informazioni, consulta Suggerimenti per le prestazioni di Amazon EFS.


Informazioni correlate

Quote per i client NFS

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa