banner
按时间整理的学习笔记。

文章归档

Scroll down
Network

嵌入式 Linux 设备接入网络后,TCP/IP 协议栈的默认参数往往不能满足实时性或吞吐量要求。工业网关、边缘计算节点、车载终端等场景下,网络延迟的毫秒级波动可能直接影响控制回路或数据采集的完整性。本文聚焦内核网络栈中对延迟和吞吐影响最大的可调参数,给出一套可落地的调优方法。

调优的核心判断是:嵌入式场景的网络需求通常是低延迟、确定性优先,而非最大吞吐。基于此,本文围绕缓冲区大小、拥塞控制算法、NAPI 调度、中断亲和性四个维度展开,最终形成一份可直接应用的检查清单。

嵌入式 Linux 系统在工业网关、车载终端、远程采集设备等场景中大量承担网络通信任务。内核默认的 TCP/IP 参数面向通用桌面和服务器场景设计,在内存受限、带宽有限、对延迟敏感的嵌入式环境中往往需要针对性调整。本文梳理内核网络协议栈中影响吞吐与延迟的关键参数,给出一套可在嵌入式设备上直接复现的调优步骤和检查清单。

核心结论是:嵌入式 TCP/IP 调优不是简单地”增大缓冲区”,而是在内存预算、吞吐需求和延迟指标之间做显式权衡;通过 sysctl 参数修改、内核编译裁剪和运行时监控三步闭环,可以在不增加硬件成本的前提下将网络延迟降低 30% 以上。

网络问题是嵌入式现场最常见的问题之一。设备能不能拿到 IP、能不能解析域名、能不能连上 MQTT、断网后能不能恢复,都会影响产品稳定性。

一、先确认问题边界

网络问题最怕一上来就改配置。排障前先确认边界:是本机不能访问外部,还是外部不能访问本机;是所有域名都失败,还是只有某个服务失败。

一、为什么需要 epoll

阻塞 socket 服务端一次只能等待一个连接或一个读写事件。客户端数量少时问题不大,但连接数变多后,多进程和多线程模型会带来上下文切换、内存占用和调度开销。

Linux 下高并发网络服务常用 epoll

epoll 适合:

  • 大量连接。
  • 多数连接空闲。
  • 事件驱动服务端。
  • 长连接服务。

一、网络编程先理解什么

Linux 网络编程的核心是 socket。socket 是应用程序访问网络的接口,HTTP、WebSocket、RPC 等上层协议最终都建立在 socket 之上。

入门需要先理解:

  • IP:主机地址。
  • 端口:进程提供服务的入口。
  • TCP:可靠字节流。
  • UDP:无连接数据报。
  • 服务端:监听端口,等待连接。
  • 客户端:主动连接服务端。
1
请输入关键词进行搜索