EC2 Cómputo en la nube a profundidad

52
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Alejandro Flores, Arquitecto de Soluciones Abril 06, 2016 EC2 Cómputo en la nube a profundidad

Transcript of EC2 Cómputo en la nube a profundidad

Page 1: EC2 Cómputo en la nube a profundidad

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Alejandro Flores, Arquitecto de Soluciones

Abril 06, 2016

EC2

Cómputo en la nube a profundidad

Page 2: EC2 Cómputo en la nube a profundidad

Amazon EC2 es grande

Opciones de Compra

APIsInstancias

Red

Page 3: EC2 Cómputo en la nube a profundidad

Instancias EC2

Host Server

Hypervisor

Guest 1 Guest 2 Guest n

Page 4: EC2 Cómputo en la nube a profundidad

Instancias EC2 : Historia

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.largem4.xlarge

m4.2xlarge

m4.4xlarge

m4.10xlarge

Page 5: EC2 Cómputo en la nube a profundidad

Qué esperar de esta sesión ?

• Definir el desempeño de un sistema y cómo se

caracteriza para diferentes cargas de trabajo

• Cómo las instancias EC2 ofrecen un óptimo desempeño,

manteniendo flexibilidad y agilidad

• Cómo aprovechar de mejor manera el uso de las

instancias EC2

Page 6: EC2 Cómputo en la nube a profundidad

Definiendo el desempeño

Page 7: EC2 Cómputo en la nube a profundidad

Reserva de un servidor

• Los servidores son reservados para realizar trabajos

• El desempeño de mide de manera diferente

dependiendo del trabajo que se realice

Page 8: EC2 Cómputo en la nube a profundidad

• Lo que desempeño significa,

depende de la perspectiva:

• Tiempo de respuesta

• Rendimiento

• Consistencia

Desempeño = perspectiva

Aplicación

Librerías de Sistema

Llamadas a sistema

Kernel

Dispositivo

Carga

Page 9: EC2 Cómputo en la nube a profundidad

Factores de desempeño

Recurso Factores Indicadores

CPU Sockets, número de núcleos,

frecuencia de reloj, capacidad

Utilización de CPU, tamaño de la cola

de ejecución

Memoria Capacidad Memoria libre, paginación, swapping

Interfaz de

Red

Ancho de Banda Máximo, paquetes Cantidad paquetes recibidos,

transferencia de paquetes sobre el

máximo ancho de banda

Disco IOPS, Desempeño Tamaño de cola en espera, utilización

de dispositivos, errores en los

dispositivos

Page 10: EC2 Cómputo en la nube a profundidad

Utilización de Recursos

• Dada una carga, qué tan eficientemente se utilizan los

recursos

• Un recurso con utilización del 100% no puede recibir o

atender más peticiones

• Baja utilización indica que se han reservado más

recursos de los necesarios

Page 11: EC2 Cómputo en la nube a profundidad

Ejemplo: Aplicación Web

• MediaWiki instalado en un servidor Apache con 140

páginas de contenido

• Incremento de carga en intervalos de tiempo

Page 12: EC2 Cómputo en la nube a profundidad

Ejemplo: Aplicación Web

• Estadísticas de Memoria

Page 13: EC2 Cómputo en la nube a profundidad

Ejemplo: Aplicación Web

• Estadísticas de Disco

Page 14: EC2 Cómputo en la nube a profundidad

Ejemplo: Aplicación Web

• Estadísticas de Red

Page 15: EC2 Cómputo en la nube a profundidad

Ejemplo: Aplicación Web

• Estadísticas de CPU

Page 16: EC2 Cómputo en la nube a profundidad

Selección de instancia = optimización

• La selección de una instancia es equivalente a la

optimización de los recursos

• Dar de baja instancias es tan fácil como adquirir nuevas

• Alinear el tipo de carga con el tipo de instancia óptimo

Page 17: EC2 Cómputo en la nube a profundidad

Ofreciendo desempeño de

cómputo en EC2

Page 18: EC2 Cómputo en la nube a profundidad

Instrucciones de CPU y

Niveles de Protección

Page 19: EC2 Cómputo en la nube a profundidad

Instrucciones de CPU y Niveles de Protección

• CPU tiene dos niveles de protección: Kernel y Aplicación

• Instrucciones privilegiadas no se pueden ejecutar en

modo usuario para proteger el sistema.

• Aplicaciones apalancan las llamadas al sistema al

kernel

Instrucciones privilegiadas:

• Inicio de I/O

• Acceso a I/O de Dispositivos

(red, disco)

• Manejo del tiempo

• Pausa CPU Aplicación

Kernel

Page 20: EC2 Cómputo en la nube a profundidad

Ejemplo: Llamadas al sistema de una aplicación web

[ec2-user@ip-10-0-121-0 ~]$ sudo strace -c -p 2440

Process 2440 attached

^CProcess 2440 detached

% time seconds usecs/call calls errors syscall

------ ----------- ----------- --------- --------- ----------------

0.00 0.000000 0 931 11 read

0.00 0.000000 0 887 write

0.00 0.000000 0 121 open

0.00 0.000000 0 154 close

0.00 0.000000 0 1357 32 stat

0.00 0.000000 0 341 fstat

0.00 0.000000 0 99 11 lstat

0.00 0.000000 0 865 poll

0.00 0.000000 0 121 mmap

0.00 0.000000 0 121 munmap

0.00 0.000000 0 220 brk

0.00 0.000000 0 11 rt_sigaction

0.00 0.000000 0 11 rt_sigprocmask

0.00 0.000000 0 22 writev

0.00 0.000000 0 66 22 access

Page 21: EC2 Cómputo en la nube a profundidad

Porqué PV-HVM es más rápido que PV ?

• PV-HVM permite que las aplicaciones llamen directamente al kernel

• PV la aplicación tiene que pasar por el VMM

• Las aplicaciones basadas en llamadas a sistema, son las más afectadas

Aplicación

Kernel VMM

Aplicación

Kernel

VMM

Kernel

Aplicación

Bare Metal PV PV-HVM

Antes de Intel VT-x Después de Intel VT-x

Page 22: EC2 Cómputo en la nube a profundidad

Tip: Usar AMIs PV-HVM con EBS

Page 23: EC2 Cómputo en la nube a profundidad

Manejo del tiempo

Page 24: EC2 Cómputo en la nube a profundidad

Manejo del tiempo

• El manejo del tiempo puede ser costoso para una

instancia

• Rutinas como gettimeofday() resultan en una rutina de

lectura a una fuente de tiempo que termina en una

transición hacia el ring0 (kernel)

Page 25: EC2 Cómputo en la nube a profundidad

Tip: Usar TSC como fuente de tiempo

Cambiarlo por:

# cat /sys/devices/system/cl*/cl*/available_clocksource

xen tsc hpet acpi_pm

# cat /sys/devices/system/cl*/cl*/current_clocksource

xen

# emacs /boot/grub/menu.list && reboot

# cat /proc/cmdline

root=/dev/xvda1 ro clock source=tsc

Page 26: EC2 Cómputo en la nube a profundidad

Control de Estados C y P

Page 27: EC2 Cómputo en la nube a profundidad

Instancias EC2

• Intel Turbo Boost Technology

• Control de los Estados P y C

Model vCPU Memory (GiB) EBS (Mbps)

c4.8xlarge 36 60 4,000

d2.8xlarge 36 244 HDD Storage

m4.10xlarge 40 160 4,000

Page 28: EC2 Cómputo en la nube a profundidad

Controles de Estado C y P

• Controles de Estado C y P

• Estado-C

• Controla el nivel de reposo al que puede llegar un núcleo

• Numerados del C0 (el núcleo está trabajando normalmente y

ejecutando instrucciones) al C6 (el núcleo está apagado)

• Estado-P

• Controla el nivel de desempeño deseado en un núcleo

• Numerados del P0 (el mayor desempeño en el núcleo en donde

tiene permitido usar la tecnología Turbo Boost de Intel que

permite incrementar la frecuencia), y luego va del P1 (solicita la

máxima frecuencia base) al P15 (solicita la mínima frecuencia

posible)

Page 29: EC2 Cómputo en la nube a profundidad

Controles de Estado C y P

• Beneficios

• Incrementar el desempeño del procesador

• Reducir latencia

• Optimización de una instancia para una carga de trabajo o

aplicación específica

Page 30: EC2 Cómputo en la nube a profundidad

Controles de Estado C y P

• Ejemplo (Mayor desempeño con máxima frecuencia

Turbo Boost)

Herramienta turbostat (disponible por defecto en las instancias Amazon Linux)

[ec2-user ~]$ sudo turbostat stress -c 2 -t 10

stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

stress: info: [30680] successful run completed in 10s

pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_%

5.54 3.44 2.90 0 9.18 0.00 85.28 0.00 0.00 0.00 0.00 0.00 94.04 32.70 54.18 0.00

0 0 0 0.12 3.26 2.90 0 3.61 0.00 96.27 0.00 0.00 0.00 0.00 0.00 48.12 18.88 26.02 0.00

0 0 18 0.12 3.26 2.90 0 3.61

0 1 1 0.12 3.26 2.90 0 4.11 0.00 95.77 0.00

0 1 19 0.13 3.27 2.90 0 4.11

0 2 2 0.13 3.28 2.90 0 4.45 0.00 95.42 0.00

0 2 20 0.11 3.27 2.90 0 4.47

0 3 3 0.05 3.42 2.90 0 99.91 0.00 0.05 0.00

0 3 21 97.84 3.45 2.90 0 2.11

...

1 1 10 0.06 3.33 2.90 0 99.88 0.01 0.06 0.00

1 1 28 97.61 3.44 2.90 0 2.32

...

10.002556 sec

Page 31: EC2 Cómputo en la nube a profundidad

Controles de Estado C y P

• Ejemplo (Limitar el Estado C)

Herramienta turbostat (disponible por defecto en las instancias Amazon Linux)

[ec2-user ~]$ sudo vim /boot/grub/grub.conf

# created by imagebuilder

default=0

timeout=1

hiddenmenu

title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)

root (hd0,0)

kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0 intel_idle.max_cstate=1

initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img

Page 32: EC2 Cómputo en la nube a profundidad

Tip: Estado P para AVX2

• Las cargas de trabajo de tipo AVX o AVX2 (Intel

Advanced Vector Extensions) se desenvuelven mejor en

frecuencias bajas porque pueden usar mayor energía

• Al ejecutar el procesador a baja frecuencia,

deshabilitando Turbo Boost, se reduce la cantidad de

energía usada y mantiene la velocidad de manera

consistente

Page 33: EC2 Cómputo en la nube a profundidad

Tip: Estado P para AVX2

• Ejemplo (Deshabilitar Turbo Boost, solicitando el estado

P1)

• Ejemplo (Habilitar Turbo Boost, solicitando el estado P0)

[ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"

[ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"

Page 34: EC2 Cómputo en la nube a profundidad

Ofreciendo desempeño de I/O

en EC2

Page 35: EC2 Cómputo en la nube a profundidad

Virtualización de I/O y Dispositivos

• Split Driver Model

• Intel VT-d

• Paso directo para dispositivos dedicados

• Enhanced Networking

Page 36: EC2 Cómputo en la nube a profundidad

Split Driver Model : Red

Hardware

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Frontend

driver

Backend

driver

Device

Driver

Physical

CPU

Physical

Memory

Network

Device

Virtual CPUVirtual

Memory

CPU

Scheduling

Sockets

Application

Page 37: EC2 Cómputo en la nube a profundidad

Split Driver Model : Red

Hardware

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Frontend

driver

Backend

driver

Device

Driver

Physical

CPU

Physical

Memory

Network

Device

Virtual CPUVirtual

Memory

CPU

Scheduling

Sockets

Application

Page 38: EC2 Cómputo en la nube a profundidad

Split Driver Model : Red

Hardware

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Frontend

driver

Backend

driver

Device

Driver

Physical

CPU

Physical

Memory

Network

Device

Virtual CPUVirtual

Memory

CPU

Scheduling

Sockets

Application

Page 39: EC2 Cómputo en la nube a profundidad

Split Driver Model : Red

Hardware

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Frontend

driver

Backend

driver

Device

Driver

Physical

CPU

Physical

Memory

Network

Device

Virtual CPUVirtual

Memory

CPU

Scheduling

Sockets

Application

Page 40: EC2 Cómputo en la nube a profundidad

Split Driver Model : Red

Hardware

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Frontend

driver

Backend

driver

Device

Driver

Physical

CPU

Physical

Memory

Network

Device

Virtual CPUVirtual

Memory

CPU

Scheduling

Sockets

Application

Page 41: EC2 Cómputo en la nube a profundidad

Paso Directo al Dispositivo: Enhanced Networking

• El dispositivo físico de red expone una función virtual a

la instancia

• Requiere un driver especial:

• El sistema operativo de la instancia necesita saber sobre el

driver

Page 42: EC2 Cómputo en la nube a profundidad

Paso Directo al Dispositivo: Enhanced Networking

Hardware

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

NIC

Driver

Backend

driver

Device

Driver

Physical

CPU

Physical

Memory

SR-IOV Network

Device

Virtual CPUVirtual

Memory

CPU

Scheduling

Sockets

Application

Page 43: EC2 Cómputo en la nube a profundidad

Paso Directo al Dispositivo: Enhanced Networking

Hardware

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

NIC

Driver

Backend

driver

Device

Driver

Physical

CPU

Physical

Memory

SR-IOV Network

Device

Virtual CPUVirtual

Memory

CPU

Scheduling

Sockets

Application

Page 44: EC2 Cómputo en la nube a profundidad

Paso Directo al Dispositivo: Enhanced Networking

Hardware

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

NIC

Driver

Backend

driver

Device

Driver

Physical

CPU

Physical

Memory

SR-IOV Network

Device

Virtual CPUVirtual

Memory

CPU

Scheduling

Sockets

Application

Page 45: EC2 Cómputo en la nube a profundidad

Tip: Usar Enhanced Networking

• Mayor cantidad de paquetes por segundo

• Menor varianza en latencia

• El Sistema Operativo de la instancia debe soportarlo

Page 46: EC2 Cómputo en la nube a profundidad

Revisión de Instancias I2

Page 47: EC2 Cómputo en la nube a profundidad

Instancias I2

• Proveen almacenamiento SSD

• Proveen IOPS a bajo costo

• Optimizadas para alta demanda de I/O aleatorio

Model vCPU Memory

(GiB)

Storage Read IOPS Write IOPS

i2.xlarge 4 30.5 1 x 800 SSD 35,000 35,000

i2.2xlarge 8 61 2 x 800 SSD 75,000 75,000

i2.4xlarge 16 122 4 x 800 SSD 175,000 155,000

i2.8xlarge 32 244 8 x 800 SSD 365,000 315,000

Page 48: EC2 Cómputo en la nube a profundidad

Cesión en kernels previos a la versión 3.8.0

• Previo a la versión 3.8.0, se requiere un Mapa de Cesiones

• El Mapa de Cesiones requiere de operaciones costosas debido a flushes de TLB (Translation Lookaside Buffer)

read(fd, buffer,…)

Page 49: EC2 Cómputo en la nube a profundidad

Cesión en kernels posteriores a la versión 3.8.0

• El Mapa de Cesiones está definido en un pool

• La información es copiada o extraída del pool

Copy to and from grant pool

Page 50: EC2 Cómputo en la nube a profundidad

Tip: Usar kernels posteriores a la versión 3.8.0

• Amazon Linux 13.09 o mayor

• Ubuntu 14.04 o mayor

• RHEL7 o mayor

• Etc.

Page 51: EC2 Cómputo en la nube a profundidad

Resumen

• Usar PV-HVM

• Usar TSC para el manejo de tiempo

• Aprovechar los controles de Estado C y P

• Usar Enhanced Networking

• Usar kernels posteriores a la versión 3.8.0

Page 52: EC2 Cómputo en la nube a profundidad

Gracias!