Maximize a largura de banda da rede em instâncias com computação acelerada com o EFA - Amazon Elastic Compute Cloud

Maximize a largura de banda da rede em instâncias com computação acelerada com o EFA

Para maximizar a largura de banda nos seguintes tipos de instância acelerada, você pode usar várias interfaces do Elastic Fabric Adapter (EFA).

  • As instâncias P5 e P5e são compatíveis com até 32 placas de rede e podem fornecer até 3.200 Gbps de largura de banda da rede.

  • As instâncias G6e são compatíveis com até quatro placas de rede e podem fornecer até 400 Gbps de largura de banda da rede.

Para obter mais informações sobre como começar a usar instâncias aceleradas de GPU, consulte Aceleração de desempenho com instâncias de GPU.

Recomendamos que você defina uma única interface de rede EFA por placa de rede. Para configurar essas interfaces no lançamento, recomendamos as seguintes configurações:

  • Para interface de rede 0, especifique o índice de dispositivo 0

  • Para interface de rede 1 a 31, especifique o índice de dispositivo 1

Se você estiver usando o console do Amazon EC2, no Launch Instance Wizard, escolha Editar na seção Configurações de rede. Expanda Configuração avançada de rede e escolha Adicionar interface de rede para adicionar o número necessário de interfaces de rede. Para cada interface de rede, em EFA, selecione Habilitar. Para todas as interfaces de rede, exceto a interface de rede primária, em Índice de dispositivos, especifique 1. Defina as configurações restantes, conforme necessário.

Se você estiver usando a AWS CLI, use o comando run-instances, em --network-interfaces, especifique o número necessário de interfaces de rede. Para cada interface de rede, em InterfaceType, especifique efa. Para a interface de rede primária, em NetworkCardIndex e DeviceIndex, especifique 0. Para as demais interfaces de rede, em NetworkCardIndex, especifique um valor exclusivo de 1 a 31, e em DeviceIndex, especifique 1.

O exemplo de snippet de comando a seguir mostra uma solicitação com 32 interfaces de rede EFA.

$ aws --region $REGION ec2 run-instances \ --instance-type p5.48xlarge \ --count 1 \ --key-name key_pair_name \ --image-id ami_id \ --network-interfaces "NetworkCardIndex=0,DeviceIndex=0,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=1,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=2,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=3,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=4,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=5,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=6,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=7,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=8,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=9,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=10,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=11,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=12,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=13,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=14,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=15,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=16,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=17,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=18,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=19,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=20,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=21,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=22,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=23,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=24,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=25,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=26,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=27,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=28,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=29,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=30,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" \ "NetworkCardIndex=31,DeviceIndex=1,Groups=security_group_id,SubnetId=subnet_id,InterfaceType=efa" ...

Se você estiver usando um modelo de execução, especifique o número necessário de interfaces de rede no modelo de execução. Para cada interface de rede, em InterfaceType, especifique efa. Para a interface de rede primária, em NetworkCardIndex e DeviceIndex, especifique 0. Para as demais interfaces de rede, em NetworkCardIndex, especifique um valor exclusivo de 1 a 31, e em DeviceIndex, especifique 1. O trecho a seguir mostra um exemplo com 3 interfaces de rede das 32 interfaces de rede possíveis.

"NetworkInterfaces":[ { "NetworkCardIndex":0, "DeviceIndex":0, "InterfaceType": "efa", "AssociatePublicIpAddress":false, "Groups":[ "security_group_id" ], "DeleteOnTermination":true }, { "NetworkCardIndex": 1, "DeviceIndex": 1, "InterfaceType": "efa", "AssociatePublicIpAddress":false, "Groups":[ "security_group_id" ], "DeleteOnTermination":true }, { "NetworkCardIndex": 2, "DeviceIndex": 1, "InterfaceType": "efa", "AssociatePublicIpAddress":false, "Groups":[ "security_group_id" ], "DeleteOnTermination":true } ...

Ao iniciar uma instância P5 ou P5e com mais de uma interface de rede, não é possível atribuir endereços IP públicos automaticamente. No entanto, você pode anexar um endereço IP elástico à interface de rede primária (NetworkCardIndex = 0, DeviceIndex = 0) após a execução para  ter conectividade com a Internet. Tanto o Ubuntu 20.04 e posteriores quanto o Amazon Linux 2 e posteriores estão configurados para usar a interface de rede primária para o tráfego da internet quando a instância for executada, conforme recomendado nesta página.

Para alcançar a melhor performance de rede em instâncias G6e, você pode usar o IMDS para mapear interfaces de rede anexadas e otimizar usando instâncias de rede em NetworkCardIndexes não contíguos.

O script de exemplo a seguir reúne detalhes dos NetworkCardIndexes anexados.

$ TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X- aws-ec2-metadata-token-ttl-seconds: 21600") count=$(ls -l /sys/class/net/eth* | wc -l) for ((i = 0 ; i < ${count} ; i++)); do mac=$(cat /sys/class/net/eth$i/address) network_card=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" "http://169.254.169.254/latest/meta-data/network/interfaces/macs/$mac/ network-card") device_number=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" "http://169.254.169.254/latest/meta-data/network/interfaces/macs/$mac/ device-number") device_bdf=$(realpath /sys/class/net/eth${i}/device) echo "eth${i} ${network_card} ${device_number} ${device_bdf}" done