Ao configurar uma instância na AWS, você já deve ter se deparado com uma opção em que é possível especificar a quantidade de cores que ela utilizará além de quantas Threads por core a instância será configurada.
Você já se perguntou para que serve essa opção?
Em primeiro lugar, é importante saber que você só pode definir essas opções durante o Launch da instância. Uma vez que você já está com ela em operação, não é mais possível mudar essas opções.
É também importante saber a diferença de Core para Thread. Core, é o núcleo físico do processador, enquanto a Thread não. De forma resumida processadores multithread são dotados de uma tecnologia que aproveita os recursos ociosos do processador para executar mais instruções de forma simultânea. Esse recurso muito utilizado nos processadores modernos, é também utilizado em instâncias da AWS. Assim, ao escolher uma instância c5.xlarge com 4vCPUs, podemos escolher nas opções do CPU Options, 1 ou 2 cores, e 1 ou 2 Threads. Assim como uma instância c5.2xlarge, teremos as opções de 2 ou 4 cores e 1 ou 2 Threads, totalizando até 8vCPUs.
A seguinte tabela disponibilizada no site da AWS, pode auxiliar nesse entendimento:
Você pode ver a lista completa no link abaixo:
https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/cpu-options-supported-instances-values.html
Em resumo, ao manter a opção Threads per core no valor 2, estamos habilitando o Multithreading. Mudando para 1, estamos desabilitando essa função.
Em paralelo a essa função, podemos escolher a quantidade de Cores count (dentro de parâmetros válidos da AWS). Uma c5.2xlarge, teremos a opção de até 4 cores, podendo selecionar 2 ou 4 Cores count, enquanto Thread continuamos com as opções 1 ou 2.
Na tabela abaixo, tomando como exemplo a c5.2xlarge (8vCPUs), temos as seguintes opções de configuração, e o resultado final (vCPUS) disponíveis na instância, que é o que será exibido no sistema operacional.
Agora que entendemos um pouco esse recurso, talvez você se pergunte se isso realmente vale a pena. Talvez você esteja com uma c5.2xlarge (4 cores count com multithreading) e pense, que se você precisa de 2 cores count, basta alterar a instância para uma c5.xlarge (2 cores count com multithreading). Ou ainda, que reduzir opções de CPU, estaria subutilizando a instância, e pagando a mais por isso. Mas a resposta é, não necessariamente. Depende do seu cenário.
Como estamos exemplificando com instâncias pequenas, pode não aparentar a sua importância. Mas imagine que você paga a licença de algum software que cobra por vCPU (cores + thread). Agora imagine que você está utilizando uma instância com 128vCPUS (64 cores com 2 Threads per core). É uma aplicação que demanda muito processamento, e a quantidade de cores faz diferença para você. Baixar para uma instância de 96 vCPUS (48 cores e 2 threads) resolveria o seu problema de licenciamento pago, mas causaria problema de performance, pois estaria removendo 16 cores da sua aplicação. Se isso faz diferença no desempenho para a sua aplicação, talvez seja melhor utilizar a instância com 128vCPUs, apenas desabilitando o Multithreading, não acha? Você pagaria menos no licenciamento e garantiria a quantidade de 64 cores para a sua aplicação. Com esse exemplo, agora fica mais claro, que neste cenário, a empresa está economizando, mantendo o desempenho mínimo exigido, e fazendo bom proveito desse recurso.
Uma outra opção em alterar o CPU Options, é caso você tenha uma aplicação que não trabalhe bem com multithread. Neste caso, você poderia desabilitar essa função da sua instância, e garantir que a aplicação trabalhe adequadamente.
Essa função é bem útil, não acha?
José Anderson Vila Nova
Cloud Architect
anderson.vilanova@darede.com.br
O José Anderson Vila Nova Profissional de Infraestrutura com ênfase em produtos Microsoft, com experiência no suporte e implantação de aplicativos e serviços. Ele possui diversas certificações técnicas e das duas maiores plataformas de serviços em nuvem: a MS100 da Microsoft e a AWS Cloud Practitioner.