首页 > 其他分享 >盘一盘高性能设计的哪些点(二)

盘一盘高性能设计的哪些点(二)

时间:2023-07-07 11:36:35浏览次数:49  
标签:kernel 哪些 buffer 高性能 user context 一盘 拷贝到 数据

继续上一篇 盘一盘高性能设计的那些点(一) 文章,继续探讨高性能设计的一些点!

image

一、顺序访问

磁盘内容读取或写入操作都会涉及到一个【寻址过程】,首先找到需要读取或写入的位置,然后去操作磁盘内容读写。

所谓顺序访问,就是将以存储连续的方式写入、读取磁盘内容。

下图为不同存储介质顺序、随机访问性能对比:

image
图片来源

就好像快递员送货一样,它会实现规划好路线,一条线送过去,是最省时省力的。

1、kafka

Kafka 每条消息都会被 append 到相应的 partition 中,顺序写磁盘,效率非常高。是 Kafka 高吞吐率的一个很重要的保障。

2、MySQL

Mysql 顺序读写类文件包括: InnoDB system tablespace 文件及 binary log 及 redo log 日志文件等

... ...

二、零拷贝

传统方式,数据从存储介质读取到发送到网络整个过程会涉及到多次数据拷贝及上下文切换操作,如下:

image

图上层为上下文切换过程,下层为拷贝过程。

  • user context 切换到 kernel context;DAM engine 将数据从磁盘拷贝到内核。

  • 数据从 kernel buffer 拷贝到 user buffer;kernel context 切换到 user context。

  • user context 切换到 kernel context,数据从 user buffer 拷贝到 socket buffer。

  • kernel context 切换到 user context,数据从 socket buffer 拷贝到 protocol engine。

mmap 方式演进:

image

用户进程共享 kernel buffer。

mmap 上线文切换过程不变,数据传输省略掉了 kernel buffer 和 user buffer 之间的拷贝过程,数据直接从 kernel buffer 拷贝到 socket buffer。

Sendfile 方式演进:

image

Read Write 过程由 Sendfile 机制替代。

Zero copy:

image

DMA 将数据从存储介质拷贝到 kernel buffer 后,不再做任何数据拷贝,直接将带有数据地址及长度信息的文件句柄追加至 socket buffer。

DMA engine 负责将数据从 kernel buffer 传送至 protocol engine。

参考文献

1、Kafka

TransferableRecords::writeTo 方法实现了 sendfile,更高效的实现消息的收发。

2、Netty

依赖于操作系统零拷贝特性直接将缓冲区数据发送到相应的通道。 netty 利用 NIO FileChannel transferTo 方法,通道对通道写数据。
image

三、异步非阻塞

异步的着眼点在于剥离主流程。

主流程继续执行主线任务,异步逻辑开辟支线处理。

1、IO

IO -> NIO -> AIO

2、异步逻辑

基于 EventBus 或者 消息队列进行异步逻辑任务的处理。

如记录操作记录,历史变更等信息。

image

标签:kernel,哪些,buffer,高性能,user,context,一盘,拷贝到,数据
From: https://www.cnblogs.com/niejunlei/p/17525500.html

相关文章

  • springboot微服务架构有哪些?这些都是需要了解的
    SpringBoot是一种用于构建独立的、可扩展的、轻量级的Java应用程序的框架。它简化了Spring应用程序的开发过程,并提供了丰富的功能和集成的支持。在微服务架构中,SpringBoot可以作为一个基础框架来构建和管理各个微服务。下面是一些常用的SpringBoot微服务架构组件和技术:Sprin......
  • 作为程序员,可以关注哪些网站
    技术大牛博客2、陈浩:https://www.coolshell.cn/博客文章多,更新快,质量高!!!3、廖雪峰:https://www.liaoxuefeng.com/Python启蒙老师,Python,Git系列教程作者4、王垠:http://www.yinwang.org/5、阮一峰:http://www.ruanyifeng.com/home.html计算机科普博主国内技术社区6、博客......
  • 污水处理设备管理系统的作用有哪些?
    污水处理设备管理系统是一种集成化的系统,能够帮助管理者实时监测污水处理设备的运行情况,提高污水处理效率和质量。那么,污水处理设备管理系统的作用有哪些?青鸟云报修推出扫码标识设备、智能手机作为现场管理终端的设备移动实时管理系统方案,实现对污水处理设备的运行状况、故障报修、......
  • 有哪些相见恨晚的办公(word/Excel)神器?
    相见恨晚的办公神器之前有分享过一些办公的插件如不坑盒子,打工人插件,易用宝等,下面就简单的介绍一下上面的几个神器后再补充一些其它办公神器吧不坑盒子(word/wps)这是一个非常好用的插件工具,专门应用在Word文档和wps,支持Office2010以上的版本,操作也简单且实用。前面几篇文章......
  • 大连人工智能计算平台——华为昇腾AI平台——高性能计算HPC的异构计算——CPU和GPU的
    好消息,居然有经费了,账号可以接着用了,可以接着玩超算了。   ==========================================================......
  • 企业大数据分析工具有哪些呢?
    大数据通常被定义为具备五个特点的数据资料。这些特点包括数据规模巨大、处理速度快、包含多种类型、价值密度较低以及具备真实性。由于这种数据超出了传统数据处理软件的能力,所以需要借助新的工具,也就是大数据分析工具来进行处理。那么,迄今为止,我们常用的大数据分析工具有哪些?根据......
  • 【Netty】「萌新入门」(四)异步编程模型:利用 Future 和 Promise 提高性能与响应能力
    前言本篇博文是《从0到1学习Netty》中入门系列的第四篇博文,主要内容是介绍Netty中Future与Promise的使用,通过使用异步的方式提高程序的性能和响应速度,往期系列文章请访问博主的Netty专栏,博文中的所有代码全部收集在博主的GitHub仓库中;为什么要使用异步?使用异步编程模式......
  • 好用的开源知识管理系统有哪些?整理10款主流知识管理工具(开源、免费、企业、个人)
    知识管理系统并没有一个统一的定义。根据组织状况的不同,以及出于文档沉淀、知识库对外分享、多人协作、个人笔记、文档快速检索等需求的不同,每个组织都需要的知识管理系统可能都不一样。但在大部分时候,我们讨论知识管理系统时,我们集中在那些能够有效存储信息,同时能够实现高效的知......
  • 学习英语给你带来了哪些机会?
    昨天文章发出后,J姐姐给予了一些更正,我希望将来也能够像她那样走出去看一看。Y呢,并不是我说的那样混日子,了解更多之后,才发现他是个王者,顿时肃然起敬。“一起学英语”群里大佬云集,希望他们继续多多分享经验。前两天冰雪读完大神分享的《芯片战争》后,就有了很多的心得体会。我想她的开......
  • 有哪些免费的开源小工具?
    整理了一些感觉还不错的开源小工具,其中有部分仅适用MacOS,但多数可跨平台使用。   HomebrewformacOS地址:https://brew.sh   Mac上非常好用的包管理工具,很多常见的安装都可以通过brewinstallapp或者brewcaskinstallapp直接安装,类似apt-get。  OhMy......