Skip to content

hi-box 网络性能调优记录

🕒 Published at:

hi-box 网络性能调优记录 ​

设备: 海思 hi3798mv100 | ARMv7 | 969 MB RAM | 内核 4.4.35_ecoo_81082668 调优日期: 2026-07-02


一、背景 ​

hi-box 运行 mihomo 代理、aria2 下载、openlist 文件服务、easytier VPN、frp 内网穿透等。 需要优化 TCP 网络缓冲以提高代理大包的吞吐性能。

二、硬件限制 ​

海思芯片网卡不支持任何硬件卸载,以下优化不可用:

功能状态说明
TSO (TCP Segmentation Offload)❌ [fixed] off内核手动拆包,CPU 开销大
GSO❌ [fixed] off同上
GRO (Generic Receive Offload)❌ [fixed] off内核逐个处理收包
LRO❌ [fixed] off同上
Scatter-Gather❌ [fixed] off无零拷贝支持
Checksum Offload❌ [fixed] off内核 CPU 计算校验和

关键结论: 瓶颈在 CPU 处理每包能力,不在缓冲区容量。调大 buffer 对硬件瓶颈帮助有限,但仍值得做。

BBR 拥塞算法和 fq_codel qdisc 同样因定制内核无对应模块/支持而不可用。

三、调优参数 ​

配置文件: /etc/sysctl.d/99-network-tuning.conf

TCP 缓冲区 ​

参数调优前调优后说明
net.core.rmem_max4194304 (4 MB)8388608 (8 MB)接收缓冲区上限
net.core.wmem_max4194304 (4 MB)8388608 (8 MB)发送缓冲区上限
net.core.rmem_default262144 (256 KB)524288 (512 KB)接收缓冲区默认值
net.core.wmem_default262144 (256 KB)524288 (512 KB)发送缓冲区默认值
net.core.optmem_max1024040960每 socket 可选缓冲区
net.ipv4.tcp_rmem4096 131072 41943044096 524288 8388608自动调优范围
net.ipv4.tcp_wmem4096 131072 41943044096 524288 8388608自动调优范围
net.ipv4.tcp_mem5724 7635 114488586 11448 17172全局 TCP 内存(pages)

连接队列 ​

参数调优前调优后说明
net.core.somaxconn5121024listen 队列上限
net.core.netdev_max_backlog6553665536已够,保持
net.ipv4.tcp_max_syn_backlog5122048SYN 队列上限

低延迟优化 ​

参数调优前调优后说明
net.core.busy_read050busy polling 50μs,降低小包延迟
net.ipv4.tcp_low_latency01减少缓冲延迟

TCP 特性 ​

参数调优前调优后说明
net.ipv4.tcp_fastopen03TCP Fast Open 客户端+服务端
net.ipv4.tcp_mtu_probing01自动探测最优 MTU
net.ipv4.tcp_ecn02ECN 显式拥塞通知
net.ipv4.tcp_timestamps11保持
net.ipv4.tcp_sack11保持
net.ipv4.tcp_retries2158降低重试次数,快速失败
net.ipv4.tcp_orphan_retries30无连接关联的快速失败
net.ipv4.tcp_no_metrics_save01断开连接不清零重传历史

内存管理 ​

参数调优前调优后说明
vm.min_free_kbytes28088192预留更多空闲内存防 OOM
vm.swappiness6010无 swap,降低不必要判断
vm.vfs_cache_pressure10050降低 dentry/inode 回收压力,NFS 友好

四、效果预期 ​

场景预期提升
代理高延迟链路吞吐+20~40%
小包延迟降低 (busy_read + low_latency)
突发连接稳定性提升 (队列翻倍)
MTU 自适应避免分片丢包

五、持久化 ​

配置写入 /etc/sysctl.d/99-network-tuning.conf,重启后自动加载。 手动生效命令: sysctl --system

六、备注 ​

  • 969MB 内存 × 8MB buffer × 数百并发连接 = ~2GB 潜在峰值,实测正常场景远低于此
  • BBR / fq_codel 需升级内核才能使用,当前定制 4.4 内核不支持
  • NFS 随机端口可固定:修改 /etc/default/nfs-kernel-server 中 RPCMOUNTDOPTS 加入 --port 4001