Amazon EC2 avançado

Preview:

Citation preview

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

Thiago Paulino | Arquiteto de Soluções

02 de Junho de 2016

Amazon EC2 avançado

Melhorando o desempenho

InstânciasAPIs

Rede

EC2EC2

Opções de compra

Amazon Elastic Compute Cloud é Abrangente

Host Server

Hypervisor

Guest 1 Guest 2 Guest n

Amazon EC2 Instâncias

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

Histórico das Instâncias Amazon EC2

t2.nano

x1.32xlarge

O que esperar dessa sessão

• Definindo o desempenho de sistema e como

caracterizar as diferentes tarefas (workloads)

• Como as instâncias Amazon EC2 entregam

desempenho com flexibilidade e agilidade

• Como extrair o máximo das instâncias Amazon EC2

considerando os diferentes tipos disponíveis

Definindo Desempenho

• Servidores são contratados para executar tarefas

• O desempenho é medido baseado na tarefa a ser executada

Contratando um Servidor

?

• O que desempenho em

perspectiva significa:

– Tempo de resposta

– Taxa de transferência

– Consistência

Definindo desempenho: Baseado em Perspectiva

Aplicação

Bibliotecas

Chamadas de Sistema

Kernel

Dispositivos

Tarefa (Workload)

Modelo Simples de Desempenho para Thread Única

• Usando CPU: executando (em modo usuário)

• Sem utilização de CPU: espera por ciclos de processamento,

espera por I/O de disco ou rede, thread locks, paginação de

memória ou para mais execuções

Fatores de Desempenho

Recursos Fatores de Desempenho Indicadores

CPU Sockets, número de cores,

frequência do clock, capacidade de

burst

Utilização de CPU e fila de execução

Memória Capacidade de memória Memória livre, paginação, uso de swap

Interface de

rede

Limite de transferência, quantidade

de pacotes

Capacidade de recebimento de dados,

transmissão de dados baseado na

capacidade máxima de banda

Discos Operações de IO (Entrada/Saida)

por segundo (IOPS), throughput

Fila de espera, utilização de discos,

erros de disco

Utilização de Recursos

• Para alguns cenários, a eficiência é baseada na utilização dos

recursos

• Algo com 100% de utilização não pode aceitar mais tarefas ou

execuções

• Baixa utilização pode indicar que mais recurso do que o

necessário foi contratado

Exemplo: Aplicação Web

• MediaWiki instalado e rodando em Apache com 140 páginas de

conteúdo

• A carga de acesso aumenta em grandes intervalos de tempo

Exemplo: Aplicação Web

• Uso de memória

Exemplo: Aplicação Web

• Uso do disco

Exemplo: Aplicação Web

• Uso de Rede

Exemplo: Aplicação Web

• Uso de CPU

• Escolher a melhor instância é equivalente a ajuste de

desempenho

• Desligar instâncias é tão fácil quanto ligar

• Encontre o tipo de instância ideal para sua aplicação

Escolha da instância = Ajuste do desempenho

Entregando Desempenho Computacional

com Instâncias Amazon EC2

X86 Virtualização de CPU: Antes do Intel VT-x

VMM

Aplicação

Kernel

PV

• Transações binárias para instruções privilegiadas

• Para-virtualização (PV)

• PV precisará sempre passar pelo VMM, adicionando latência

• Aplicações com syscall (System Call) são mais afetadas

X86 Virtualização de CPU: Depois do Intel VT-x

Kernel

Aplicação

VMM

PV-HVM

• Hardware assisted virtualization (HVM)

• PV-HVM usa drivers PV apropriadamente para operações que são

lentas quando emuladas

• Exemplo: Rede e IO de disco

Dica: Use PV-HVM AMIs COM EBS

Desempenho de CPU e Agendamento (Scheduling)

• Hypervisor garante que cada instância irá receber o seu

tempo de CPU

• Ajuste de alocação de recursos

• Sem restrição vs. com restrição (Concorrência)

• Alocação de recursos variáveis

• Diferentes ações podem ser tomadas, dependendo da

necessidade

• Necessidade de uso

• Tempo de resposta / término

• Compartilhamentos

Resumo: Instâncias C4

Intel E5-2666 v3 com 2.9 GHz

Controles P-state e C-state

Modelo vCPU Memória (GiB) EBS (Mbps)

c4.large 2 3.75 500

c4.xlarge 4 7.5 750

c4.2xlarge 8 15 1,000

c4.4xlarge 16 30 2,000

c4.8xlarge 36 60 4,000

• Ao entrar no estado de espera (idle), cores sem ociosidade

podem ter até 300MHz adicionais de capacidade

• Mas… o estado de espera (idle state) requer mais tempo

para ser encerrado, talvez não seja apropriado para uma

aplicação muito sensível a latência

Novo: Instâncias C4 - Controle P-state e C-state

Dica: Controle do P-state para AVX2

• Se uma aplicação faz uso constante do AVX2 de todos os

processadores, o processador pode tentar extrair mais

potência do que precisa

• O processador irá reduzir a frequência de maneira

transparente

• Alterações excessivas na frequência da CPU podem deixar

sua aplicação lenta

Resumo: Instâncias T2

• Instâncias de baixo custo $0.013 por hora

• Desempenho “Burstable”

• Alocação da variação da CPU baseada em créditos

Modelo vCPU Créditos de

CPU / Hora

Memória

(GiB)

Armazenamento

t2.nano 1 3 0,5 Apenas EBS

t2.micro 1 6 1 Apenas EBS

t2.small 1 12 2 Apenas EBS

t2.medium 2 24 4 Apenas EBS

t2.large 2 36 8 Apenas EBS

Como os Créditos Funcionam

Taxa de Referência

(Baseline)

Saldo

de

Crédito

• O crédito de CPU fornece

desempenho para um processador

por um minuto

• A instância ganha créditos de CPU

constantemente

• A instância consome os créditos

quando solicitado

• Os créditos expiram depois de 24

horas

Taxa de

Burst

Dica: Monitore a utilização de créditos

Monitore o Desempenho de CPU na Instância

• Indicadores de execuções

• User time

• System time (kernel mode)

• Espera por I/O, threads bloqueadas por I/O de disco

• O que acontece se trocar os tipos de instâncias? (PV

para HVM) m3,m4,c3,c4

Entregando desempenho de I/O com Instâncias

Amazon EC2

I/O e Virtualização de Dispositivos

• Requisições entre dispositivos virtuais e hardware

compartilhado

• Modelo compartilhado

• Intel VT-d

• Acesso direto ao IOMMU para dispositivo físico/dedicado

• Enhanced Networking

Resumo: Instâncias I2

16 vCPU: 3.2 TB SSD; 32 vCPU: 6.4 TB SSD

365K IOPS de leituras aleatórias na instância com 32

vCPU

Modelo vCPU Memória

(GiB)

Armazenamento IOPS

Leitura

IOPS

Escrita

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

Dica: Use Kernel 3.8+

• Amazon Linux 13.09 ou mais recente

• Ubuntu 14.04 ou mais recente

• RHEL7 ou mais recente

• Outras distribuições…

Dica: Amazon Linux

• Tempo de boot mais rápido

• Drivers otimizados

• Tunning de kernel e drivers realizado pelo time da AWS

• Preparada para enhanced networking

Hardware

Modelo Compartilhado: Rede

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Frontend

driver

Backend

driver

Device

Driver

CPU

Física

Memória

Física

Dispositivo

de Rede

CPU

Virtual

Memória

Virtual

CPU

Scheduling

Sockets

Aplicação

Hardware

Modelo Compartilhado: Rede

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Frontend

driver

Backend

driver

Device

Driver

CPU

Física

Memória

Física

Dispositivo

de Rede

CPU

Virtual

Memória

Virtual

CPU

Scheduling

Sockets

Aplicação

Hardware

Modelo Compartilhado: Rede

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Frontend

driver

Backend

driver

Device

Driver

CPU

Física

Memória

Física

Dispositivo

de Rede

CPU

Virtual

Memória

Virtual

CPU

Scheduling

Sockets

Aplicação

Hardware

Modelo Compartilhado: Rede

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Frontend

driver

Backend

driver

Device

Driver

CPU

Física

Memória

Física

Dispositivo

de Rede

CPU

Virtual

Memória

Virtual

CPU

Scheduling

Sockets

Aplicação

Hardware

Modelo Compartilhado: Rede

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Frontend

driver

Backend

driver

Device

Driver

CPU

Física

Memória

Física

Dispositivo

de Rede

CPU

Virtual

Memória

Virtual

CPU

Scheduling

Sockets

Aplicação

Enhanced Networking

• SR-IOV elimina a necessidade do Driver Domain

• A placa de rede física é exposta para a instância

Amazon EC2

• Requer um driver especial, isso quer dizer:

• O sistema operacional de sua instância precisa saber disso

• A instância EC2 precisa suportar essa funcionalidade

Hardware

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Driver

de Rede

Backend

driver

Device

Driver

CPU

Física

Memória

Física

Dispositivo de

Rede SR-IOV

CPU

Virtual

Memória

Virtual

CPU

Scheduling

Sockets

Aplicação

Depois do Enhanced Networking

Hardware

Driver Domain Guest Domain Guest Domain

VMM

Frontend

driver

Driver

de Rede

Backend

driver

Device

Driver

CPU

Física

Memória

Física

Dispositivo de

Rede SR-IOV

CPU

Virtual

Memória

Virtual

CPU

Scheduling

Sockets

Aplicação

Depois do Enhanced Networking

Dica: Use Enhanced Networking

• Para grande quantidade de pacotes por segundo

• Baixa variação de latência

• Escolha um sistema operacional que suporte isso

• Verifique se instância ou AMI possui suporte a SR-IOV

Documentação: http://amzn.to/1bK0gVU

• Em muitas novas AMI’s, Enhanced

Networking já vem configurado

• Últimas AMIs do Amazon Linux

• AMI do Windows Server 2012 R2

SR-IOV (Enhanced Networking): Já vem

configurado?

SR-IOV SR-IOV(Enhanced Networking): Ativo

(Linux)

Não Sim!

[ec2-user@ip-10-0-3-70 ~]$ ethtool -i eth0

driver: vif

version:

firmware-version:

bus-info: vif-0

[ec2-user@ip-10-0-3-70 ~]$ ethtool -i eth0

driver: ixgbevf

version: 2.14.2+amzn

firmware-version: N/A

bus-info: 0000:00:03.0

SR-IOV SR-IOV(Enhanced Networking): Ativo

(Windows)

Não Sim!

Enhanced Networking - Desempenho

9.53 Gbits/sec

Dica: Use Placement Group

• Para grande quantidade de pacotes por segundo

• Baixa variação de latência

• Escolha um sistema operacional que suporte isso

• Verifique se instância ou AMI possui suporte a SR-IOV

Documentação: http://amzn.to/1JAFY2p

Placement Group

Elastic

network

interface

Subnet A

us-east-1a10.0.1.0/24

10.0.1.100

Subnet A2

us-east-1a10.0.2.0/24

10.0.1.101

10.0.2.50

10.0.2.51

Subnet C

us-east-1c10.0.3.0/24

10.0.3.99

Instance

1

Instance

2

Instance

3 Instance

4

Placement group

Placement Group

Elastic

network

interface

Subnet A

us-east-1a10.0.1.0/24

10.0.1.100

Subnet A2

us-east-1a10.0.2.0/24

10.0.1.101

10.0.2.50

10.0.2.51

Subnet C

us-east-1c10.0.3.0/24

10.0.3.99

Instance

1

Instance

2

Instance

3 Instance

4

Ping entre instâncias sem Placement Group

Avg: 0.167msec

Ping entre instâncias com Placement Group

Avg: .099msec

Resumo

• Procure a melhor instância para a sua necessidade– Defina desempenho (mais memória, CPU ou capacidade de rede)

– Monitore a utilização dos recursos

– Faça mudanças

Escolha de instância = Tuning de desempenho

• PV-HVM

• Controle do C state e P state

• Monitore os créditos de CPU das instâncias T2

• Monitore o desempenho de I/O em disco

• Enhanced Networking

• Placement Group

Recapitulando: Obtendo mais de sua instância

EC2

Próximos Passos

• Acesse nossa documentação de instâncias Amazon

EC2

• http://amzn.to/1OpWzIO

• Tire suas dúvidas em nosso estande

Obrigado!