网卡速率调优参数说明

发布时间 2023-09-28 15:28:36作者: 轻轻的吻
  • 在软中断中还要用到一个全局变量netdev_budget,这个变量表示一次软中断所能接收的最大报文数,默认值为300
echo 1024 > /proc/sys/net/core/netdev_budget 
  • 表示内核套接字接受缓存区默认的大小,默认值为229376
echo 4194304 > /proc/sys/net/core/rmem_default 
  • 表示内核套接字接受缓存区的最大大小,默认值为16777216
echo 4194304 > /proc/sys/net/core/rmem_max 
  • 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目,默认值1500
echo 32768 > /proc/sys/net/core/netdev_max_backlog 
  • 每个套接字所允许的最大缓冲区的大小,默认值为20480。
echo 40960 > /proc/sys/net/core/optmem_max 
  • 定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数,默认值为128,对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。大多数环境这个值建议增加到 1024 或者更多。大的侦听队列对防止拒绝服务 DoS 攻击也会有所帮助。
echo 32768 > /proc/sys/net/core/somaxconn 
  • 写新的警告消息所需的时间(以 1/10 秒为单位);在这个时间内系统接收到的其它警告消息会被丢弃。这用于防止某些企图用消息“淹没”系统的人所使用的拒绝服务(Denial of Service)攻击。
    缺省设置:50(5秒)

echo 1000 > /proc/sys/net/core/message_burst
  • TCP接受缓存(用于TCP接受滑动窗口)的最小值、默认值、最大值
echo "4194304 4194304 8388608" > /proc/sys/net/ipv4/tcp_rmem  
  • TCP发送缓存(用于TCP发送滑动窗口)的最小值、默认值、最大值。
echo "786432 1048576 1572864" > /proc/sys/net/ipv4/tcp_mem
  • 启用转发应答,可以进行有选择应答(SACK)从而减少拥塞情况的发生,这个选项也应该启用。

echo 1 > /proc/sys/net/ipv4/tcp_fack

#echo 1 > /proc/sys/net/ipv4/tcp_delack_seg

  • 允许TCP/IP栈适应在高吞吐量情况下低延时的情况,这个选项应该禁用。
echo 1 > /proc/sys/net/ipv4/tcp_low_latency

#echo 20 > /proc/sys/net/ipv4/tcp_default_init_rwnd

  • 默认值为1,会导致闲置一段时间后拥塞窗口超时,建议设置为0,尤其适合大带宽高延迟场景。
echo 1 > /proc/sys/net/ipv4/tcp_slow_start_after_idle
  • 端口最大 backlog 内核限制,此参数限制 服务端应用程序 可以设置的端口最大 backlog 值 (对应于端口的 syn_backlog 和 backlog 队列长度)。动机是在内存有限的服务器上限制/避免应用程序配置超大 backlog 值而耗尽内核内存。如果应用程序设置 backlog 大于此值,操作系统将自动将之限制到此值。
echo 16384 > /proc/sys/net/ipv4/tcp_max_syn_backlog

echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo performance > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor
echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo f > /sys/class/net/eth1/queues/rx-0/rps_cpus
#QCM6490 echo 40 /sys/class/net/eth1/queues/rx-0/rps_cpus