在讲Linux网卡带宽前,先说一下网络带宽的概念。
1、网络带宽
1.1 概念
网络带宽是指在单位时间(一般指的是1秒钟)内能传输的数据量。网络和高速公路类似,带宽越大,就类似高速公路的车道越多,其通行能力越强。网络带宽作为衡量网络特征的一个重要指标,日益受到人们的普遍关注。它不仅是政府或单位制订网络通信发展策略的重要依据,也是互联网用户和单位选择互联网接入服务商的主要因素之一。
带宽是一个非常有用的概念,在网络通信中的地位十分重要。带宽的实际含义是在给定时间等条件下流过特定区域的最大数据位数。虽然它的概念有点抽象,但是可以用比喻来帮助理解带宽的含义。我们用城市的供水网来比喻,供水管道的直径可以衡量运水的能力,主水管直径可能有2m,而到家庭的可能只有2cm。在这个比喻中,水管的直径好比是带宽,水就好比是信息量。使用粗管子就意味着拥有更宽的带宽,也就是有更大的信息运送能力。
1.2 计算方法
带宽基本单位“比特”,简写为小写字母“b”,更大的单位是:Kb、Mb、Gb等;网速基本单位“字节”,简写为大写字母“B”,更大的单位有:KB、MB、GB等。
1字节=8比特
带宽和网速的进率都是1024:
1Kb=1024b 1Mb=1024Kb 1Gb=1024Mb 1KB=1024B 1MB=1024KB 1GB=1024MB
带宽换算成网速除以8便可;网速换算成带宽乘以8便可。
在计算机网络、IDC机房中,其网络传输速率的单位用b/s(比特每秒)(或bit/s,有时也写作bps,即bit per second)表示。
在实际上网应用中,下载软件时常常看到诸如下载速度显示为176KB/s,103KB/s等宽带速率大小字样,因为ISP提供的线路带宽使用的单位是比特(bit),而一般下载软件显示的是字节(Byte),所以要通过换算,才能得实际值。
我们以1M宽带为例,按照换算公式换算一下:
1Mb/s=1024Kb/s=1024/8KB/s=128KB/s理论上:2M(即2Mb/s)宽带理论速率是:256KB/s,实际速率大约为150~240KB/s;(其原因是受用户计算机性能、网络设备质量、资源使用情况、网络高峰期、网站服务能力、线路衰耗,信号衰减等多因素的影响而造成的)。4M(即4Mb/s)的宽带理论速率是:512KB/s,实际速率大约为200~440KB/s 。上行速率是指用户电脑向网络发送信息时的数据传输速率,下行速率是指网络向用户电脑发送信息时的传输速率。比如用FTP上传文件到网上去,影响上传速度的就是“上行速率”;而从网上下载文件,影响下载速度的就是“下行速率”。当然,在实际上传下载过程中,线路、设备(含计算机及其他设备)等的质量也会对速度造成或多或少的影响。
2、网卡带宽
网络带宽是网卡每秒接收或发送数据的能力,单位为 Mbps。
2.1 查看服务器指定网卡带宽大小
方式一:使用 ethtool命令查看服务器指定网卡带宽大小
ethtool命令用于查询和控制网络设备驱动程序和硬件设置,尤其是有线以太网设备,devname网卡的名称。
在第一种方法中,我们将使用ethtool实用程序来检查网络接口卡(NIC)速度。但是,如果您的Linux系统上尚未安装此实用程序,则必须首先使用以下命令安装它:
sudo apt install ethtool
在系统上安装此实用程序后,您需要检查要找出其速度的网络接口的接口名称。为此,您将必须运行下面给出的命令:
ip a
此命令将显示有关系统的所有网络接口的信息, 如下所示,我们选择了名为enp129s0f0的网络接口。
ubuntu@ubun:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 ....... 2: enp129s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether ac:1f:6b:24:43:ba brd ff:ff:ff:ff:ff:ff inet 10.20.30.173/24 brd 10.20.30.255 scope global enp129s0f0 valid_lft forever preferred_lft forever inet6 fe80::ae1f:6bff:fe24:43ba/64 scope link valid_lft forever preferred_lft forever 3: enp129s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 .......
现在,要检查指定NIC
的速度,我们将执行如下所示的命令:
ubuntu@ubun:~$ ethtool enp129s0f0 Settings for enp129s0f0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: Symmetric Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: on (auto) Cannot get wake-on-lan settings: Operation not permitted Current message level: 0x00000007 (7) drv probe link Link detected: yes ubuntu@ubun:~$
其中 Speed: 1000Mb/s 就是这个网卡的带宽。但是,您可以看到上述命令的输出有点太长了。因此,如果您希望将此输出限制为仅 NIC
速度,则必须按如下所示的方式对其进行修改:
ubuntu@ubun:~$ ethtool enp129s0f0 | grep -i speed Cannot get wake-on-lan settings: Operation not permitted Speed: 1000Mb/s
注意:换算成网速为1000Mb/s = 1000/8 MB/s = 125 MB/s。
方式二:使用dmesg命令查看服务器指定网卡带宽大小
Dmesg用于显示内核环形缓冲区的内容,内核在其中存储各种消息。
在此方法中,我们将使用Linux中内置的dmesg命令来检查NIC速度,如下所示:
ubuntu@ubun:~$ dmesg | grep enp129s0f0 | grep up [ 7.277894] igb 0000:81:00.0 enp129s0f0: igb: enp129s0f0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX ubuntu@ubun:~$
方式三:使用mii-tool命令查看服务器指定网卡带宽大小
mii-tool命令用于查看、管理介质的网络接口的状态,首先需要在系统上安装此软件包:
sudo apt install net-tools
运行以下命令来检查 NIC
速度(1000baseT-FD):
ubuntu@ubun:~$ sudo mii-tool -v enp129s0f0 enp129s0f0: negotiated 1000baseT-FD flow-control, link ok product info: vendor 00:55:00, model 59 rev 1 basic mode: autonegotiation enabled basic status: autonegotiation complete, link ok capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD advertising: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control link partner: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control ubuntu@ubun:~$
3、虚拟机的网卡带宽
通过VMware ESXi等虚拟化软件创建的虚拟机,查看虚拟机网卡带宽为10000Mbps。
[root@pansoft-manage-uat-106 ~]# ethtool ens192 |grep Speed Speed: 10000Mb/s
在ESXi管理界面上可以看到其所属裸金属的物理网卡带宽为1000Mbps。
这是因为创建虚拟机选择的虚拟网络适配器为VMXNET3,模拟的是万兆网卡,这种虚拟网络适配器可以没有物理网卡对应(普通裸金属一般为千兆网卡),也就是不需要借助底层的硬件网卡,并且通过对虚拟机中的性能进行优化,使得同一裸金属上的虚拟机之间的网络交换不受底层网卡的限制。
详细内容参考:VMWare ESXi中,不同的虚拟网卡性能竟然能相差三倍!
原理:同一台裸金属上创建的虚拟机的通讯走的是虚拟交换机,不经过NIC(物理网卡),其带宽是虚拟网卡进行管理的,而虚拟机访问外网,走NIC,其带宽受到NIC的限制。
详细内容参考:网络虚拟化和虚拟网络
总结:同一台裸金属上创建的虚拟机的通讯走的是虚拟交换机,不经过NIC,因此我们可以把关联性比较大的组件部署在同一台裸金属上创建的不同的虚拟机上,比如redis集群;虚拟机访问外部网络(访问非当前虚拟机所在裸金属上的其他虚拟机的网络)时, 走NIC,其带宽受到NIC的限制。
4、判断网络性能瓶颈
确定数据流向,即确定网络请求从客户端发出后,经过了哪些环节,最终到达服务端。响应数据经过哪些环节,又返回到客户端。并且每个环节中的网络上限是多少,最终我们整个网络环路的流量上限,就取决于环路中最低的那个上限值(木桶原理)。
举例说明,如下图所示:
网络请求数据首先是从客户端的网卡发出(千兆网卡),然后网络带宽也会有限制(100Mb/s),可能还会经过一些网络设备,如路由器、交换机、防火墙、代理等,这些设备也都有网络上限,假如都是10000Mb/s,最后到达服务端的网卡(千兆网卡)。所以从上面的网络架构来看,整体链路最高支持100Mb/s的数据流量,网速是100/8=12.5MB/s。
如果在局域网内,几乎就不用考虑网络带宽和路由器的问题了,一般局域网内防火墙都是万兆网卡,所以局域网内服务器网卡的上限就是整个链路的网络上限。
参考:两招轻松判断网络性能瓶颈,一般人我不告诉他!——Testfan打卡学测开1114
标签:NIC,虚拟机,带宽,网卡,FD,Linux,enp129s0f0 From: https://www.cnblogs.com/zhangmingcheng/p/16987264.html