2026-04-20 | linux · networking | #socket #linux-kernel #vfs #proto-ops #reuseport #epoll #sock-alloc #inet-create #bpftrace
你调用 socket(AF_INET, SOCK_STREAM, 0) 创建一个 TCP 连接,底层发生了什么?内核分配了两个核心对象——VFS 层的 struct socket 和协议层的 struct sock,通过 proto_ops 和 proto 两张分发表,把文件系统语义的 read/write 翻译成协议语义的 tcp_sendmsg/tcp_recvmsg。本文从 Linux 6.6 内核源码拆解 socket 创建、双层分发、SO_REUSEPORT 多核分发、epoll 集成的完整实现。
2026-05-19 | os | #epoll #event-poll #lt-et #thundering-herd #ready-list
epoll 用红黑树管理 fd、就绪链表 O(1) 返回事件——打败 select/poll 的关键。本文讲 eventpoll 结构、LT/ET 语义、EPOLLEXCLUSIVE 与惊群、级联 epoll、EPOLLONESHOT、与 io_uring 的比较。
2026-05-23 | os | #benchmark #epoll #io-uring #libaio #async-model
epoll、io_uring、libaio、阻塞线程池——四种异步模型的真实性能对比。本文用统一 workload 量化 echo server、静态文件服务、数据库 I/O 场景下的吞吐、延迟与 CPU 开销。
2025-07-21 | network | #socket #epoll #io-multiplexing #c10k #network-programming
网络编程模型的选择决定了服务的并发能力上限。本文从阻塞 I/O 到非阻塞、select、poll、epoll,逐步解剖每种模型的系统调用开销、性能边界与适用场景,用 C 代码实测从 C10K 到 C1M 的演进。
2025-07-22 | network | #epoll #edge-trigger #level-trigger #linux-kernel #high-performance
epoll 是 Linux 高性能网络编程的基石。本文深入剖析 epoll 的内核数据结构(红黑树与就绪链表)、ET 和 LT 两种触发模式的行为差异与编程范式、惊群问题及 EPOLLEXCLUSIVE 的解决方案。
2025-08-28 | network | #nginx #reverse-proxy #event-driven #epoll #upstream
系统剖析 Nginx 的架构设计:Master-Worker 进程模型的工程细节、epoll 事件驱动机制、Upstream 负载均衡与连接池管理、内存池与缓冲区设计、共享内存与 Worker 间通信,建立 Nginx 从配置到内核的完整理解。
2026-04-13 | architecture | #WebSocket #SSE #MQTT #push-architecture #long-connection #epoll
推送系统的核心难度不在协议选型,而在连接管理、心跳检测、断线重连、消息可靠投递这些工程细节。本文从 WebSocket 帧格式、SSE 重连机制、MQTT QoS 三级语义讲起,拆解百万长连接的 epoll 单机架构,深入分析心跳探活、指数退避重连、离线消息队列的设计取舍,结合即时通讯和物联网两个工程案例,讨论推送系统从单机到集群的水平扩展路径。
2026-04-06 | algorithms | #epoll #linux-kernel #io-multiplexing #red-black-tree #event-driven #network-programming #systems-programming
Nginx 用一个进程处理 10 万个并发连接,核心就是 epoll。但 epoll 的 O(1) 性能不是魔法——它用红黑树存储监控集合,用链表收集就绪事件,用回调避免轮询。三个数据结构各司其职,精妙得像一台钟表。
2025-11-30 | linux · io_uring · performance | #linux #io_uring #epoll #benchmark
全方位对比 io_uring 与 epoll:从系统调用开销、内存管理到编程模型,分析 io_uring 在高性能 I/O 场景中的优势与局限。
2025-11-30 | linux · io_uring · epoll · performance | #linux #io_uring #epoll #benchmark #tradeoff
并非所有场景都适合 io_uring。深入分析快路径延迟、内存隐性成本、生态复杂度等因素,帮助你做出理性的技术选型。
2026-03-14 | linux · io_uring · epoll · debugging | #linux #io_uring #epoll #debugging #bpftrace #perf #gdb #rr #sanitizer #observability #opentelemetry #profiling
一份面向线上事故的事件驱动代码排障手册:从症状收敛、strace/eBPF/perf 逐层下钻,到 OpenTelemetry 集成与 Sanitizer 离线复盘。
2025-11-27 | libevent | #C #epoll #kqueue #IO Multiplexing
解密 Libevent 如何封装 epoll、kqueue 等底层机制,实现跨平台的统一事件接口。
2025-11-27 | libevent | #C #Cross-platform #epoll #kqueue #IOCP
对比 Linux epoll、BSD kqueue 和 Windows IOCP 的异同,以及 Libevent 在不同平台上的实现差异与避坑指南。
2025-11-27 | libevent | #C #File I/O #Pipe #epoll
探讨 Libevent 对管道、TTY 和普通文件的支持差异,揭示 epoll 不支持磁盘文件的原因及解决方案。
2025-01-30 | io_uring | #io_uring #epoll #benchmark #networking #linux-kernel #event-loop
io_uring 一定比 epoll 快?跑五个场景的实测数据告诉你:某些情况下 epoll 还是赢的。用数据打自己的脸。
2026-04-03 | networking | #networking #libevent #multithreading #event-driven #epoll
多线程 Libevent 编程实践:异步网络 IO、事件驱动架构与跨平台开发
2026-08-10 | programming | #rust #tokio #async #runtime #work-stealing #waker #epoll #mio #timer #concurrency #systems-programming
从 Future::poll 到 work-stealing 调度器,从 Waker vtable 到 mio/epoll I/O 驱动,再到层级时间轮——一层一层拆开 tokio 约 40000 行代码的运行时内核,看看你每写一个 .await 背后到底发生了什么。
2025-11-13 | system-design | #c10k #c10m #high-concurrency #epoll #io_uring #event-driven #reactor #proactor #dpdk #network-programming #performance-optimization
深度解析C10K到C10M问题的演进,涵盖从select/poll到epoll、io_uring的I/O模型变革,Reactor与Proactor模式的实现,事件驱动架构,内核旁路技术(DPDK),以及Go/Erlang的M:N调度模型,全面剖析现代高并发网络编程的理论本质与工程实践。