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?
ubuntu
amazon-web-services
amazon-ec2
Martavis P.
quelle
quelle
Antworten:
Sie werden
c5d.9xlarge
mit 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:
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
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 :)
quelle
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 habenDie 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
quelle