Linux系统如何手动设置网卡运行速度为慢速模式?

Linux系统中,设置网卡速度慢可能涉及主动限速(如测试网络环境、限制特定服务带宽)或排查异常导致的性能下降,本文将从主动设置方法、异常排查步骤及常用工具使用角度,详细说明如何操作及注意事项。

linux如何设置网卡速度慢

主动设置网卡速度慢的方法

使用ethtool工具调整网卡速率与双工模式

ethtoolLinux下用于查询和设置网卡参数的核心工具,可直接修改网卡的工作速率(如100Mbps、1Gbps)和双工模式(全双工/半双工),从而主动降低速度。

操作步骤

  • 安装ethtool(若未安装):
    sudo apt install ethtool  # Debian/Ubuntu
    sudo yum install ethtool  # CentOS/RHEL
  • 查看当前网卡参数(以eth0为例):
    ethtool eth0

    输出中Speed表示当前速率(如1000Mbps),Duplex表示双工模式(如Full)。

  • 设置速率为100Mbps,半双工模式(强制低速):
    sudo ethtool -s eth0 speed 100 duplex half

    若需恢复自动协商,添加autoneg on参数:

    sudo ethtool -s eth0 autoneg on

注意事项

  • 强制设置非协商模式可能导致链路异常,需确保对端设备支持相同参数;
  • 部分老旧网卡可能不支持半双工模式,设置后可能出现连接中断。

使用tc(Traffic Control)进行流量控制

tc是Linux内核的流量控制工具,可通过令牌桶(token bucket)、过滤器(filter)等机制限制网卡的带宽,实现更精细的速率控制(如限制上传/下载速度)。

操作步骤

linux如何设置网卡速度慢

  • 安装tc(通常已预装,若缺失可通过iproute2包安装):
    sudo apt install iproute2  # Debian/Ubuntu
  • 限制eth0上传带宽为10Mbps(示例):
    sudo tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms

    参数说明:

    • rate:平均速率(10Mbps);
    • burst:突发流量大小(32kbit);
    • latency:延迟时间(400ms)。
  • 删除限速规则:
    sudo tc qdisc del dev eth0 root

进阶应用

  • 通过filter限制特定IP的带宽(如限制192.168.1.100的上传为5Mbps):
    sudo tc qdisc add dev eth0 root handle 1: htb default 30
    sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
    sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit
    sudo tc filter add dev eth0 protocol ip parent 1:0 prio 0 u32 match ip dst 192.168.1.100 flowid 1:10

调整网卡驱动参数(中断合并)

中断合并(Interrupt Coalescence)是网卡通过合并多个中断请求以减少CPU开销的机制,但过高的合并度会导致延迟增加,降低实际速度,通过调整相关参数可主动降低性能。

操作步骤

  • 查看当前中断合并参数:
    ethtool -c eth0

    输出中rx-usecstx-usecs分别表示接收/发送中断的合并时间(单位:微秒)。

  • 减少中断合并时间(降低性能):
    sudo ethtool -C eth0 rx-usecs 100 tx-usecs 100

    数值越小,中断越频繁,CPU负载越高,网卡速度可能越低。

  • 恢复默认值:
    sudo ethtool -C eth0 rx-usecs 0 tx-usecs 0

修改MTU(最大传输单元)

MTU表示网络接口一次可传输的最大数据包大小(默认通常为1500字节),较小的MTU会增加数据包分片数量,降低传输效率,从而间接降低速度。

linux如何设置网卡速度慢

操作步骤

  • 查看当前MTU:
    ip link show eth0
  • 设置MTU为500字节(示例):
    sudo ip link set eth0 mtu 500
  • 恢复默认MTU:
    sudo ip link set eth0 mtu 1500

排查异常导致的网卡速度慢

若非主动设置,需排查以下常见问题:

网卡驱动与硬件兼容性

  • 检查驱动版本:
    ethtool -i eth0

    若驱动过旧,可通过dkms更新或安装官方驱动。

  • 测试硬件:使用mii-tool(老旧网卡)或ethtool -T eth0(时间戳同步)检查链路稳定性,若频繁协商失败可能是网卡或网线故障。

系统资源占用

  • CPU/内存高负载:通过tophtop查看,若因资源不足导致网卡处理延迟,需优化进程或升级硬件。
  • 中断不均衡:多核CPU下,可通过irqbalance服务或手动绑定中断到特定CPU核(如echo eth0 > /proc/irq/10/smp_affinity)。

网络拥塞与配置错误

  • 检查MTU匹配:确保对端设备MTU一致,避免分片导致速度下降。
  • 关闭不必要的网络服务:如NetworkManager可能与ifcfg配置冲突,可通过systemctl stop NetworkManager测试。

常用参数速查表

工具 参数/命令 作用说明
ethtool ethtool -s eth0 speed 100 设置网卡速率为100Mbps
ethtool ethtool -C eth0 rx-usecs 100 调整接收中断合并时间为100微秒
tc tc qdisc add dev eth0 root tbf rate 10mbit 限制带宽为10Mbps
ip ip link set eth0 mtu 500 设置MTU为500字节

相关问答FAQs

Q1:为什么使用ethtool设置网卡速率为100Mbps后,实际速度仍低于预期?
A:可能原因包括:① 对端设备未同步速率(需检查对端网卡是否支持100Mbps并开启自动协商);② 网线质量差(如超五类线无法稳定支持100Mbps以上速率);③ 系统资源占用(CPU高负载导致网卡数据处理延迟),可通过ethtool -d eth0查看网卡卸载功能(如LRO、GRO)是否关闭,关闭这些功能可减少CPU负担但可能降低吞吐量。

Q2:如何临时降低网卡速度用于压力测试,且不影响系统其他服务?
A:推荐使用tc工具结合HTB(分层令牌桶)队列,仅限制目标测试服务的带宽,而非全局限速,限制本地8080端口的上传带宽为1Mbps:

sudo tc qdisc add dev eth0 root handle 1: htb default 30
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1mbit
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 0 u32 match ip sport 8080 0xffff flowid 1:10

测试完成后通过tc qdisc del dev eth0 root删除规则,避免影响其他服务。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/25813.html

(0)
酷番叔酷番叔
上一篇 2025年9月19日 03:25
下一篇 2025年9月19日 03:48

相关推荐

  • Linux系统如何更换为Win7?操作步骤与方法详解?

    将Linux系统更换为Windows 7是一个涉及数据备份、系统安装和驱动配置的过程,需谨慎操作以避免数据丢失或硬件兼容性问题,以下是详细步骤及注意事项:前期准备工作数据备份重装系统会清除Linux分区数据,需提前备份重要文件,可通过以下方式操作:外部存储设备:将Linux家目录(/home)下的文件复制到U盘……

    2025年9月27日
    5300
  • Linux如何显示文件行号?

    cat 命令 + -n 参数适用场景:快速查看小型文件(避免大文件卡顿),命令示例:cat -n filename.txt输出效果: 1 Line 1 content 2 Line 2 content 3 Line 3 content注意:-n 为所有行编号(包括空行),-b 可跳过空行编号(cat -b fi……

    2025年7月29日
    7300
  • Linux如何查看系统用户?

    查看所有系统用户/etc/passwd 文件解析这是存储用户信息的核心文件,需用 root 或 sudo 权限查看:cat /etc/passwd输出示例:root:x:0:0:root:/root:/bin/bash每行包含 7个字段(以冒号分隔):用户名(如 root)密码占位符(x 表示密码在 /etc……

    2025年6月14日
    7500
  • Linux如何安全挂载U盘/移动硬盘?

    挂载前的准备工作连接设备并识别插入设备后,使用以下命令查看设备标识符: sudo fdisk -l # 列出所有磁盘及分区sudo lsblk # 以树形结构查看块设备输出示例: sdb 8:16 1 14.9G 0 disk└─sdb1 8:17 1 14.9G 0 part # 设备名通常为 /dev/sd……

    2025年8月4日
    4800
  • Linux下如何去除文本中的回车符?

    在Linux系统中,“去掉回车”通常指处理文本文件中的换行符问题,由于Windows和Linux的换行符标准不同(Windows使用\r\n,Linux使用\n),当文本文件在系统间传输时,可能会出现多余的回车符(\r),导致显示异常或程序处理错误,有时也可能需要去除行尾的换行符(\n)以满足特定需求,下面将详……

    2025年9月9日
    5500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信