Más contenido relacionado
La actualidad más candente (20)
Similar a Instancias Amazon EC2 a profundidad (20)
Más de Amazon Web Services LATAM (20)
Instancias Amazon EC2 a profundidad
- 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. © 2017, Amazon Web Services
API
EC2
EC2
Amazon Elastic Compute Cloud es extenso
Instancias
Redes
Opciones de compra
- 4. © 2017, Amazon Web Services
Servidor Físico
Hipervisor
EC2 1 EC2 2 EC2 n
Instancias de Amazon EC2
- 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. © 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. © 2017, Amazon Web Services
Generación de
Instancias
c4.xlarge
Familia de
Instancia
Tamaño de
instancia
- 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. © 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
- 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
- 13. © 2017, Amazon Web Services
Tamaño de instancia
c4.8xlarge 2 - c4.4xlarge
≈
4 - c4.2xlarge
≈
8 - c4.xlarge
≈
- 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. © 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. © 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. © 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. © 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. © 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. © 2017, Amazon Web Services
Cambiar con:
Tip: Utilice TSC como origen de reloj
- 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. © 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. © 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. © 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. © 2017, Amazon Web Services
Tip: Supervisar el saldo de crédito CPU
- 26. © 2017, Amazon Web Services
Tecnología Intel
https://aws.amazon.com/intel/
- 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. © 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. © 2017, Amazon Web Services
QPI
122GB 122GB
16 vCPU’s 16 vCPU’s
r3.8xlarge
- 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. © 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. © 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. © 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. © 2017, Amazon Web Services
RHEL6 Salida del gráfico de flama
www.brendangregg.com/flamegraphs.html
- 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!
- 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. © 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. © 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. © 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. © 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. © 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. © 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. © 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. © 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. © 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. © 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. © 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. © 2017, Amazon Web Services
Siguientes pasos
Visitar la documentación de Amazon EC2
Iniciar una instancia y probar su aplicación.
- 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/