So maximieren Sie die Leistung der EC2-Instanz

11

Haftungsausschluss: Ich bin ein Front-End-Entwickler in einer Server-Welt.

Hallo Leute. Ich habe eine Serverinstanz auf EC2 c5d.9xlarge, deren Spezifikationen sind:

  • System: Ubuntu 18.04
  • vCPU: 36 Threads / Kerne
  • Speicher: 72 GB
  • Speicher: 900 GB NVMe SSD
  • Spezielle EBS-Bandbreite: 7.000 Mbit / s
  • Netzwerkleistung: 10 Gbit / s

Szenario: Ich verwende diesen Server, um große Videos (4K, 1+ Stunden) hochzuladen und sie mit FFMPEG zu verarbeiten. Im Vergleich zu meinem vorherigen UpCloud-Server mit 12 Kernen und 48 GB RAM dauert das Hochladen und Verarbeiten dieses EC2-Servers 1,5-mal länger , was meiner Meinung nach nicht der Fall sein sollte.

Frage: Wie kann ich die Leistung für das, wofür ich bezahle, maximieren?

Martavis P.
quelle
Sie sollten sich die Kosten des AWS Elastic Transcoder ansehen, um festzustellen , ob er für Sie besser funktioniert.
Tim
Danke @Tim. Ich habe es vor einiger Zeit gesehen, aber ich habe tatsächlich noch ein paar Anrufe auf diesem Server, also dachte ich mir, ich würde sie kombinieren.
Martavis P.

Antworten:

19

Sie werden c5d.9xlargemit 900 GB Instanzspeicher (auch als kurzlebiger Speicher bezeichnet ) geliefert. Verwenden Sie diesen zum Speichern und Verarbeiten der Dateien? Während Ihre Instanz über eine dedizierte EBS-Bandbreite verfügt, ist der SSD-Speicher auf der Instanz immer noch viel schneller . Ich schlage vor, dass Sie dies für alle Quell- und temporären Dateien verwenden und die Ergebnisse nur in EBS speichern.

Es gibt jedoch einige Einschränkungen bei der Speicherung von Instanzen:

  1. Sie müssen es formatieren und mounten , bevor es verwendet werden kann. Weitere Informationen finden Sie in dieser Antwort: SSD-Instanzspeicher automatisch auf AWS EC2 in Ubuntu 16.04 bereitstellen

  2. Der Inhalt wird gelöscht, wenn Sie die Instanz stoppen und neu starten. Es überlebt den Neustart, aber nicht das Stoppen / Starten.


Update: Standardmäßig ist die SSD nicht gemountet. Sie müssen die Schritte in der oben verlinkten Antwort ausführen, um sie verwenden zu können. In der Standardkonfiguration nach dem Start verwenden Sie das EBS, das langsamer als die SSD ist.

Dann müssen Sie sicherstellen, dass Sie es tatsächlich verwenden - setzen Sie das Upload- , Arbeits- und temporäre Verzeichnis auf diesen SSD-Mount-Punkt.

Oder noch besser - da Sie 72 GB RAM haben - erstellen Sie eine RAM-Disk und verwenden Sie diese für temporäre Dateien. Das ist sogar schneller als SSD (wenn die Dateien passen).

Ignorieren Sie zunächst die Upload-Geschwindigkeit und optimieren Sie die Verarbeitung - laden Sie die Datei auf EBS hoch und legen Sie die Zeit für die Verarbeitung fest, laden Sie sie dann auf die SSD hoch und messen Sie sie und dann auf die RAM-Disk und messen Sie die Verarbeitung. Sehen Sie, wie sehr sie sich unterscheiden.

Die Upload-Geschwindigkeit wird von vielen Aspekten beeinflusst, einschließlich der Entfernung und Latenz zwischen Ihnen und der AWS-Region, in die Sie hochladen. Verwenden Sie eine AWS-Region in Ihrer Nähe?

Re CPU - Leistung - Sie haben 36 CPUs zur Verfügung stehen, aber jeder einzelner Kern kann langsamer sein als die Kerne in Ihrer bisherigen 12-Core - Maschine. Dies hängt von der CPU-Architektur und der Taktrate ab. Wenn Sie jedoch die Videoverarbeitung in 36 Threads parallelisieren können, sollten Sie in dieser Instanz besser dran sein. Wenn Sie sich auf einen einzelnen Thread verlassen, erhalten Sie möglicherweise nicht die gewünschte Leistung.

Ich hoffe, das hilft :)

MLu
quelle
Ja, die Festplatte wird zum Speichern verwendet, während die Dateien verarbeitet werden, und die Dateien sind vorübergehend, bis der Vorgang abgeschlossen ist. Die resultierenden Dateien werden an S3 gesendet. Ich weiß eigentlich auch nicht, ob die SSD gemountet ist. Mir wird langsam klar, dass AWS die Spezifikationen nicht als Standardeinstellung verwendet. Beschleunigt das Mounten einer SSD den Upload? Follow-up: Irgendwelche Ideen, wie ich die zulässige CPU-Spezifikation auch maximal nutzen kann?
Martavis P.
@MartavisP. Der Antwort wurden einige Aktualisierungen hinzugefügt.
MLu
Wow, vielen Dank für die Information! Ich werde studieren und anwenden, was Sie geschrieben haben.
Martavis P.
1
Gute Antwort. Sie müssen ein Benchmarking durchführen, um den Engpass zu finden, ihn nach Upload-Zeit, Verarbeitungszeit, CPU-Auslastung, EBS- / Netzwerkauslastung usw. aufzuschlüsseln. Es kann so einfach sein, dass Sie mehr Latenz auf diesen Server haben, sodass der Upload langsamer ist. Dies können Sie umgehen, indem Sie Daten in parallelen Threads auf EC2 / S3 hochladen. Netflix hat dieses Video auf Youtube, das vielleicht interessant ist, aber machen Sie Ihre Diagnoseschritte, bevor Sie sich mit solchen Details beschäftigen.
Tim
1

Gibt es Möglichkeiten, nach Alternativen zu suchen? Für die Kosten eines c5d.9xlarge, selbst wenn Sie einen erheblichen Rabatt erhalten, könnten Sie auf dem dedizierten Servermarkt mehrere gleichwertige oder bessere Maschinen haben

Die Verwendung der Cloud für diese Art von vertikal skaliertem Problem ist ein Rezept für Überzahlung und, wie Sie gesehen haben, eine schlechte Leistung

Entschuldigen Sie die Art der Nichtantwort, aber ich habe nicht genug Vertreter, um einen Kommentar abzugeben

Luke F.
quelle
Dies war ein Rabatt für mich, als ich von UpCloud wechselte. Was empfehlen Sie?
Martavis P.
1
Es scheint, dass der gleiche Rechenaufwand in der Cloud immer ungefähr das Vierfache des Preises eines monatlich gemieteten Servers bei einem zufälligen Webhoster beträgt. Dann gibt es Unternehmensrabatte (~ 30%) und Sie können für 3 Jahre buchen (2x billiger, aber jetzt viel schlechter als dieser zufällige Webhoster). Und dieser monatlich gemietete Server scheint normalerweise 1/12 des Preises für den direkten Kauf der Hardware zu sein. Das sehe ich zumindest. In der Cloud kaufen Sie die Hardware also alle 3 Monate, aber Sie besitzen sie nicht.
usr
Ja, das ist ein guter Punkt, aber Sie müssen sich daran erinnern, dass Sie wie alles im Leben für die Wartung und den Komfort bezahlen. Ich möchte lieber, dass AWS mein Mechaniker ist, als Tage damit zu verbringen, herauszufinden, wie ein Serverausfall behoben werden kann. Es ist ein gutes Wissen, aber letztendlich geht es in meiner Karriere um den Code, damit die Cloud für mich funktioniert.
Martavis P.