自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 [学习笔记]2.5 - io_uring与epoll对比测试

本文比较了io_uring和epoll的性能差异,通过客户端程序测试100万次请求的QPS表现。两者主要区别在于:io_uring实现异步零拷贝,减少系统调用和上下文切换;而epoll需要检测就绪状态再执行操作。测试中发现TCP粘包/分包问题,分析原因包括缓冲区策略、Nagle算法、MSS限制等,并提出三种解决方案(消息长度前缀、结束符、定长消息)。代码实现采用消息长度+内容的方式处理数据边界,客户端支持多线程并发测试参数配置。

2025-09-28 23:54:33 1401

原创 [学习笔记]2_5 - io_uring

,io_uring是Linux在5.1版本引入的异步I/O(调用后立即返回,通过回调或事件通知处理结果。函数返回一个io_uring的文件描述符,在获取该fd后,用户需要使用mmap函数将内核创建的队列地址映射到用户空间,避免了之心IO操作时的内核空间和用户空间的数据拷贝,这是io_uring较快速高效的一个核心原因。参数p返回io_uring的配置信息,和SQ和CQ的信息,便于在用户态操作这两个队列。这个函数用于提交用户的io操作请求,并将io buffer注册到内核,此时io操作不会开始执行。

2025-09-21 23:48:50 458

原创 [学习笔记] 2.4.1- DPDK环境搭建

本文介绍了在Ubuntu 16.04系统上配置DPDK(19.08.2版本)环境的过程。主要内容包括:1)系统环境配置,要求支持网卡多队列和大页内存(2M/1G),通过修改虚拟机.vmx文件启用多队列;2)验证网卡多队列支持的方法;3)配置HugePage,修改grub文件并更新;4)下载DPDK源码并运行配置脚本进行环境设置。这些步骤为后续DPDK应用开发提供了必要的系统支持,特别强调了多队列网卡和大页内存对提升网络性能的重要性。

2025-07-30 22:44:09 2195

原创 [学习笔记]2.3-协程 - ucontext函数簇

摘要:Linux的ucontext函数簇(getcontext/setcontext/makecontext/swapcontext)提供了用户级上下文切换能力,支持实现协程等机制。getcontext保存当前执行状态,setcontext恢复指定上下文,makecontext初始化新上下文并绑定函数,swapcontext原子切换上下文。这些函数通过ucontext_t结构体管理上下文信息,包括寄存器状态、信号屏蔽和栈空间。典型应用场景包括轻量级线程切换和协程实现,示例展示了两个函数通过swapconte

2025-07-28 00:06:06 460

原创 [学习笔记]2.1.3-reactor模型学习

本文介绍了Reactor模型及其实现方式。Reactor是一种基于多路复用函数(select/poll/epoll)的事件驱动模式,将I/O管理转变为事件管理,通过回调函数处理不同事件。核心组件包括多路复用器、事件分发器和事件处理器。文章分析了三种Reactor模型:单线程模型(所有操作由单线程处理)、多线程模型(业务处理由线程池执行)和主从多线程模型(主线程处理连接,子线程处理I/O)。最后给出了使用epoll实现的单线程Reactor代码示例,展示了事件注册、回调处理等关键实现环节,重点说明了如何通过e

2025-07-27 23:04:50 718

原创 [学习笔记] Linux系统中虚拟内存布局

简单记录并在代码中学习Linux进程中虚拟内存的布局结构

2025-07-10 23:55:08 573

原创 【学习笔记】2.1.2-select-poll-epoll

摘要 本文介绍了两种I/O多路复用系统调用:select和poll。select通过三个文件描述符集合(readfds/writefds/exceptfds)监控多个文件描述符,使用FD_SET等宏操作集合,参数nfds为最大描述符+1。poll则使用pollfd结构体数组,每个元素指定单个描述符及其关注的事件(events)和实际发生的事件(revents)。两者都支持设置超时(timeout),当有I/O就绪或超时后返回。文中还给出了使用select实现的TCP服务器示例代码,展示了如何监听socket

2025-07-06 23:18:13 1780 1

原创 【学习笔记】2.1.1-网络IO:简单server创建

【摘要】本文介绍了创建简单server所需的网络IO接口,包括socket()、bind()、listen()和accept()。重点解析了socket()的三个参数:domain(通信域,如AF_INET/IPv4)、type(套接字类型,如SOCK_STREAM/TCP)和protocol(通常为0表示默认)。同时说明了bind()使用的sockaddr结构体,及其针对不同地址族(如AF_INET使用sockaddr_in)的适配方式。这些接口是构建网络服务器的基础,通过它们可建立基本的网络通信功能。

2025-07-02 22:24:55 1765 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除