O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Instancias Amazon EC2 a profundidad

390 visualizações

Publicada em

Instancias Amazon EC2 a profundidad

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Instancias Amazon EC2 a profundidad

  1. 1. EC2: Cómputo en la nube a profundidad Mayo, 2017
  2. 2. © 2017, Amazon Web Services Que esperar de esta Sesión • Comprender factores al seleccionar una instancia de EC2 • Definición de rendimiento del sistema y cómo se categoriza para las diferentes cargas de trabajo • Cómo las instancias de Amazon EC2 entregan rendimiento mientras se proporciona flexibilidad y agilidad • Cómo aprovechar al máximo tu experiencia de EC2 a través del lente de los distintos tipos de instancia
  3. 3. © 2017, Amazon Web Services API EC2 EC2 Amazon Elastic Compute Cloud es extenso Instancias Redes Opciones de compra
  4. 4. © 2017, Amazon Web Services Servidor Físico Hipervisor EC2 1 EC2 2 EC2 n Instancias de Amazon EC2
  5. 5. © 2017, Amazon Web Services En el pasado  Lanzado por primera vez en Agosto de 2006  Instancia M1  “Un tamaño para todos” M1
  6. 6. © 2017, Amazon Web Services Historia de Amazon EC2 2006 2008 2010 2012 2014 2016 m1.small m1.large m1.xlarge c1.medium c1.xlarge m2.xlarge m2.4xlarge m2.2xlarge cc1.4xlarge t1.micro cg1.4xlarge cc2.8xlarge m1.medium hi1.4xlarge m3.xlarge m3.2xlarge hs1.8xlarge cr1.8xlarge c3.large c3.xlarge c3.2xlarge c3.4xlarge c3.8xlarge g2.2xlarge i2.xlarge i2.2xlarge i2.4xlarge i2.4xlarge m3.medium m3.large r3.large r3.xlarge r3.2xlarge r3.4xlarge r3.8xlarge t2.micro t2.small t2.med c4.large c4.xlarge c4.2xlarge c4.4xlarge c4.8xlarge d2.xlarge d2.2xlarge d2.4xlarge d2.8xlarge g2.8xlarge t2.large m4.large m4.xlarge m4.2xlarge m4.4xlarge m4.10xlarge x1.32xlarge t2.nano m4.16xlarge p2.xlarge p2.8xlarge p2.16xlarge
  7. 7. © 2017, Amazon Web Services Generación de Instancias c4.xlarge Familia de Instancia Tamaño de instancia
  8. 8. © 2017, Amazon Web Services Familias de Instancia EC2 Propósito general Computo optimizado C3 Almacenamiento e I/O optimizado I2 P2 GPU optimizado Memoria optimizada R4C4 M4 D2 X1 G2
  9. 9. © 2017, Amazon Web Services ¿Qué es un CPU virtual? (vCPU)  Un vCPU es típicamente un núcleo físico hyper-threaded *  En Linux, los threads "A" son threads antes de los threads "B”  En Windows, los threads se entrelazan  Dividir el número de vCPU entre 2 para obtener el recuento de núcleos  Tipo de instancia cores por EC2 y RDS DB: https://aws.amazon.com/ec2/virtualcores/ • La familia "t" es especial
  10. 10. © 2017, Amazon Web Services
  11. 11. © 2017, Amazon Web Services Deshabilitar Hyper-Threading si lo requiere  Útil para aplicaciones pesadas FPU  Utilizar 'lscpu' para validar el diseño  Desconectado de los threads "B" for i in `seq 64 127`; do echo 0 > /sys/devices/system/cpu/cpu${i}/online done  Establecer grub para inicializar sólo la primera mitad de todos los threads maxcpus=63 [ec2-user@ip-172-31-7-218 ~]$ lscpu CPU(s): 128 On-line CPU(s) list: 0-127 Thread(s) per core: 2 Core(s) per socket: 16 Socket(s): 4 NUMA node(s): 4 Model name: Intel(R) Xeon(R) CPU Hypervisor vendor: Xen Virtualization type: full NUMA node0 CPU(s): 0-15,64-79 NUMA node1 CPU(s): 16-31,80-95 NUMA node2 CPU(s): 32-47,96-111 NUMA node3 CPU(s): 48-63,112-127
  12. 12. © 2017, Amazon Web Services
  13. 13. © 2017, Amazon Web Services Tamaño de instancia c4.8xlarge 2 - c4.4xlarge ≈ 4 - c4.2xlarge ≈ 8 - c4.xlarge ≈
  14. 14. © 2017, Amazon Web Services Asignación de recursos  Todos los recursos asignados están dedicados a su instancia sin ser sobre comprometidos (over commitment)*  Todos los vCPUs están dedicados a usted  La memoria asignada se asigna sólo a su instancia  Los recursos de red son particionados para evitar "vecinos ruidosos”  ¿Curioso sobre el número de instancias por host? Utilizar "Hosts Dedicados" como una guía. *Again, the “T” family is special
  15. 15. © 2017, Amazon Web Services "Lanzar nuevas instancias y ejecutar pruebas en paralelo es fácil ... [al elegir una instancia] no hay sustituto para medir el rendimiento de su aplicación completamente". - EC2 documentation
  16. 16. © 2017, Amazon Web Services Explicación de Timekeeping  Timekeeping en una instancia es engañosamente difícil  gettimeofday(), clock_gettime(), QueryPerformanceCounter()  El TSC  Contador de CPU, accesible desde el espacio de usuario  Requiere calibración, vDSO  Invariante sobre Sandy Bridge+ procesadores  Invariant on Sandy Bridge+ processors  Xen pvclock; No soporta vDSO  En instancias de generación actuales, utilice TSC como origen de reloj (clocksource)
  17. 17. © 2017, Amazon Web Services Evaluación comparativa - Aplicación de tiempo intensivo #include <sys/time.h> #include <time.h> #include <stdio.h> #include <unistd.h> int main() { time_t start,end; time (&start); for ( int x = 0; x < 100000000; x++ ) { float f; float g; float h; f = 123456789.0f; g = 123456789.0f; h = f * g; struct timeval tv; gettimeofday(&tv, NULL); } time (&end); double dif = difftime (end,start); printf ("Elasped time is %.2lf seconds.n", dif ); return 0; }
  18. 18. © 2017, Amazon Web Services Uso de la fuente de reloj Xen [centos@ip-192-168-1-77 testbench]$ strace -c ./test Elasped time is 12.00 seconds. % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 99.99 3.322956 2 2001862 gettimeofday 0.00 0.000096 6 16 mmap 0.00 0.000050 5 10 mprotect 0.00 0.000038 8 5 open 0.00 0.000026 5 5 fstat 0.00 0.000025 5 5 close 0.00 0.000023 6 4 read 0.00 0.000008 8 1 1 access 0.00 0.000006 6 1 brk 0.00 0.000006 6 1 execve 0.00 0.000005 5 1 arch_prctl 0.00 0.000000 0 1 munmap ------ ----------- ----------- --------- --------- ---------------- 100.00 3.323239 2001912 1 total
  19. 19. © 2017, Amazon Web Services Uso de la fuente de reloj TSC [centos@ip-192-168-1-77 testbench]$ strace -c ./test Elasped time is 2.00 seconds. % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 32.97 0.000121 7 17 mmap 20.98 0.000077 8 10 mprotect 11.72 0.000043 9 5 open 10.08 0.000037 7 5 close 7.36 0.000027 5 6 fstat 6.81 0.000025 6 4 read 2.72 0.000010 10 1 munmap 2.18 0.000008 8 1 1 access 1.91 0.000007 7 1 execve 1.63 0.000006 6 1 brk 1.63 0.000006 6 1 arch_prctl 0.00 0.000000 0 1 write ------ ----------- ----------- --------- --------- ---------------- 100.00 0.000367 53 1 total
  20. 20. © 2017, Amazon Web Services Cambiar con: Tip: Utilice TSC como origen de reloj
  21. 21. © 2017, Amazon Web Services Control de P-state y C-state  c4.8xlarge, d2.8xlarge, m4.10xlarge, m4.16xlarge, p2.16xlarge, x1.16xlarge, x1.32xlarge  Al entrar en estados inactivos más profundos, los núcleos no inactivos pueden alcanzar frecuencias de reloj superiores a 300MHz  Pero ... estados inactivos más profundos requieren más tiempo para salir, pueden no ser apropiados para cargas de trabajo sensibles a la latencia  Limitando el c-state agregando “intel_idle.max_cstate=1” to grub
  22. 22. © 2017, Amazon Web Services Tip: Control de P-state Control para AVX2  Si una aplicación hace uso intensivo de AVX2 en todos los núcleos, el procesador puede tratar de obtener más energía de lo que debería  El procesador reducirá de forma transparente la frecuencia  Cambios frecuentes de la frecuencia de CPU pueden ralentizar una aplicación sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo" Ver también: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/processor_state_control.html
  23. 23. © 2017, Amazon Web Services Revisión: Instancias T2  Instancia EC2 de menor costo a $ 0.0065 por hora  Rendimiento Dinámico (Burstable)  Asignación fija reforzada con créditos de CPU Modelo vCPU Linea Base Créditos CPU / Hora Memoria (GiB) Almacenamiento t2.nano 1 5% 3 .5 Solo EBS t2.micro 1 10% 6 1 Solo EBS t2.small 1 20% 12 2 Solo EBS t2.medium 2 40%** 24 4 Solo EBS t2.large 2 60%** 36 8 Solo EBS Propósito general, servicio web, entornos de desarrollo, bases de datos pequeñas
  24. 24. © 2017, Amazon Web Services Cómo funcionan los créditos  Un crédito de CPU proporciona el rendimiento de un núcleo de CPU completo durante un minuto  Una instancia gana créditos de CPU a un ritmo constante  Una instancia consume créditos cuando está activa  Los créditos caducan después de 24 horas Tasa de referencia Balance del crédito Tasa Dinámica
  25. 25. © 2017, Amazon Web Services Tip: Supervisar el saldo de crédito CPU
  26. 26. © 2017, Amazon Web Services Tecnología Intel https://aws.amazon.com/intel/
  27. 27. © 2017, Amazon Web Services Revisión: Instancias X1  La mayor instancia de memoria con 2 TB de DRAM  Socket quadcore, procesadores Intel E7 con 128 vCPU Modelo vCPU Memoria (GiB) Almacenamiento local Red x1.16xlarge 64 976 1x 1920GB SSD 10Gbps x1.32xlarge 128 1952 2x 1920GB SSD 20Gbps Bases de datos en memoria, gran procesamiento de datos, cargas de trabajo HPC
  28. 28. © 2017, Amazon Web Services NUMA  Acceso a memoria no-uniforme  Cada procesador en un sistema multi-CPU tiene memoria local que es accesible a través de una interconexión rápida  Cada procesador también puede acceder a la memoria de otros CPUs, pero el acceso a la memoria local es mucho más rápido que la memoria remota  El rendimiento está relacionado con el número de sockets de CPU y cómo están conectados - Intel QuickPath Interconnect (QPI)
  29. 29. © 2017, Amazon Web Services QPI 122GB 122GB 16 vCPU’s 16 vCPU’s r3.8xlarge
  30. 30. © 2017, Amazon Web Services QPI QPI QPIQPI QPI 488GB 488GB 488GB 488GB 32 vCPU’s 32 vCPU’s 32 vCPU’s 32 vCPU’s x1.32xlarge
  31. 31. © 2017, Amazon Web Services Tip: Soporte del Kernel para equilibrar NUMA  Una aplicación funcionará mejor cuando los threads de sus procesos accedan a la memoria en el mismo nodo NUMA.  El balanceo NUMA mueve las tareas más cerca de la memoria a la que está accediendo.  Todo esto es hecho automáticamente por el kernel de Linux cuando el balanceo de NUMA automático está activo: versión 3.8+ del kernel de Linux.  La compatibilidad con Windows para NUMA apareció por primera vez en las SKU de Enterprise y Data Center de Windows Server 2003.  Establezca "numa = off" o utilice numactl para reducir la paginación NUMA si su aplicación utiliza más memoria de la que cabrá en un solo socket o tiene threads que se mueven entre sockets
  32. 32. © 2017, Amazon Web Services Rendimiento de impacto de los sistemas operativos  Aplicación web de memoria intensiva  Creado por múltiples threads  Memoria rápidamente asignada / desasignada  Comparación del rendimiento de RHEL6 vs RHEL7  Observe la cantidad alta de tiempo "system" en la parte superior  Buscar una herramienta de referencia (ebizzy) con un perfil de rendimiento similar  Trazado su rendimiento con "perf”
  33. 33. © 2017, Amazon Web Services En RHEL6 [ec2-user@ip-172-31-12-150-RHEL6 ebizzy-0.3]$ sudo perf stat ./ebizzy -S 10 12,409 records/s real 10.00 s user 7.37 s sys 341.22 s Performance counter stats for './ebizzy -S 10': 361458.371052 task-clock (msec) # 35.880 CPUs utilized 10,343 context-switches # 0.029 K/sec 2,582 cpu-migrations # 0.007 K/sec 1,418,204 page-faults # 0.004 M/sec 10.074085097 seconds time elapsed
  34. 34. © 2017, Amazon Web Services RHEL6 Salida del gráfico de flama www.brendangregg.com/flamegraphs.html
  35. 35. © 2017, Amazon Web Services En RHEL7 [ec2-user@ip-172-31-7-22-RHEL7 ~]$ sudo perf stat ./ebizzy-0.3/ebizzy -S 10 425,143 records/s real 10.00 s user 397.28 s sys 0.18 s Performance counter stats for './ebizzy-0.3/ebizzy -S 10': 397515.862535 task-clock (msec) # 39.681 CPUs utilized 25,256 context-switches # 0.064 K/sec 2,201 cpu-migrations # 0.006 K/sec 14,109 page-faults # 0.035 K/sec 10.017856000 seconds time elapsed Desde 12,400 registros/s! Abajo de 1,418,204!
  36. 36. © 2017, Amazon Web Services RHEL7 Salida del gráfico de flama
  37. 37. © 2017, Amazon Web Services Hardware Modelo de controlador dividido Dominio del controlador Dominio invitado Dominio invitado VMM Controlador Delantero Driver FrontEnd Controlador Trasero Controlador del Dispositivo CPU Físico Memoria Física Dispositivo de almacenamiento CPU Virtual Memoria Virtual Programación de CPU Sockets Applicación 1 23 4 5
  38. 38. © 2017, Amazon Web Services Concesión en Kernels pre-3.8.0  Requiere "mapeo de concesión" antes de 3.8.0  Los mapeo de concesión son operaciones costosas debido a descargas de TLB SSD Dominio inter I/O: (1) Conceder memoria (2) Escribir en buffer de anillo (3) Evento de señal (4) Leer buffer de anillo (5) Mapeo concedido (6) Concesiones de lectura o escritura (7) Desasignar concesiones read(fd, buffer,…) Dominio I/O Instancia
  39. 39. © 2017, Amazon Web Services Concesión en Kernels 3.8.0+, persistente e indirecto  Asignaciones de mapeo concesión se configuran en un pool una sola vez  Los datos se copian dentro y fuera de la concesión del Pool SSD read(fd, buffer…) Dominio I/O Instancia Concesión de pool Copiar a y desde una concesión de pool
  40. 40. © 2017, Amazon Web Services Validación de concesiones persistentes [ec2-user@ip-172-31-4-129 ~]$ dmesg | egrep -i 'blkfront' Blkfront and the Xen platform PCI driver have been compiled for this kernel: unplug emulated disks. blkfront: xvda: barrier or flush: disabled; persistent grants: enabled; indirect descriptors: enabled; blkfront: xvdb: flush diskcache: enabled; persistent grants: enabled; indirect descriptors: enabled; blkfront: xvdc: flush diskcache: enabled; persistent grants: enabled; indirect descriptors: enabled; blkfront: xvdd: flush diskcache: enabled; persistent grants: enabled; indirect descriptors: enabled; blkfront: xvde: flush diskcache: enabled; persistent grants: enabled; indirect descriptors: enabled; blkfront: xvdf: flush diskcache: enabled; persistent grants: enabled; indirect descriptors: enabled; blkfront: xvdg: flush diskcache: enabled; persistent grants: enabled; indirect descriptors: enabled; blkfront: xvdh: flush diskcache: enabled; persistent grants: enabled; indirect descriptors: enabled; blkfront: xvdi: flush diskcache: enabled; persistent grants: enabled; indirect descriptors: enabled;
  41. 41. © 2017, Amazon Web Services 2009 – Hace ya algún tiempo de lo que crees  Avatar fue la mejor película en los Cines  Facebook superó a MySpace en usuarios activos  Presidente Obama realizo su juramentado en el cargo  El kernel de Linux 2.6.32 fue lanzado Tip: Utilizar kernel 3.10+  Amazon Linux 13.09 o posterior  Ubuntu 14.04 o posterior  RHEL / Centos 7 o posterior  Etc.
  42. 42. © 2017, Amazon Web Services Dispositivo Pass Through: Enhanced Networking  SR-IOV elimina la necesidad del controlador de dominio  El dispositivo de red física expone la función virtual a la instancia  Requiere un controlador especializado, lo que significa:  Su instancia OS debe saber acerca del driver  EC2 necesita indicársele que su instancia puede usarlo
  43. 43. © 2017, Amazon Web Services Hardware Después de redes mejoradas Controlador de Dominio Dominio Invitado Dominio Invitado VMM Controlador NIC CPU Físico Memoria Física Controlador de Red SR-IOV CPU Virtual Memoria Virtual Programación CPU Sockets Applicación 1 2 3 Controlador NIC
  44. 44. © 2017, Amazon Web Services Adaptador de Red Elástico (ENA)  Próxima generación de redes mejoradas  Checksums de hardware  Soporte de múltiples-colas  Recepción de Dirección lateral  20Gbps en un grupo de ubicaciones  Nuevo controlador de red “Open Source” por Amazon
  45. 45. © 2017, Amazon Web Services Rendimiento de la Red  20 Gigabit y 10 Gigabit  Medida de una-via, doble que el bidireccional (duplex completo)  Alto, Moderado, Bajo - Una función del tamaño de instancia y la optimización de EBS  No todos creados iguales - Si es importante, probar con “iperf”!  Utilice ”placement groups” cuando necesite ancho de banda consistente entre instancias  Todo el tráfico limitado a 5 Gb/s al salir de EC2
  46. 46. © 2017, Amazon Web Services Rendimiento EBS  El tamaño de la instancia afecta el rendimiento  Utilizar “EBS optimization” si el desempeño EBS es importante
  47. 47. © 2017, Amazon Web Services  Seleccione AMIs HVM  Timekeeping: utilizar TSC  Controles de C-state and P-state  Supervisar los créditos de CPU T2  Utilice un sistema operativo Linux moderno  Balanceo NUMA  Concesiones persistentes para el rendimiento de I/O  “Enhanced Networking”  Perfile su aplicación Resumen: Aprovechar al máximo las instancias de EC2
  48. 48. © 2017, Amazon Web Services  Objetivo: rendimiento de Bare-metal y en muchos escenarios ya esta ahí  Historia de la eliminación de intermediación de hipervisor y controladores de dominios  Virtualización asistida por hardware  Planificación y concesión de eficiencias  Dispositivo pass through Temas de virtualización
  49. 49. © 2017, Amazon Web Services Siguientes pasos  Visitar la documentación de Amazon EC2  Iniciar una instancia y probar su aplicación.
  50. 50. © 2017, Amazon Web Services Últimos 4 meses…..  EC2 F1 Instances with FPGAs – Now Generally Available  I3 Instances for Demanding, I/O Intensive Applications  EC2 Systems Manager – Configure & Manage EC2 and On- Premises Systems  New – IPv6 Support for EC2 Instances in Virtual Private Clouds  In the Works – Amazon EC2 Elastic GPUs  New – Next Generation (R4) Memory-Optimized EC2 Instances https://aws.amazon.com/blogs/aws/category/amazon-ec2/
  51. 51. © 2017, Amazon Web Services

×