網卡多隊列


多隊列指實例規格支持的最大網卡隊列數。單個ECS實例vCPU處理網絡中斷存在性能瓶頸時,您可以將實例中的網絡中斷分散給不同的CPU處理。經測試,在相同的網絡PPS和網絡帶寬的條件下,與1個隊列相比,2個隊列最多可提升性能達50%到100%,4個隊列的性能提升更大。

在ECS實例上配置網卡多隊列

如果您使用的鏡像已默認開啟網卡多隊列功能,請跳過此章節內容。

本節以Aliyun Linux 17.1鏡像為例,假設實例主網卡名稱為eth0,輔助彈性網卡名稱為eth1,介紹如何手動配置網卡多隊列。

  1. 運行命令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字段取值相同,則表示彈性網卡已開啟支持多隊列。
  2. 運行命令ethtool -L eth0 combined 2開啟網卡的多隊列功能。命令作用是設置主網卡eth0使用兩個隊列。
     
    [root@localhost ~]# ethtool -L eth0 combined 2
  3. 設置輔助網卡的多隊列。
     
    # 查看輔助網卡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
  4. (推薦)開啟irqbalance服務,讓ECS實例自動調整網絡中斷在多個vCPU核上的分配。
    1. 運行命令systemctl start irqbalance開啟服務。
    2. 運行命令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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM