网卡多队列
2023-09-27 14:25:28 时间
多队列指实例规格支持的最大网卡队列数。单个ECS实例vCPU处理网络中断存在性能瓶颈时,您可以将实例中的网络中断分散给不同的CPU处理。经测试,在相同的网络PPS和网络带宽的条件下,与1个队列相比,2个队列最多可提升性能达50%到100%,4个队列的性能提升更大。
在ECS实例上配置网卡多队列
如果您使用的镜像已默认开启网卡多队列功能,请跳过此章节内容。
本节以Aliyun Linux 17.1镜像为例,假设实例主网卡名称为eth0,辅助弹性网卡名称为eth1,介绍如何手动配置网卡多队列。
- 运行命令
ethtool -l eth0
查看主网卡支持多队列的情况。[root@localhost ~]# ethtool -l eth0
Channel parameters for eth0: Pre-set maximums: RX: 0 TX: 0 Other: 0 Combined: 2 # 表示最多支持设置2个队列 Current hardware settings: RX: 0 TX: 0 Other: 0 Combined: 1 # 表示当前生效的是1个队列
说明 如果返回信息中,两个Combined
字段取值相同,则表示弹性网卡已开启支持多队列。 - 运行命令
ethtool -L eth0 combined 2
开启网卡的多队列功能。命令作用是设置主网卡eth0使用两个队列。[root@localhost ~]# ethtool -L eth0 combined 2
- 设置辅助网卡的多队列。
# 查看辅助网卡eth1支持多队列的情况 [root@localhost ~]# ethtool -l eth1 Channel parameters for eth1: Pre-set maximums: RX: 0 TX: 0 Other: 0 Combined: 4 # 表示最多支持设置4个队列 Current hardware settings: RX: 0 TX: 0 Other: 0 Combined: 1 # 表示当前生效的是1个队列 # 设置辅助网卡eth1使用4个队列 [root@localhost ~]# ethtool -L eth1 combined 4
- (推荐)开启irqbalance服务,让ECS实例自动调整网络中断在多个vCPU核上的分配。
- 运行命令
systemctl start irqbalance
开启服务。 - 运行命令
systemctl status irqbalance
查看服务状态。结果显示
active (running)
,表示已开启irqbalance服务。
- 运行命令
说明 开启网卡多队列后,如果网络性能提升仍达不到您的预期,您可以考虑开启RPS(Receive Packet Steering)特性。
阿里云官方提供的CentOS、Ubuntu公共镜像,默认开启RPS特性。如果您使用的是其他公共镜像或者自定义镜像,可参考如下Shell脚本自行开启RPS特性。
#!/bin/bash
cpu_num=$(grep -c processor /proc/cpuinfo)
quotient=$((cpu_num/8))
if [ $quotient -gt 2 ]; then
quotient=2
elif [ $quotient -lt 1 ]; then
quotient=1
fi
for i in $(seq $quotient)
do
cpuset="${cpuset}f"
done
for rps_file in $(ls /sys/class/net/eth*/queues/rx-*/rps_cpus)
do
echo $cpuset > $rps_file
done
相关文章
- 第九篇:队列的学习(一)用数组和链表实现单向队列
- Kafka实战(1)-为何大厂都选择Kafka作为消息队列
- 阿里百度华为消息队列MQ异步场景面试题
- C/C++数据结构(六) —— 循环队列
- 数据结构(二):链表、链队列
- 08 |「栈和队列」必刷题
- 大数据-消息队列-Kafka(一):概述【分布式;用于缓存数据;基于发布/订阅模式】【“消息”会持久化到磁盘】【用于大数据实时处理领域】【类似于“快递驿站”】
- 大数据-消息队列-Kafka(四):Kafka命令行操作【Topic(主题)、Producer(生产者)、Consumer(消费者)】
- C 栈实现队列节点的管理
- 一个故事告诉你什么是消息队列
- Java多线程与并发库高级应用-可阻塞的队列
- 【消息队列】转-大型网站架构之分布式消息队列
- java 队列和栈及示例
- 【数据结构】之队列(C语言)
- JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)(上)
- LeetCode·899.有序队列·最小表示法
- 队列的基本操作周期
- 基础数据结构——利用两个栈实现一个队列