Cómo maximizar la instancia de rendimiento EC2


11

Descargo de responsabilidad: soy un desarrollador front-end en un mundo de servidores.

Hola chicos. Tengo una instancia de servidor en EC2 c5d.9xlarge, cuyas especificaciones son:

  • Sistema: Ubuntu 18.04
  • vCPU: 36 hilos / núcleos
  • Memoria: 72 GB.
  • Almacenamiento: SSD NVMe de 900 GB
  • Ancho de banda de EBS dedicado: 7,000 Mbps
  • Rendimiento de red: 10 Gbps

Escenario: uso este servidor para cargar videos grandes (4K, 1+ hr) y procesarlos usando FFMPEG, pero en comparación con mi servidor UpCloud anterior con 12 núcleos y 48 GB de RAM, este servidor EC2 tarda 1.5 veces más en cargar y procesar , que creo que no debería ser el caso.

Pregunta: ¿Cómo maximizo el rendimiento de lo que estoy pagando?


Debe consultar el costo del transcodificador elástico AWS para ver si funciona mejor para usted.
Tim

Gracias @Tim. Lo vi hace un tiempo, pero en realidad tengo un par de llamadas más en este servidor, así que pensé en combinarlas.
Martavis P.

Respuestas:


19

Su c5d.9xlargeviene con almacenamiento de instancia de 900GB (también conocido como almacenamiento efímero ): ¿lo está utilizando para almacenar y procesar los archivos? Si bien su instancia tiene un ancho de banda EBS dedicado, el almacenamiento SSD en la instancia seguirá siendo mucho más rápido . Le sugiero que use eso para todos los archivos fuente y temporales y solo almacene los resultados en EBS.

Sin embargo, hay algunas advertencias con almacenamiento de instancias:

  1. Debe formatearlo y montarlo antes de que pueda usarse. Consulte esta respuesta para obtener más detalles: Monte automáticamente el almacenamiento de instancias SSD en AWS EC2 en Ubuntu 16.04

  2. El contenido se borra cuando detiene y reinicia la instancia. Sobrevive al reinicio pero no para / inicia.


Actualización: de forma predeterminada, la SSD no está montada; tendrá que seguir los pasos en la respuesta vinculada anterior para usarla. En la configuración estándar después del arranque, usará el EBS, que es más lento que el SSD.

Luego tendrá que asegurarse de que realmente lo está utilizando : configure el directorio de carga , de trabajo y temporal en ese punto de montaje SSD.

O incluso mejor, ya que tiene 72 GB de RAM, cree un disco RAM y úselo para archivos temporales. Eso será incluso más rápido que SSD (si los archivos se ajustan).

En primer lugar, ignore la velocidad de carga y optimice el procesamiento: cargue el archivo en EBS y cronometre el procesamiento, luego cárguelo en SSD y móntelo y luego en el disco RAM y cronometre el procesamiento. Mira cuánto difieren.

La velocidad de carga se verá afectada por muchos aspectos, incluida la distancia y la latencia entre usted y la región de AWS a la que está cargando. ¿Está utilizando una región de AWS cercana?

Re rendimiento de la CPU : tiene 36 CPU disponibles, sin embargo, cada núcleo puede ser más lento que los núcleos de su máquina anterior de 12 núcleos. Depende de la arquitectura de la CPU y la velocidad del reloj. Sin embargo, si puede paralelizar el procesamiento de video en 36 hilos, debería estar mejor en esta instancia. Si confía en un solo hilo, es posible que no obtenga el rendimiento que desea.

Espero que ayude :)


Sí, el disco duro se usa para almacenar mientras se procesan los archivos y los archivos son temporales hasta que finaliza el proceso. Los archivos resultantes se envían a S3. De hecho, tampoco sé si el SSD está montado. Estoy empezando a darme cuenta de que AWS no usa las especificaciones como configuración predeterminada. ¿Montar un SSD hace que la carga sea más rápida? Seguimiento: ¿alguna idea de cómo puedo maximizar la especificación de CPU permitida también?
Martavis P.

@MartavisP. agregó algunas actualizaciones a la respuesta.
MLu

Wow, muchas gracias por la información! Estudiaré y aplicaré lo que has escrito.
Martavis P.

1
Gran respuesta. Debe realizar una evaluación comparativa para encontrar el cuello de botella, desglosarlo en el tiempo de carga, el tiempo de procesamiento, el uso de la CPU, el uso de EBS / red, etc. Podría ser tan simple como tener más latencia en este servidor para que la carga sea más lenta, que puede solucionar mediante la carga de datos en hilos paralelos a EC2 / S3. Netflix tiene este video en YouTube que puede ser interesante, pero realice los pasos de diagnóstico antes de molestarse con ese tipo de detalles.
Tim

1

¿Hay alguna posibilidad de buscar alternativas? Por el costo de un c5d.9xlarge, incluso si obtiene un descuento sustancial, en el mercado de servidores dedicados podría tener varias máquinas equivalentes o mejores

El uso de la nube para este tipo de problema de escala vertical es una receta para pagar en exceso y, como has visto, un bajo rendimiento

Perdón por el tipo de no respuesta, pero no tengo suficiente representante para comentar


Esto fue un descuento para mí, cambiar de UpCloud. Entonces, ¿qué me recomienda?
Martavis P.

1
Parece que el mismo cálculo en la nube siempre es aproximadamente 4 veces el precio de un servidor alquilado mensualmente en algún proveedor de alojamiento web aleatorio. Luego, hay descuentos empresariales (~ 30%) y puede reservar por 3 años (2 veces más barato pero ahora mucho peor que ese proveedor de alojamiento web aleatorio). Y ese servidor alquilado mensualmente parece ser 1/12 del precio de la compra directa del hardware. Eso es lo que veo al menos. Entonces, en la nube, usted compra el hardware cada 3 meses, pero no lo posee.
usr

Sí, ese es un buen punto, pero debes recordar que estás pagando por el mantenimiento y la comodidad, como cualquier cosa en la vida. Prefiero dejar que AWS sea mi mecánico que pasar días tratando de descubrir cómo solucionar una interrupción del servidor. Es un buen conocimiento tener, pero en última instancia, mi carrera es sobre el código, por lo que la nube funciona para mí.
Martavis P.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.