Come massimizzare l'istanza EC2 delle prestazioni


11

Disclaimer: sono uno sviluppatore di front-end in un tipo di mondo server.

Ciao ragazzi. Ho un'istanza del server su EC2, la c5d.9xlarge, le cui specifiche sono:

  • Sistema: Ubuntu 18.04
  • vCPU: 36 thread / core
  • Memoria: 72 GB
  • Memoria: SSD NVMe da 900 GB
  • Larghezza di banda EBS dedicata: 7.000 Mbps
  • Prestazioni di rete: 10 Gbps

Scenario: utilizzo questo server per caricare video di grandi dimensioni (4K, 1+ ore) ed elaborarli utilizzando FFMPEG ma rispetto al mio precedente server UpCloud con 12 core e 48 GB di RAM, questo server EC2 impiega 1,5 volte più a caricare e processare , che penso non dovrebbe essere il caso.

Domanda: Come posso massimizzare le prestazioni per quello che sto pagando?


Dovresti esaminare il costo del transcodificatore elastico AWS per vedere se funziona meglio per te.
Tim

Grazie @Tim. L'ho visto qualche tempo fa, ma in realtà ho ancora un paio di chiamate su questo server, quindi ho pensato di combinarle.
Martavis P.

Risposte:


19

Il tuo c5d.9xlargeviene fornito con 900 GB di spazio di archiviazione (noto anche come memoria effimera ) - lo stai usando per archiviare ed elaborare i file? Mentre la tua istanza ha una larghezza di banda EBS dedicata, lo storage SSD su istanza sarà ancora molto più veloce . Ti suggerisco di usarlo per tutti i file di origine e temporanei e di archiviare i risultati solo su EBS.

Ci sono alcuni avvertimenti con l'archiviazione delle istanze:

  1. Devi formattarlo e montarlo prima che possa essere utilizzato. Fare riferimento a questa risposta per maggiori dettagli: Montare automaticamente l'archiviazione dell'istanza SSD su AWS EC2 in Ubuntu 16.04

  2. Il contenuto viene cancellato quando si interrompe e si riavvia l'istanza. Sopravvive al riavvio ma non si ferma / avvia.


Aggiornamento: per impostazione predefinita l'SSD non è montato: per utilizzarlo dovrai seguire i passaggi nella risposta collegata sopra. Nella configurazione standard dopo l'avvio utilizzerai EBS che è più lento di SSD.

Quindi dovrai assicurarti che lo stai effettivamente utilizzando : imposta la directory di caricamento , di lavoro e temporanea su quel punto di montaggio SSD.

O ancora meglio - dato che hai 72 GB di RAM - crea un disco RAM e usalo per i file temporanei. Sarà ancora più veloce di SSD (se i file si adattano).

Prima di tutto ignora la velocità di upload e ottimizza l'elaborazione - carica il file su EBS e cronometra l'elaborazione, quindi carica su SSD e cronometra e poi su disco RAM e cronometra l'elaborazione. Guarda quanto differiscono.

La velocità di caricamento sarà influenzata da molti aspetti, tra cui la distanza e la latenza tra te e la regione AWS in cui stai caricando. Stai utilizzando una regione AWS vicino a te?

Per quanto riguarda le prestazioni della CPU - hai 36 CPU disponibili, tuttavia ogni singolo core potrebbe essere più lento rispetto ai core della tua precedente macchina a 12 core. Dipende dall'architettura della CPU e dalla velocità di clock. Tuttavia, se riesci a parallelizzare l'elaborazione video in 36 thread, dovresti stare meglio su questa istanza. Se fai affidamento su un singolo thread potresti non ottenere le prestazioni che desideri.

Spero possa aiutare :)


Sì, il disco rigido viene utilizzato per l'archiviazione durante l'elaborazione dei file e i file sono temporanei fino al termine del processo. I file risultanti vengono inviati a S3. In realtà non so nemmeno se l'SSD è montato. Sto iniziando a capire che AWS non utilizza le specifiche come impostazione predefinita. Il montaggio di un SSD rende il caricamento più veloce? Seguito: qualche idea su come posso massimizzare anche le specifiche della CPU consentite?
Martavis P.

@MartavisP. aggiunto alcuni aggiornamenti alla risposta.
MLu

Wow, grazie mille per l'informazione! Studierò e applicherò ciò che hai scritto.
Martavis P.

1
Bella risposta. È necessario eseguire un benchmark per trovare il collo di bottiglia, suddividerlo in base al tempo di caricamento, al tempo di elaborazione, all'utilizzo della CPU, all'utilizzo di EBS / rete, ecc. Potrebbe essere semplice quanto avere più latenza su questo server, quindi il caricamento è più lento, a cui puoi aggirare caricando i dati in thread paralleli su EC2 / S3. Netflix ha questo video su YouTube che potrebbe essere interessante, ma fai i tuoi passi di diagnosi prima di preoccuparti di quel tipo di dettagli.
Tim

1

C'è qualche possibilità di esaminare le alternative? Al costo di un c5d.9xlarge, anche se stai ottenendo uno sconto sostanziale, nel mercato dei server dedicati potresti avere diverse macchine equivalenti o migliori

L'uso del cloud per questo tipo di problema su scala verticale è una ricetta per pagare in eccesso e, come hai visto, prestazioni scadenti

Ci scusiamo per il tipo di mancata risposta, ma non ho abbastanza rappresentante per commentare


Questo è stato uno sconto per me, passando da UpCloud. Allora cosa mi consigliate?
Martavis P.

1
Sembra che lo stesso calcolo nel cloud sia sempre all'incirca il doppio del prezzo di un server noleggiato mensilmente in un hoster web casuale. Quindi, ci sono sconti aziendali (~ 30%) e puoi prenotare per 3 anni (2 volte più economico ma ora molto peggio di quel web hoster casuale). E quel server in affitto mensile di solito sembra essere 1/12 del prezzo di acquisto definitivo dell'hardware. Questo è quello che vedo almeno. Quindi nel cloud acquisti l'hardware ogni 3 mesi ma non lo possiedi.
usr

Sì, questo è un buon punto, ma devi ricordare che stai pagando per la manutenzione e la convenienza, come qualsiasi cosa nella vita. Preferirei che AWS fosse il mio meccanico piuttosto che passare giorni cercando di capire come risolvere un'interruzione del server. È una buona conoscenza, ma alla fine la mia carriera riguarda il codice, quindi il cloud funziona per me.
Martavis P.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.