名称: 事件循环 描述: 用于高性能事件驱动I/O编程和优化的专家技能 允许使用的工具:
- Bash
- Read
- Write
- Edit
- Glob
- Grep
事件循环技能
跨平台和运行时环境的高性能事件驱动I/O编程专家技能。
能力
- 平台多路复用器: 配置epoll (Linux)、kqueue (BSD/macOS)、IOCP (Windows)
- 性能分析: 分析事件循环性能并识别瓶颈
- 事件调试: 调试事件处理问题和回调延迟
- 框架代码生成: 为libuv、Boost.Asio、Tokio和mio生成代码
- C10K+优化: 优化大规模并发连接处理
- 性能剖析: 使用系统工具剖析事件循环性能
- io_uring集成: 实现Linux io_uring用于高性能I/O
- 定时器管理: 高效的定时器轮和分层定时实现
工具和依赖
strace/dtrace- 系统调用跟踪perf- Linux性能分析libuv- 跨平台异步I/Oio_uring- Linux异步I/O接口Tokio- Rust异步运行时Boost.Asio- C++异步I/O
目标进程
- event-driven-socket-handler.js
- tcp-socket-server.js
- websocket-server.js
- layer4-load-balancer.js
使用示例
epoll事件循环 ©
int epfd = epoll_create1(0);
struct epoll_event ev, events[MAX_EVENTS];
ev.events = EPOLLIN | EPOLLET; // 边缘触发
ev.data.fd = listen_fd;
epoll_ctl(epfd, EPOLL_CTL_ADD, listen_fd, &ev);
while (1) {
int n = epoll_wait(epfd, events, MAX_EVENTS, -1);
for (int i = 0; i < n; i++) {
handle_event(&events[i]);
}
}
io_uring设置
struct io_uring ring;
io_uring_queue_init(256, &ring, 0);
// 提交和完成I/O操作
性能剖析
perf record -g ./server
perf report --stdio
strace -c -f ./server
质量门限
- 事件处理延迟在阈值内
- 无回调饥饿
- 负载下内存使用稳定
- CPU利用率优化
- C10K+连接处理已验证