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操作系统里设置用户口令的正确方法是什么?详细操作步骤有哪些?

    Linux系统下,用户口令是保障系统安全的核心屏障,合理设置和管理用户口令能有效防止未授权访问,本文将详细介绍Linux系统中设置用户口令的多种方法、密码策略配置及常见场景处理,帮助用户全面掌握口令管理技能,基础口令设置命令使用passwd命令修改/设置口令passwd是Linux中最常用的口令管理工具,普通用……

    2025年9月28日
    2200
  • Linux系统下如何运行Windows的exe可执行文件?

    Linux系统作为开源操作系统,其默认可执行文件格式为ELF(Executable and Linkable Format),而Windows系统使用PE(Portable Executable)格式的.exe文件,由于内核架构、系统调用接口和动态链接库(如Windows的.dll)的差异,Linux无法直接运……

    2025年10月1日
    1600
  • Linux系统下查找挂死线程的具体有效方法、步骤及命令有哪些?

    在Linux系统中,线程“挂死”通常指线程处于不可中断睡眠状态(D状态),此时线程无法被信号唤醒(如kill -9),也无法被操作系统调度,常见于等待硬件资源、文件锁、网络I/O或死锁场景,挂死线程会导致进程或系统响应缓慢,甚至引发服务不可用,因此快速定位并解决挂死线程至关重要,以下从基础到进阶,详细说明Lin……

    2025年8月24日
    4300
  • Linux下date命令如何快速取整?

    取整到分钟(去掉秒)场景:将当前时间精确到分钟(如 2023-10-05 14:30:00 → 2023-10-05 14:30)方法:date -d "@$(( $(date +%s) / 60 * 60 ))" "+%Y-%m-%d %H:%M"原理:date +%s……

    2025年6月25日
    5000
  • Linux系统下如何查看指定程序的内存使用情况?

    在Linux系统中,监控程序的内存使用情况是系统管理和性能优化的核心任务之一,通过查看内存占用,可以快速定位内存泄漏、资源耗尽等问题,确保系统稳定运行,本文将详细介绍多种常用命令及其使用方法,帮助用户全面掌握Linux内存监控技巧,基础命令:快速查看进程内存占用ps命令:静态查看进程状态ps(Process S……

    2025年8月27日
    3800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信