当前位置: 首页 > news >正文

wordpress china 中文烟台网站的优化

wordpress china 中文,烟台网站的优化,网站建设问题整改报告,动漫制作专业特色目录 1. 普通拷贝 2. 数据拷贝基础过程 2.1 仅CPU方式 2.2 CPUDMA方式 3.普通模式数据交互 4. 零拷贝技术 4.1 出现原因 4.2 解决思路 4.2.1 mmap方式 4.2.2 sendfile方式 4.2.3 sendfileDMA收集 4.2.4 splice方式 5. Kafka中使用到的零拷贝技术 参考链接 本…目录 1. 普通拷贝 2. 数据拷贝基础过程 2.1 仅CPU方式 2.2 CPUDMA方式 3.普通模式数据交互 4. 零拷贝技术 4.1 出现原因 4.2 解决思路 4.2.1 mmap方式 4.2.2 sendfile方式 4.2.3 sendfileDMA收集 4.2.4 splice方式 5. Kafka中使用到的零拷贝技术 参考链接 本文参考这篇文章书写【linux】图文并茂|彻底搞懂零拷贝Zero-Copy技术 - 知乎 (zhihu.com) 1. 普通拷贝 考虑这样一种常用的情形你需要将静态内容类似图片、文件展示给用户。这个情形就意味着需要先将静态内容从磁盘中复制出来放到一个内存 buf 中然后将这个 buf 通过套接字Socket传输给用户进而用户获得静态内容。可以将其抽象为如下伪代码 read(file, tmp_buf, len); write(socket, tmp_buf, len); 首先通过read() 将静态内容读取到用户缓冲区然后调用write()将用户缓冲区的内容写入到Socket。 在这个过程中普通文件A需要经过4次复制过程 调用read()将文件A的内容复制到内核模式的Read Buffer中。CPU控制将内核模式数据复制到用户模式下。调用write()将用户模式下的内容复制到内核模式下的Socket Buffer中。将内核模式下的Socket Buffer的数据复制到网卡设备中传输。 Linux系统中一切皆文件仔细想一下Linux系统的很多活动无外乎读操作和写操作零拷贝就是为了提高读写性能而出现的。 2. 数据拷贝基础过程 在Linux系统内部缓存和内存容量都是有限的更多的数据都是存储在磁盘中。对于Web服务器来说经常需要从磁盘中读取数据到内存然后再通过网卡传输给用户 上述数据流转只是大框接下来看看几种模式。 2.1 仅CPU方式 当应用程序需要读取磁盘数据时调用read()从用户态陷入内核态read()这个系统调用最终由CPU来完成CPU向磁盘发起I/O请求磁盘收到之后开始准备数据磁盘将数据放到磁盘缓冲区之后向CPU发起I/O中断报告CPU数据已经Ready了CPU收到磁盘控制器的I/O中断之后开始拷贝数据完成之后read()返回再从内核态切换到用户态 2.2 CPUDMA方式 CPU的时间宝贵让它做杂活就是浪费资源。 直接内存访问Direct Memory Access是一种硬件设备绕开CPU独立直接访问内存的机制。所以DMA在一定程度上解放了CPU把之前CPU的杂活让硬件直接自己做了提高了CPU效率。 目前支持DMA的硬件包括网卡、声卡、显卡、磁盘控制器等。 有了DMA的参与之后的流程发生了一些变化 最主要的变化是CPU不再和磁盘直接交互而是DMA和磁盘交互并且将数据从磁盘缓冲区拷贝到内核缓冲区之后的过程类似。 “【 敲黑板】无论从仅CPU方式和DMACPU方式都存在多次冗余数据拷贝和内核态用户态的切换。 ” 我们继续思考Web服务器读取本地磁盘文件数据再通过网络传输给用户的详细过程。 3.普通模式数据交互 一次完成的数据交互包括几个部分系统调用syscall、CPU、DMA、网卡、磁盘等。 系统调用syscall是应用程序和内核交互的桥梁每次进行调用/返回就会产生两次切换 调用syscall 从用户态切换到内核态syscall返回 从内核态切换到用户态 来看下完整的数据拷贝过程简图 读数据过程 应用程序要读取磁盘数据调用read()函数从而实现用户态切换内核态这是第1次状态切换DMA控制器将数据从磁盘拷贝到内核缓冲区这是第1次DMA拷贝CPU将数据从内核缓冲区复制到用户缓冲区这是第1次CPU拷贝CPU完成拷贝之后read()函数返回实现用户态切换用户态这是第2次状态切换 写数据过程 应用程序要向网卡写数据调用write()函数实现用户态切换内核态这是第1次切换CPU将用户缓冲区数据拷贝到内核缓冲区这是第1次CPU拷贝DMA控制器将数据从内核缓冲区复制到socket缓冲区这是第1次DMA拷贝完成拷贝之后write()函数返回实现内核态切换用户态这是第2次切换 综上所述 读过程涉及2次空间切换、1次DMA拷贝、1次CPU拷贝写过程涉及2次空间切换、1次DMA拷贝、1次CPU拷贝 可见传统模式下涉及多次空间切换和数据冗余拷贝效率并不高接下来就该零拷贝技术出场了。 4. 零拷贝技术 4.1 出现原因 我们可以看到如果应用程序不对数据做修改从内核缓冲区到用户缓冲区再从用户缓冲区到内核缓冲区。两次数据拷贝都需要CPU的参与并且涉及用户态与内核态的多次切换加重了CPU负担。 我们需要降低冗余数据拷贝、解放CPU这也就是零拷贝Zero-Copy技术。 4.2 解决思路 目前来看零拷贝技术的几个实现手段包括mmapwrite、sendfile、sendfileDMA收集、splice等。 4.2.1 mmap方式 mmap是Linux提供的一种内存映射文件的机制它实现了将内核缓冲区地址与用户空间缓冲区地址进行映射从而实现内核缓冲区与用户缓冲区的共享。这样就减少了一次用户态和内核态的CPU拷贝但是在内核空间内仍然有一次CPU拷贝。 这样就减少了一次用户态和内核态的CPU拷贝但是在内核空间内仍然有一次CPU拷贝。 mmap对大文件传输有一定优势但是小文件可能出现碎片并且在多个进程同时操作文件时可能产生引发coredump的signal。 4.2.2 sendfile方式 sendfile是一种在网络传输中实现零拷贝的方式。sendfile() 是一种特殊的系统调用它允许在内核空间和用户空间之间直接传输数据避免了数据在内核和用户空间之间的额外拷贝。这在高性能的网络传输中非常有效。 mmapwrite方式有一定改进但是由系统调用引起的状态切换并没有减少。 sendfile系统调用是在 Linux 内核2.1版本中被引入它建立了两个文件之间的传输通道。 sendfile方式只使用一个函数就可以完成之前的readwrite 和 mmapwrite的功能这样就少了2次状态切换由于数据不经过用户缓冲区因此该数据无法被修改。 从图中可以看到应用程序只需要调用sendfile函数即可完成只有2次状态切换、1次CPU拷贝、2次DMA拷贝。 但是sendfile在内核缓冲区和socket缓冲区仍然存在一次CPU拷贝或许这个还可以优化。 4.2.3 sendfileDMA收集 Linux 2.4 内核对 sendfile 系统调用进行优化但是需要硬件DMA控制器的配合。 升级后的sendfile将内核空间缓冲区中对应的数据描述信息文件描述符、地址偏移量等信息记录到socket缓冲区中。 DMA控制器根据socket缓冲区中的地址和偏移量将数据从内核缓冲区拷贝到网卡中从而省去了内核空间中仅剩1次CPU拷贝。 这种方式有2次状态切换、0次CPU拷贝、2次DMA拷贝但是仍然无法对数据进行修改并且需要硬件层面DMA的支持并且sendfile只能将文件数据拷贝到socket描述符上有一定的局限性。 4.2.4 splice方式 splice系统调用是Linux 在 2.6 版本引入的其不需要硬件支持并且不再限定于socket上实现两个普通文件之间的数据零拷贝。 splice 系统调用可以在内核缓冲区和socket缓冲区之间建立管道来传输数据避免了两者之间的 CPU 拷贝操作。 splice也有一些局限它的两个文件描述符参数中有一个必须是管道设备。 5. Kafka中使用到的零拷贝技术 Producer生产的数据持久化到broker采用mmap文件映射实现顺序的快速写入Customer从broker读取数据采用sendfile将磁盘文件读到OS内核缓冲区后直接转到socket buffer进行网络发送。 参考链接 Kafka 中所谓的 ‘零拷贝’ 技术到底是什么-腾讯云开发者社区-腾讯云 (tencent.com) 【linux】图文并茂|彻底搞懂零拷贝Zero-Copy技术 - 知乎 (zhihu.com)
http://www.zqtcl.cn/news/569631/

相关文章:

  • 做网站网站需要注意什么网站建设swot市场分析
  • 大学生兼职网站的融资方案云凡济南网站建设开发
  • 做动态效果的插件网站抚顺清原网站建设招聘
  • 商务网站开发需求分析厦门35网站建设公司
  • wordpress classseo推广服务
  • 石景山网站建设公司网站后台密码如何破解
  • 哪个大学的网站做的最好看南宁网站设计制作公司
  • 北京 集团公司网站建设免费网站建设模版云盘
  • 阿里云建设网站要什么广州网站建设方案案例
  • 德阳吧网站建设线上编程培训机构哪家好
  • 天津电商网站开发备案查询站长之家
  • 网至普的营销型网站布局青岛做网站
  • 网站开发的安全问题wordpress文章列表显示缩略图
  • 网站运营招聘代理商加盟
  • 清远 网站建设自己做的网站怎么发布
  • 可以做免费推广的网站短视频app有哪些
  • 班级网站建设的系统概述wordpress品牌分类
  • 学做网站论坛第六节个人网站注册公司
  • 网站宣传怎样做不违法做网络平台的网站有哪些
  • 网站建设go邢台集团网站建设报价
  • 哪个网站做appwordpress改成织梦
  • 重庆南岸营销型网站建设公司推荐o2o平台网站建设
  • 网站建设横向发展纵向发展贵阳网站建设外包
  • 网站建设的解决方案南京网站搜索排名
  • 网站怎么做背景衡阳网页定制
  • h5做网站用什么软件中英版网站系统
  • 汕头中英文网站推广wordpress取回密码收不到邮件
  • 外贸在线网站建站wordpress开放注册
  • 桂林餐饮兼职网站建设如何在百度上建网站
  • 怎样做免费网站的推广便宜点的网站空间