Enabling NIC Multi-Queue
Scenarios
Single-core CPU performance cannot meet the requirement of processing NIC interruptions incurred with the increase of network I/O bandwidth. NIC multi-queue enables multiple CPUs to process ECS NIC interruptions, thereby improving packets per second (PPS) and I/O performance.
The ECS described in this section is assumed to comply with the requirements on specifications and virtualization type.
- If the ECS was created using a public image listed in Support of NIC Multi-Queue, NIC multi-queue has been enabled on the ECS by default. Therefore, you do not need to perform the operations described in this section.
- If the ECS was created using a private image and the OS of the external image file is listed in Support of NIC Multi-Queue, perform the following operations to enable NIC multi-queue:
After NIC multi-queue is enabled on an ECS, you need to enable this function on the ECS again after you add or delete a NIC or change the VPC for the ECS. For details, see Running the Script for Configuring NIC Multi-Queue.
Support of NIC Multi-Queue
NIC multi-queue can be enabled on an ECS only when the ECS specifications, virtualization type, and image OS meet the requirements described in this section.
- For details about the ECS specifications that support NIC multi-queue, see ECS Types.
If the number of NIC queues is greater than 1, NIC multi-queue is supported.
- The virtualization type must be KVM.
- The Linux public images listed in Table 1 support NIC multi-queue.
- It is a good practice to upgrade the kernel version of the Linux ECS to 2.6.35 or later. Otherwise, NIC multi-queue is not supported.
Run the uname -r command to obtain the kernel version. If the kernel version is earlier than 2.6.35, contact customer service to upgrade the kernel.
- It is a good practice to upgrade the kernel version of the Linux ECS to 2.6.35 or later. Otherwise, NIC multi-queue is not supported.
Importing the External Image File to the IMS Console
- If the value is Supported, go to Creating an ECS Using a Private Image.
- If the value is Not supported, go to Setting NIC Multi-Queue for the Image.
Setting NIC Multi-Queue for the Image
Use one of the following methods to set the NIC multi-queue attribute:
- Log in to the management console.
- Click . Under Compute, click Image Management Service.
- Click the Private Images tab, locate the row containing the target image, click Modify in the Operation column.
- Set the NIC multi-queue attribute of the image.
- Log in to the management console.
- Click . Under Compute, click Image Management Service.
- Click the Private Images tab. In the image list, click the name of the target image to switch to the page providing details about the image.
- Click Modify in the upper right corner. In the displayed Modify Image dialog box, set the NIC multi-queue attribute.
Method 3: Add hw_vif_multiqueue_enabled to an image through the API.
- For instructions about how to obtain the token, see Authentication.
- For instructions about how to call an API to update image information, see Updating Image Information (Native OpenStack API).
- Add X-Auth-Token to the request header.
The value of X-Auth-Token is the token obtained in step 1.
- Add Content-Type to the request header.
The value of Content-Type is application/openstack-images-v2.1-json-patch.
The request URI is in the following format:
PATCH /v2/images/{image_id}
The request body is as follows:[ { "op":"add", "path":"/hw_vif_multiqueue_enabled", "value": "true" } ]
Figure 1 shows an example request body for modifying the NIC multi-queue attribute.
Creating an ECS Using a Private Image
- Region: Select the region where the private image is located.
- Image: Select Private image and then the desired image from the drop-down list.
Running the Script for Configuring NIC Multi-Queue
A script for automatically enabling NIC multi-queue on a Linux ECS is available. After the script is configured, the ECS supports NIC multi-queue.
- Log in to the ECS and run the following command to check the number of queues supported by and enabled for a NIC:
Example output:
[root@localhost ~]# ethtool -l eth0 # Number of queues used by NIC eth0 Channel parameters for eth0: Pre-set maximums: RX: 0 TX: 0 Other: 0 Combined: 4 # The NIC supports a maximum of four queues. Current hardware settings: RX: 0 TX: 0 Other: 0 Combined: 1 # One queue has been enabled for the NIC.
If the values of the two Combined fields are the same, NIC multi-queue has been enabled. No further action is required.
- Run the following command to download the configuration script "multi-queue-hw".
wget URL to download the script
URL: https://ecs-instance-driver.obs.cn-north-1.myhuaweicloud.com/multi-queue-hw
- Run the following command to assign execution permissions to the script:
- Run the following command to move the multi-queue-hw script to the /etc/init.d directory:
mv multi-queue-hw /etc/init.d
- Run the following command to run the script:
/etc/init.d/multi-queue-hw start
The script takes effect immediately after being executed. However, after the ECS is stopped, NIC multi-queue disables automatically.
- Add startup configuration for each OS so that NIC multi-queue automatically enables upon the ECS startup.
- For CentOS, Red Hat, Fedora, EulerOS, SUSE, and OpenSUSE, run the following command:
Viewing the Number of Queues of the NIC
Example:
[root@localhost ~]# ethtool -l eth0 #View the number of queues used by NIC eth0. Channel parameters for eth0: Pre-set maximums: RX: 0 TX: 0 Other: 0 Combined: 4 #Indicates that a maximum of four queues can be enabled for the NIC. Current hardware settings: RX: 0 TX: 0 Other: 0 Combined: 1 #Indicates that four queues have been enabled.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.