ENA queues - Amazon Elastic Compute Cloud

ENA queues

ENA queues are allocated to network interfaces with default static limits based on the instance type and size. On supported instance types, you can dynamically allocate these queues across Elastic Network Interfaces (ENIs). While the total queue count per instance depends on its type and size, you can configure multiple ENIs with ENA queues until you meet the maximum queue count for the ENI and the instance.

Flexible ENA queue allocation optimizes resource distribution, enabling maximum vCPU utilization. High network performance workloads typically require multiple ENA queues. You can fine-tune network performance and packets per second (PPS) by adjusting queue counts according to your specific workload needs. For example, network-intensive applications may require more queues compared to CPU-intensive applications.

Supported instances

The following instances support dynamic allocation of multiple ENA queues.

General purpose

Instance type Default ENA queues per interface Maximum ENA queues per interface Maximum ENA queues per instance
M6i
m6i.large 2 2 6
m6i.xlarge 4 4 16
m6i.2xlarge 8 8 32
m6i.4xlarge 8 16 64
m6i.8xlarge 8 32 64
m6i.12xlarge 8 32 64
m6i.16xlarge 8 32 120
m6i.24xlarge 8 32 120
m6i.32xlarge 8 32 120
M6id
m6id.large 2 2 6
m6id.xlarge 4 4 16
m6id.2xlarge 8 8 32
m6id.4xlarge 8 16 64
m6id.8xlarge 8 32 64
m6id.12xlarge 8 32 64
m6id.16xlarge 8 32 120
m6id.24xlarge 8 32 120
m6id.32xlarge 8 32 120
M6idn
m6idn.large 2 2 6
m6idn.xlarge 4 4 16
m6idn.2xlarge 8 8 32
m6idn.4xlarge 8 16 64
m6idn.8xlarge 16 32 128
m6idn.12xlarge 16 32 128
m6idn.16xlarge 16 32 240
m6idn.24xlarge 32 32 480
m6idn.32xlarge 32 32 256
M6in
m6in.large 2 2 6
m6in.xlarge 4 4 16
m6in.2xlarge 8 8 32
m6in.4xlarge 8 16 64
m6in.8xlarge 16 32 128
m6in.12xlarge 16 32 128
m6in.16xlarge 16 32 240
m6in.24xlarge 32 32 480
m6in.32xlarge 32 32 256

Compute optimized

Instance type Default ENA queues per interface Maximum ENA queues per interface Maximum ENA queues per instance
C6i
c6i.large 2 2 6
c6i.xlarge 4 4 16
c6i.2xlarge 8 8 32
c6i.4xlarge 8 16 64
c6i.8xlarge 8 32 64
c6i.12xlarge 8 32 64
c6i.16xlarge 8 32 120
c6i.24xlarge 8 32 120
c6i.32xlarge 8 32 120
C6id
c6id.large 2 2 6
c6id.xlarge 4 4 16
c6id.2xlarge 8 8 32
c6id.4xlarge 8 16 64
c6id.8xlarge 8 32 64
c6id.12xlarge 8 32 64
c6id.16xlarge 8 32 120
c6id.24xlarge 8 32 120
c6id.32xlarge 8 32 120
C6in
c6in.large 2 2 6
c6in.xlarge 4 4 16
c6in.2xlarge 8 8 32
c6in.4xlarge 8 16 64
c6in.8xlarge 16 32 128
c6in.12xlarge 16 32 128
c6in.16xlarge 16 32 240
c6in.24xlarge 32 32 480
c6in.32xlarge 32 32 256
C8gn
c8gn.medium 1 1 2
c8gn.large 2 2 6
c8gn.xlarge 4 4 16
c8gn.2xlarge 8 8 32
c8gn.4xlarge 8 16 64
c8gn.8xlarge 8 32 128
c8gn.12xlarge 16 64 192
c8gn.16xlarge 16 64 256
c8gn.24xlarge 16 128 384
c8gn.48xlarge 32 128 384

Memory optimized

Instance type Default ENA queues per interface Maximum ENA queues per interface Maximum ENA queues per instance
R6i
r6i.large 2 2 6
r6i.xlarge 4 4 16
r6i.2xlarge 8 8 32
r6i.4xlarge 8 16 64
r6i.8xlarge 8 32 64
r6i.12xlarge 8 32 64
r6i.16xlarge 8 32 120
r6i.24xlarge 8 32 120
r6i.32xlarge 8 32 120
R6idn
r6idn.large 2 2 6
r6idn.xlarge 4 4 16
r6idn.2xlarge 8 8 32
r6idn.4xlarge 8 16 64
r6idn.8xlarge 16 32 128
r6idn.12xlarge 16 32 128
r6idn.16xlarge 16 32 240
r6idn.24xlarge 32 32 480
r6idn.32xlarge 32 32 256
R6in
r6in.large 2 2 6
r6in.xlarge 4 4 16
r6in.2xlarge 8 8 32
r6in.4xlarge 8 16 64
r6in.8xlarge 16 32 128
r6in.12xlarge 16 32 128
r6in.16xlarge 16 32 240
r6in.24xlarge 32 32 480
r6in.32xlarge 32 32 256
R6id
r6id.large 2 2 6
r6id.xlarge 4 4 16
r6id.2xlarge 8 8 32
r6id.4xlarge 8 16 64
r6id.8xlarge 8 32 64
r6id.12xlarge 8 32 64
r6id.16xlarge 8 32 120
r6id.24xlarge 8 32 120
r6id.32xlarge 8 32 120

Modify the number of queues

You can modify the number of ENA queues using AWS Management Console or AWS CLI. In the AWS Management Console, the ENA queues configuration is available under each Network interface setting.

To modify the number of ENA queues using the AWS CLI, use either one of the following commands. Before modifying the queue count, use the following command to check your current queue count.

aws ec2 describe-instances --instance-id i-1234567890abcdef0
Note
  • Your instance must be stopped before modifying the number of ENA queues.

  • The value for ENA queues must be a power of 2, such as, 1, 2, 4, 8, 16, 32, etc.

  • The number of queues allocated to any single ENI cannot exceed the number of vCPUs available on your instance.

attach-network-interface

In the following example, 32 ENA queues are configured on an ENI.

aws ec2 attach-network-interface \ --network-interface-id eni-001aa1bb223cdd4e4 \ --instance-id i-1234567890abcdef0 \ --device-index 1 \ --ena-queue-count 32

run-instances

In the following example, 2 ENA queues each are configured on 3 ENIs.

aws ec2 run-instances \ --image-id ami-12ab3c30 \ --instance-type c6i.large \ --min-count 1 \ --max-count 1 \ --network-interfaces \ "[{\"DeviceIndex\":0,\"SubnetId\":\"subnet-123456789012a345a\",\"EnaQueueCount\":2}, {\"DeviceIndex\":1,\"SubnetId\":\"subnet-123456789012a345a\",\"EnaQueueCount\":2}, {\"DeviceIndex\":2,\"SubnetId\":\"subnet-123456789012a345a\",\"EnaQueueCount\":2}]"

modify-network-interface-attribute

In the following example, 32 ENA queues are configured on an ENI.

aws ec2 modify-network-interface-attribute \ --network-interface-id eni-1234567890abcdef0 \ --attachment AttachmentId=eni-attach-12345678,EnaQueueCount=32

In the following example, the ENA count is reset to the default value.

aws ec2 modify-network-interface-attribute \ --network-interface-id eni-1234567890abcdef0 \ --attachment AttachmentId=eni-attach-12345678,DefaultEnaQueueCount=true