自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux高性能旁路技术:DPDK

DPDK是一款性能极高的网络驱动组件,可以开辟一条可以不经过传统的数据流处理流程“通路”,可以直接接管网卡从网络环境里接受的数据。DPDK内部封装了一系列的方法,可以将数据处理完成后重新写入协议栈,也可以写到VFS模块和POSIX,实现直接和应用层其他app进行数据的交互。DPDK设计的初衷是提高网络的吞吐量。可以做的方面包括,对网络吞吐量要求高的所有的地方:防火墙、云主机、泛洪测试工具、CDN等等。后续将持续更新新的代码,此部分代码实现UDP数据的接收。

2024-07-15 23:01:47 316

原创 Linux:大文件的读写:mmap

由于磁盘IO的读写性能相较于内存的读写性能要慢很多,如何提高磁盘IO 的性能是比较关键的,本文简单的实现了对于单个磁盘大文件IO的读写采用的mmap和多进程的方式,实现大小2G的文件,在5-6s的时间内完成读写操作,如果想要读取众多的大文件,可以结合前面的博文io_uring进行实现。

2024-07-13 18:27:49 557

原创 Linux 池化组件之二:Memory Pool

上文说到线程池的核心思想都是,减少用户层向内核操作系统申请资源的频率,从而减少了线程创建和销毁的开销。内存池的思想和其类似,也是减少用户层向内核操作系统申请存储资源的频率,同时其还具有防止程序长时间运行,产生过多的内存碎片导致的计算终止。内存池的做法是向操作系统一次申请一块较大的内存,然后由由用户层对该块内存进行管理。内存池的实现有多种根据不同的需求可以定制化设计不同的内存池,本文采用采用在内存池分配固定大小的内存空间的方式实现内存池。

2024-07-10 00:35:31 296

原创 Linux 池化组件之一:Thread Pool

当今计算机软硬件发展的极其迅猛,计算机大神们都各显神通的将计算机的性能发挥到极致。线程池的核心思想都是,减少用户层向内核操作系统申请资源的频率,从而减少了线程创建和销毁的开销。一般在线程执行结束之后,会对线程进行回收处理。线程池是一次性向操作系统申请固定数量的线程,并在用户层管理分配完成的线程:在某个线程业务逻辑执行完后并不会立马的释放,而是在应用层上提供一个管理线程的一系列接口函数,重复利用已经向操作系统内核申请的线程。

2024-07-10 00:35:25 155

原创 高性能:协程

协程是一个“轻量级线程”,更倾向解释为一个特殊的函数。

2024-07-05 12:00:18 287

原创 Linux 异步IO简介(io_uring)

异步是形容两者之间的关系(例如:在网络信息交互时客户端和服务端的关系就属于异步的,即请求回应模式)。将IO操作数据的请求和数据返回进行分开处理。对于异步的方式编程,并不是将CPU“有效的运行时间减少”,而是将耗时操作(例如:文件IO操作,文件IO的读写操作可以分为两个部分一个是IO事件的触发,一个是文件IO操作的结果(即将磁盘的数据加载到内核态再将内核态的数据拷贝到用户空间),在同步IO操作时将其看成是一个完整的过程,即具备“原子性”,CPU在此期间处于休眠的状态,导致CPU的利用率不高。)利用起来。

2024-07-04 22:51:06 541

原创 Linux网络协议栈:TCP/IP/UDP协议

网络协议栈是网络通信双方要进行 “信息交互” 所必须遵守的一系列约定。TCP/UDP在五层网络模型中处在内核传输层上,作为一个中间桥梁,作用是把应用层(用户层)的数据进行整理和封装并将其传递给网络层(IP协议只是其中一个 ),由网络层添加IP协议头之后传递给数据链路层,数据链路层由以太网MAC协议添加MAC头帧头帧尾信息,最后由物理层的硬件设备发出二进制数字信息。首先需要注意的是不管是TCP网络协议还是UDP网络协议都是内核协议栈,用户只能调用相应的API进行代码的编写。

2024-06-29 21:33:08 418

原创 Linux网络:基于reactor(epoll)实现Webserver

可以发现代码网络端的更改很少,几乎只用考虑业务逻辑代码的编写,基本实现内核处理逻辑和业务处理的分离,充分的体现了reactor的优势。

2024-06-28 18:14:21 599

原创 Linux网络:reactor模型封装epoll:学习笔记2

上篇简单的介绍了Linux网络通信的简单实现。此篇介绍基于reactor(反应堆)的事件管理思维,在单线程利用,IO多路复用器(epoll)实现TCP连接的百万并发。

2024-06-27 20:27:05 519

原创 Linux网络select/poll/epoll:学习笔记1

1.socket函数。

2024-06-27 08:50:47 1195

空空如也

空空如也

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

TA关注的人

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