EFA를 사용하여 가속 컴퓨팅 인스턴스에서 네트워크 대역폭 최대화 - Amazon Elastic Compute Cloud

EFA를 사용하여 가속 컴퓨팅 인스턴스에서 네트워크 대역폭 최대화

다음과 같은 가속 인스턴스 유형에서 대역폭을 최대화하기 위해 여러 Elastic Fabric Adapter(EFA) 인터페이스를 사용할 수 있습니다.

  • P5 및 P5e 인스턴스는 최대 32개의 네트워크 카드를 지원하고 최대 3,200Gbps의 네트워킹 대역폭을 제공할 수 있습니다.

  • G6e 인스턴스는 최대 4개의 네트워크 카드를 지원하고 최대 400Gbps의 네트워킹 대역폭을 제공할 수 있습니다.

GPU 가속 인스턴스 시작하기에 대한 자세한 내용은 GPU 인스턴스를 사용한 성능 가속화 섹션을 참조하세요.

네트워크 카드당 하나의 EFA 네트워크 인터페이스를 정의하는 것이 좋습니다. 시작 시 이러한 인터페이스를 구성하려면 다음 설정을 사용하는 것이 좋습니다.

  • 네트워크 인터페이스 0에 대해서는 장치 디바이스 인덱스 0을 지정합니다.

  • 네트워크 인터페이스 1~31에 대해서는 장치 디바이스 인덱스 1을 지정합니다.

Amazon EC2 콘솔을 사용하는 경우 인스턴스 시작 마법사의 네트워크 설정 섹션에서 편집을 선택합니다. 고급 네트워크 구성을 확장하고 네트워크 인터페이스 추가를 선택하여 필요한 수의 네트워크 인터페이스를 추가합니다. 각 네트워크 인터페이스에서 EFA에 대해 활성화를 선택합니다. 기본 네트워크 인터페이스를 제외한 모든 네트워크 인터페이스에서 디바이스 인덱스1을 지정합니다. 필요에 따라 나머지 설정을 구성합니다.

AWS CLI를 사용하는 경우 run-instances 명령을 실행하고 --network-interfaces에 필요한 네트워크 인터페이스 수를 지정합니다. 각 네트워크 인터페이스에서 InterfaceTypeefa를 지정합니다. 기본 네트워크 인터페이스에서 NetworkCardIndex 및 DeviceIndex0을 지정합니다. 나머지 네트워크 인터페이스에서 NetworkCardIndex1~31 사이의 고유한 값을 지정하고 DeviceIndex1을 지정합니다.

다음 예제 명령 코드 조각은 32개의 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" ...

시작 템플릿을 사용하는 경우 시작 템플릿에 필요한 네트워크 인터페이스 수를 지정합니다. 각 네트워크 인터페이스에서 InterfaceTypeefa를 지정합니다. 기본 네트워크 인터페이스에서 NetworkCardIndex 및 DeviceIndex0을 지정합니다. 나머지 네트워크 인터페이스에서 NetworkCardIndex1~31 사이의 고유한 값을 지정하고 DeviceIndex1을 지정합니다. 다음 코드 조각은 사용 가능한 32개의 네트워크 인터페이스 중 3개의 네트워크 인터페이스를 사용하는 예를 보여줍니다.

"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 } ...

두 개 이상의 네트워크 인터페이스가 있는 P5 또는 P5e 인스턴스를 시작할 때 퍼블릭 IP 주소를 자동 할당할 수 없습니다. 하지만 시작한 후 인터넷 연결을 위해 기본 네트워크 인터페이스(NetworkCardIndex=0, DeviceIndex=0)에 탄력적 IP 주소를 연결할 수 있습니다. Ubuntu 20.04 이상 버전과 Amazon Linux 2 이상 버전 모두 이 페이지에서 권장한 대로 인스턴스를 시작할 경우 인터넷 트래픽에 기본 네트워크 인터페이스를 사용하도록 구성됩니다.

G6e 인스턴스에서 최고의 네트워크 성능을 달성하려면 IMDS를 사용하여 연결된 네트워크 인터페이스를 매핑하고 분리된 NetworkCardindexes에서 네트워킹 인스턴스를 사용하여 최적화합니다.

다음 예제 스크립트는 연결된 NetworkCardIndexes에서 세부 정보를 가져옵니다.

$ 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