• Linux 网卡性能优化设置


    在高速网络传输中,每秒传输的数据量非常大。网络设备设置有一种缓存机制,即“缓存区”,在 Linux 系统中,网卡缓冲分为两种类型:软件缓冲区和硬件缓冲区。
    要提高网络吞吐率,首先当然是升级linux kernel。其次是设置linux系统参数和网卡驱动参数。
    查看当前linux系统参数
    $ cat /etc/sysctl.conf 
        vm.swappiness = 0
        net.ipv4.neigh.default.gc_stale_time = 120

        # see details in https://help.aliyun.com/knowledge_detail/39428.html
        net.ipv4.conf.all.rp_filter = 0
        net.ipv4.conf.default.rp_filter = 0
        net.ipv4.conf.default.arp_announce = 2
        net.ipv4.conf.lo.arp_announce = 2
        net.ipv4.conf.all.arp_announce = 2

        # see details in https://help.aliyun.com/knowledge_detail/41334.html
        net.ipv4.tcp_max_tw_buckets = 5000
        net.ipv4.tcp_syncookies = 1
        net.ipv4.tcp_max_syn_backlog = 1024
        net.ipv4.tcp_synack_retries = 2

        net.ipv6.conf.all.disable_ipv6 = 1
        net.ipv6.conf.default.disable_ipv6 = 1
        net.ipv6.conf.lo.disable_ipv6 = 1

        kernel.sysrq = 1

    可以设置为下面这一组优化后的系统参数:
        sysctl -w net.ipv4.tcp_tw_reuse=1
        sysctl -w net.ipv4.tcp_tw_recycle=1
        sysctl -w net.ipv4.tcp_fin_timeout=30
        sysctl -w net.ipv4.tcp_keepalive_time=600
        sysctl -w net.ipv4.tcp_max_syn_backlog=8192
        sysctl -w net.ipv4.tcp_max_tw_buckets=5000
        sysctl -w net.ipv4.ip_local_port_range='1024 65000'
        sysctl -w net.ipv4.tcp_rmem='4096 436600 873200'
        sysctl -w net.ipv6.conf.all.disable_ipv6=1
        sysctl -w net.ipv6.conf.default.disable_ipv6=1
        sysctl -w net.ipv4.tcp_synack_retries=2
        sysctl -w net.ipv4.tcp_syn_retries=2

        sysctl -w net.core.wmem_max=16777216
        sysctl -w net.core.wmem_default=16777216
        sysctl -w net.core.rmem_max=16777216
        sysctl -w net.core.rmem_default=16777216

        $ sysctl -p

    网卡驱动一般情况下不允许设置,但可以查询设置情况和统计信息以定位问题。
    如果可能,应该升级linux kernel和net driver(ko)以便获得更好的网络性能。
    下面是一台典型centos7 VPS的网卡信息,驱动较为简单。
    root@iZj6c591g5r6irirqvcj5gZ ~/$ ethtool -i eth0
    driver: virtio_net
    version: 1.0.0
    firmware-version: 
    expansion-rom-version: 
    bus-info: 0000:00:03.0
    supports-statistics: no
    supports-test: no
    supports-eeprom-access: no
    supports-register-dump: no
    supports-priv-flags: no
    root@iZj6c591g5r6irirqvcj5gZ ~/$ 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

    root@iZj6c591g5r6irirqvcj5gZ ~/$ ethtool -l eth0
    Channel parameters for eth0:
    Pre-set maximums:
    RX:        0
    TX:        0
    Other:        0
    Combined:    4
    Current hardware settings:
    RX:        0
    TX:        0
    Other:        0
    Combined:    4

    下面的设置全部失败。
    root@iZj6c591g5r6irirqvcj5gZ ~/ $ 
    $ ethtool -L eth0 tx 8 rx 8 other 8 combined 8
    $ ethtool -G eth0 rx 8192 tx 8192
    $ ethtool -C eth0 adaptive-tx off

  • 相关阅读:
    全世界IT人苦竞业久矣!美国FTC宣布全面废除员工竞业协议
    Python正则表达式
    Docker核心原理与实操
    CSDN App 2022上半年-栉风沐雨谨慎前行
    【Linux】shell脚本和bat脚本:
    Ubuntu22.04.01Desktop桌面版 允许root用户远程登陆 笔记221110
    FPGA实现图像二值形态学滤波——腐蚀膨胀
    第十一章、python的异常处理------raise异常处理、assert异常处理、异常类BaseException、关键字as的用法
    掌动智能:性能压力测试的重要性
    【网络技术】计算机网络介绍
  • 原文地址:https://blog.csdn.net/freeman1975/article/details/133957978