epoll
-
just-js 高性能 javascript 运行时
一个非常小的 v8 javascript 运行时,仅适用于 Linux。 在Techempower第21回测试中,获得第一名!!! github地址: https://github.com/just-js/just 构建和运...
1 3882 3 javascript -
Redis 单线程与 Reactor 模型的精密协同机制
在高性能网络编程领域,Redis 常被作为“单线程高性能”的典范。要理解为什么 Redis 的单线程设计在处理高并发网络 IO 时,不仅没有成为瓶颈,反而避免了多线程的延迟副作用,我们需要从 CPU 架构、操作系统内核以及 Redis 自...
-
为什么 Redis 坚持选择 epoll 的水平触发(LT)而非边缘触发(ET)?
在程序员的面试“八股文”中,关于 Linux epoll 的讨论几乎是一个必考点。很多人在背诵答案时,会形成一个思维定势: 边缘触发(ET)比水平触发(LT)更高效,因为 ET 减少了 epoll_wait 的调用次数。 然...
-
彻底搞懂 Nginx 的 accept_mutex:它是如何解决早期 Linux 惊群效应的?
在探讨 Nginx 的 accept_mutex 机制之前,我们需要先明确一个背景: “惊群效应”(Thundering Herd)在现代 Linux 内核中,对于单纯的 accept() 系统调用其实早已在内核层解决。 ...
-
大白话彻底搞懂 epoll 为什么比 select/poll 强:从内核数据结构到高并发本质
在写高并发网络程序时,大家都知道要用 epoll ,也知道 select 和 poll 在连接数多了之后性能会急剧下降。 但如果面试官深挖一步: “到底是什么底层结构和运行机制的差异,导致了这种性能上的天壤之别?” 如...
-
深度剖析:epoll ET 模式下如果不设非阻塞,内核里会发生什么?
在 Linux 高性能网络编程中,**“epoll 的 ET(边缘触发)模式必须配合非阻塞(Non-blocking)Socket 使用”**几乎是一条铁律。 但你是否深入思考过: 如果不这么做,到底会发生什么?底层的内核运转逻辑又是...
-
彻底搞懂 I/O 多路复用:从 select 到 epoll 的演进与核心底层设计
在现代互联网高并发场景(如 C10K、C10M 问题)中, I/O 多路复用 是支撑高吞吐量服务的基石。无论是 Redis、Nginx 还是 Netty,其底层都离不开这一技术的支持。 从早期的 select 、 poll 到如今...
-
现代 C++ 极简实战:如何用 epoll 实现万级并发的 HTTP 服务器?
要让单台服务器撑住万级并发(C10K 问题),传统的“一连接一线程(Thread-per-connection)”模型会因为线程上下文切换和内存开销(每个线程默认栈空间 8MB)直接崩溃。 现代 Linux 服务端的标准解法是: 非阻...
-
C++ 高性能无锁队列设计:如何极致优化 Reactor 与 Worker 线程间的数据交付
在构建高性能 C++ 网络服务器(如基于 Epoll/Kqueue 的 Reactor 模型)时,Reactor 线程(负责 I/O 多路复用与事件分发)与 Worker 线程池(负责业务逻辑计算)之间的数据交付效率,直接决定了整站的吞吐...
-
突破异步C++极限:如何基于 P2300 (std::execution) 构建高性能 io_uring 调度器?
在 C++23 中,随着 std::execution (即 P2300 提案)的逐步落地,C++ 异步编程正在迎来底层的统一变革。借助 Sender/Receiver(发送器/接收器) 模型,我们可以用高度结构化的方式组织异步任务...
-
io_uring 缓冲池优化实践:如何用无锁 Buffer Ring 彻底解决网络库的内存抖动
在编写高性能网络服务器时,最让人头疼的往往不是 I/O 拷贝本身,而是 内存分配的确定性 。 在传统的 epoll 异步非阻塞模型中,我们通常面临两难境地: 预分配模式 :为每个连接(Connection)在初始化时就绑...
-
深入 io_uring 零拷贝:高性能网络发送下的内存生命周期与背压控制
在百兆、千兆网络时代,标准的套接字 send/recv 带来的内核态与用户态内存拷贝( copy_to_user / copy_from_user )开销微乎其微。但在 100GbE / 400GbE 骨干网络及高吞吐、低延迟的现...
-
突破网络瓶颈:SPDK NVMe-oF TCP 架构下的 io_uring 与 eBPF 套接字优化实践
在 NVMe-over-Fabrics (NVMe-oF) TCP 部署中,尽管 SPDK(Storage Performance Development Kit)利用用户态、轮询模式(Poll-mode)驱动极大地释放了 SSD 的吞吐...
-
跑满 NVMe 极限:基于 SPDK 的无锁分布式元数据引擎架构设计
在单盘 NVMe SSD 轻松突破百万级 IOPS、百微秒级延迟的今天,分布式存储系统的性能瓶颈早已不再是底层物理硬件的读写速度,而是软件栈在 CPU 上的开销。 在传统架构中,元数据引擎(如基于内核态文件系统的 RocksDB)在面...
-
用户态 VFIO 驱动如何实现不依赖内核驱动切换的 PCI 设备热插拔?
在高性能网络和存储领域(如 DPDK、SPDK),为了追求极致的吞吐量和低延迟,通常会将 PCI 设备完全交由用户态驱动(VFIO)接管。 但在实际生产环境中,服务器运行期间动态增加网卡、更换故障硬盘(NVMe)是常态。传统的内核驱动...