我刚刚在 Linux 中安装了一个新的千兆网络接口卡 (NIC)。我如何判断它是否真的设置为千兆速度?我看到ethtool有一个设置速度的选项,但我似乎无法弄清楚如何报告其当前速度。
我想在 CentOS5 服务器上关闭 tcp 分段卸载。使用 ethtool 命令是ethtool -K eth0 tso off但是,此设置仅在此会话中持续存在。我怎样才能让它通过重新启动持续存在?
我继承了一个大容量缓存名称服务器环境(Redhat Enterprise Linux 5.8,IBM System x3550),它具有不一致的环形缓冲区设置:eth0 为 1020,eth1 为 255。eth0 连接到其本地数据中心的交换机 1,eth1 连接到相同的交换机 2。集群中的每个服务器都在 eth0 或 eth1 是活动接口之间交替,并且每个集群都位于不同的区域。环形缓冲区显然需要保持一致。
这就是事情变得棘手的地方:我在研究为什么许多名称服务器经常记录“错误发送响应:未设置”错误时发现了上述问题,ISC 知识库建议这与出站拥塞有关。具有较高环形缓冲区设置 (1020) 的服务器在 ifconfig 上丢弃的数据包较少(正如人们所期望的那样),但往往会以很高的频率记录上述错误,在我的最高负载组之一中每天约 20k 次。我们将其称为“第 1 组”。具有较低环形缓冲区 (255) 设置的服务器每天丢弃的入站数据包明显更多(同样是预期的),但 BIND 错误的实例要少得多,在同一负载组中通常为 0-150。
这里也不是什么大秘密。缓存 DNS 是一种递归服务:如果某些内容未缓存,则服务器必须代表该问题进行多次查询,直到它最终可以返回答案。这是一个(一进)->(多出)查询关系。修复 RX 环形缓冲区应该使这个数字全面均衡为一个新值,然后在 proc (wmem_max/wmem_default) 中调整内核的出站网络队列可能是一个好主意。
我喜欢能够衡量配置更改对性能问题的影响,所以我写了一份报告来收集一些数据,然后再开始进行生产更改。以下是组 1 中前两台服务器的输出示例:
group1-01
RX: 7166.27/sec av.
TX: 7432.57/sec av.
RXDROP: 7.43/sec av.
unset_err: 27633
group1-02
RX: 7137.37/sec av.
TX: 7398.50/sec av.
RXDROP: 9.94/sec av.
unset_err: 107
Run Code Online (Sandbox Code Playgroud)
这些是公式。请注意,这是一个本地脚本,不依赖于每个服务器必须维护的 shell 脚本。
RXPACK=$(ssh $server "sar -n DEV -f …Run Code Online (Sandbox Code Playgroud) 我们的托管公司为我们的服务器提供所有交换基础设施。连接到的专用网络eth2 应该是 GbE。最近我一直怀疑某些东西配置错误,因为仙人掌图似乎从来没有显示链接上超过 100 兆位的流量。
进一步挖掘我发现,mii-tool并且ethtool不同意链接速度。
# mii-tool eth2
eth2: negotiated 100baseTx-FD flow-control, link ok
# ethtool eth2
Settings for eth2:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Run Code Online (Sandbox Code Playgroud)
我应该信任哪个工具?
ethtool 说“支持的端口:[TP MII]”和“端口:MII”。我猜 TP 意味着双绞线和媒体独立接口。然而,我看到网卡使用双绞线,而不是这个 MII 连接器。那么如何解释呢?
我正在使用 Debian Stretch (9.7) 配置 GNU/Linux 路由器,在重新启动服务器之前,从一个接口到另一个接口的所有流量都正常,但在那之后,我收到了这样的消息 (tty):
enp1s6: Something Wicked happened! ffff.
Run Code Online (Sandbox Code Playgroud)
我在同一交换机和同一网络上有一台主机,用于测试目的,基本上,路由器的 LAN 不响应回显请求。
这里有一些关于服务器的信息。
内核日志
Jan 25 08:58:02 server001 kernel: [25060.494127] enp1s6: Link changed:
Jan 25 08:58:02 server001 kernel: [25060.494127] 100Mbps, half duplex
Jan 25 08:58:02 server001 kernel: [25060.494254] enp1s6: Something Wicked happened! ffff.
Jan 25 08:58:02 server001 kernel: [25060.497338] enp1s6: Link up
Jan 25 08:58:02 server001 kernel: [25060.497557] enp1s6: Link changed:
Jan 25 08:58:02 server001 kernel: [25060.497557] 100Mbps, full duplex
Jan 25 08:58:02 server001 kernel: [25060.499986] …Run Code Online (Sandbox Code Playgroud) 我有 Ubuntu 11.10 64 位和一个(实际上是两个,但只有一个连接)英特尔 82578 千兆网卡,它以 100 Mbps 的速度运行,我希望它以 1000 Mbps 的速度运行,但我不能。我怎样才能找出问题所在?
这是我尝试使用 ethtool 设置速度时发生的情况:
# ethtool -s eth0 speed 1000
Cannot advertise speed 1000
Run Code Online (Sandbox Code Playgroud)
我也试过这个并失去了网络连接:
# ethtool -s eth0 speed 1000 duplex full
Run Code Online (Sandbox Code Playgroud)
我已经没有关于去哪里寻找的想法了。
一些信息:
服务器连接到 Cisco RVS4000 路由器,该路由器的所有活动端口都配置为在 1000 Mbps 全双工下工作,具有自动协商功能。事实上,还有另一台服务器连接到路由器的另一个端口,它以 1000 Mbps 的速度运行良好。
关于我遇到问题的服务器的信息:
lshw:
# lshw -C network
*-network
description: Ethernet interface
product: 82578DM Gigabit Network Connection
vendor: Intel Corporation
physical id: 19
bus info: pci@0000:00:19.0
logical name: eth0
version: 05
serial: 00:1e:67:15:2b:f1
size: 100Mbit/s …Run Code Online (Sandbox Code Playgroud) 例如,如果我ethtool -g eth0在我的系统上运行,我会得到以下输出:
Ring parameters for eth0:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Run Code Online (Sandbox Code Playgroud)
4096 是为一帧分配的缓冲区大小(以字节为单位),有多个这样的缓冲区还是缓冲区的数量?
CentOS 5.8 | VMWare ESX 5.1
当我运行时,ethtool eth0我看到以下内容:
[root@foo ~]# ethtool eth0
Settings for eth0:
Current message level: 0x00000007 (7)
Link detected: yes
Run Code Online (Sandbox Code Playgroud)
有没有办法获得其余的细节?特别是速度和双工?我习惯于 ethtool 输出更冗长。例如:
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: d
Wake-on: d
Link …Run Code Online (Sandbox Code Playgroud) 检查网卡环形缓冲区:
# ethtool -g eth0
Ring parameters for eth0:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 256
RX Mini: 0
RX Jumbo: 0
TX: 256
Run Code Online (Sandbox Code Playgroud)
人们可以将“RX/TX”设置为“预设最大值”中显示的限制,例如:
# ethtool -G eth0 rx 4096 rx 4096
Run Code Online (Sandbox Code Playgroud)
问题是:默认情况下;为什么这些设置如此低(在我拥有的每台服务器中,它们都为 256)而不是更高的值或其硬件最大功能?增加这些值是否有任何缺点(如果有的话?)?