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

网站服务器配置单wordpress安全教程

网站服务器配置单,wordpress安全教程,化妆品 营销型网站,不同类型网站1、在没有DMA技术之前的I/O过程是这样的#xff1a; CPU发出对应的指令给磁盘控制器#xff0c;然后返回磁盘控制器收到指令后#xff0c;于是就开始准备数据#xff0c;会把数据放入到磁盘控制器的内部缓冲区#xff0c;然后产生中断CPU收到中断信号后#xff0c;停下手…1、在没有DMA技术之前的I/O过程是这样的 CPU发出对应的指令给磁盘控制器然后返回磁盘控制器收到指令后于是就开始准备数据会把数据放入到磁盘控制器的内部缓冲区然后产生中断CPU收到中断信号后停下手头工作接着把磁盘控制器的缓冲区的数据一次一个字节地读进自己的寄存器。然后再把寄存器里的数据写入到内存而在数据传输的期间CPU是无法执行其他任务 的。 整个传输过程中都要CPU亲自参与搬运数据的过程而且这个过程CPU是不能做其他事情的。这会大大降低CPU的效率并且如果使用千兆网卡或者硬盘传输大量数据时都用CPU搬运的话肯定忙不过来 2、DMA技术 直接内存访问 Direct Memory Access 简单理解就是在进行I/O设备和内存的数据传输的时候数据搬运的工作全部交给DMA控制器而CPU不再参与任何与数据搬运相关的事情这样CPU就可以去处理其他的事务。 与磁盘的交互IO操作都交给了DMA控制器去做CPU得到解放 具体过程 ⽤户进程调⽤ read ⽅法向操作系统发出 I/O 请求请求读取数据到⾃⼰的内存缓冲区中进程进⼊阻塞状态操作系统收到请求后进⼀步将 I/O 请求发送 DMA 然后让 CPU 执⾏其他任务DMA 进⼀步将 I/O 请求发送给磁盘磁盘收到 DMA 的 I/O 请求把数据从磁盘读取到磁盘控制器的缓冲区 中当磁盘控制器的缓冲区被读满后向 DMA 发起中断信号告知⾃⼰缓冲区已满DMA 收到磁盘的信号将磁盘控制器缓冲区中的数据拷⻉到内核缓冲区中 此时不占⽤ CPUCPU 可以执⾏其他任务当 DMA 读取了⾜够多的数据就会发送中断信号给 CPUCPU 收到 DMA 的信号知道数据已经准备好于是将数据从内核拷⻉到⽤户空间 系统调⽤返回 早期DMA只存在于主板上如今IO设备越来越多数据传输的需求也不尽相同所以每个I/O设备里面都有自己的DMA控制器 3、传统的文件传输 如果服务端要提供文件传输的功能我们能想到的最简单的方式是将磁盘上的文件读取出来然后通过网络协议发送给客户端。 而传统的I/O的工作方式是数据读取和写入是从用户空间到内核空间来回复制而内核空间的数据是通过操作系统的I/O接口从磁盘读取或写入。 read(file, tmp_buf, len); write(socket, tmp_buf, len);这两行代码干了非常多的事如图 可以看到这期间发生了4次用户态与内核态的上下文切换 因为发生了两次系统调用一次是read()一次是write()。每一次系统调用都要从用户态切换到内核态等内核态完成任务后又要切换回用户态。而上下文切换的成本也很大尤其在高并发的场景下这类时间容易被累积放大从而影响系统的性能。 其次还发生了4次数据拷贝 两次是DMA拷贝两次是CPU拷贝。 第⼀次拷⻉把磁盘上的数据拷⻉到操作系统内核的缓冲区⾥这个拷⻉的过程是通过 DMA 搬运的。第⼆次拷⻉把内核缓冲区的数据拷⻉到⽤户的缓冲区⾥于是我们应⽤程序就可以使⽤这部分数据了这个拷⻉到过程是由 CPU 完成的。第三次拷⻉把刚才拷⻉到⽤户的缓冲区⾥的数据再拷⻉到内核的 socket 的缓冲区⾥这个过程依然还是由 CPU 搬运的。第四次拷⻉把内核的 socket 缓冲区⾥的数据拷⻉到⽹卡的缓冲区⾥这个过程⼜是由 DMA 搬运的 只是搬运一份数据结果却进行了四次数据拷贝过多的数据拷贝会消耗CPU资源大大降低系统性能。 这种传统的文件传输存在冗余的上下文切换和拷贝次数 优化文件传输 1、如何减少用户态与内核态的上下文切换的次数 读取磁盘数据时之所以要发生上下文切换这是因为用户空间没有权限操作磁盘或网卡内核的权限最高。所以一般要通过内核去完成某些任务的时候就需要使用操作系统提供的系统调用函数。 而一次系统调用必然会发生2次上下文切换从用户态切换到内核态内核态完成任务后再切换回用户态 所以要减少上下文切换的次数就要减少系统调用的次数 2、如何减少数据拷贝的次数 传统的文件传输过程会经过四次数据拷贝而这其中从内核的读缓冲区拷贝到用户的缓冲区中再从用户的缓冲区拷贝到socket的缓冲区 这个过程是没有必要的。因为文件传输的应用场景中在用户空间我们并不会对数据再加工 可以省去拷贝到数据缓冲区这一步。 零拷贝 1、实现零拷贝技术的方式通常有2种 mmapwritesendfile 它们是如何减少上下文切换和数据拷贝的次数 2、mmapwrite read系统调用的过程会将内核缓冲区的数据拷贝到用户的缓冲区为了减少这一步开销我们可以用mmap()替换read()系统调用函数。 buf mmap(file, len); write(sockfd, buf, len);mmap系统调用函数会直接把内核缓冲区里的数据映射到用户空间这样操作系统内核与用户空间就不需要再进行任何的数据拷贝操作 这样做会将内核的读缓冲区拷贝到用户缓冲区再从用户缓冲区拷贝到socket的缓冲区 这两次拷贝变成内核缓冲区拷贝到socket缓冲区 这一次拷贝 即从原来的四次拷贝变为三次拷贝减少了一次数据拷贝的过程。 但这并不是理想的零拷贝因为仍然需要通过CPU把内核缓冲区的数据拷贝到socket缓冲区中而且仍然需要4次上下文切换 3、sendfile 在Linux内核版本2.1中提供了一个专门发送文件的系统调用函数sendfile。 ⾸先它可以替代前⾯的 read() 和 write() 这两个系统调⽤这样就可以减少⼀次系统调⽤ 也就减少了 2 次上下⽂切换的开销。其次该系统调⽤可以直接把内核缓冲区⾥的数据拷⻉到 socket 缓冲区⾥ 不再拷⻉到⽤户态这样就只有 2 次上下⽂切换和 3 次数据拷⻉。 从 Linux 内核 2.4 版本开始起对于⽀持⽹卡⽀持 SG-DMA 技术的情况下 sendfile() 系统调⽤的过程发⽣了点变化具体过程如下 第⼀步通过 DMA 将磁盘上的数据拷⻉到内核缓冲区⾥DMA拷贝第⼆步缓冲区描述符和数据⻓度传到 socket 缓冲区这样⽹卡的 SG-DMA 控制器就可以直接将内核缓存中的数据拷⻉到⽹卡的缓冲区⾥ 此过程不需要将数据从操作系统内核缓冲区拷⻉到socket 缓冲区中这样就减少了⼀次数据拷⻉SG-DMA拷贝 所以这个过程之中只进行了一次系统调用sendfile进⾏了 2 次数据拷⻉磁盘到内核内核到网卡 这就是所谓的零拷贝技术。因为我们没有在内存层面去拷贝数据全程没有通过CPU来搬运数据 4、总结 实现零拷贝技术的文件传输方式相比传统文件传输的方式减少了2次上下文切换和数据拷贝次数。只需要进行两次上下文切换和两次数据拷贝就可以完成文件的传输。并且两次数据拷贝都不要通过CPU完成是由DMA来完成。总体来看零拷贝技术可以把文件传输的性能提高至少一倍以上 总结 1、早期I/O操作内存与磁盘的数据传输的工作都是由CPU完成此时CPU不能进行其他任务会特别浪费CPU资源 2、为了解决这一问题出现了DMA技术。每个I/O设备都有自己的DMA控制器通过这个DMA 控制器CPU 只需要告诉 DMA 控制器我们要传输什么数据从哪⾥来到哪⾥去就可以放⼼离开了。后续的实际数据传输⼯作都会由 DMA 控制器来完成CPU 不需要参与数据传输的⼯作。 3、传统的IO工作方式从硬盘读取数据通过网卡向外发送 。需要进行4次用户态与内核态之间的上下文切换4次数据拷贝。其中2次数据拷贝发生在内核的缓冲区和对应的硬件设备磁盘、网卡之间由DMA完成2次数据拷贝发送在用户态和内核态之间由CPU完成。这种传输方式有冗余的上下文切换次数和数据拷贝次数 4、对于文件传输的优化实现零拷贝。通过一次系统调用sendfile合并了磁盘读取read和网络发送write两个操作 降低了上下文切换次数只进行了两次数据拷贝从磁盘文件到内核缓冲区从内核缓冲区到网卡都是由DMA搬运降低了数据拷贝次数 5、零拷贝技术是基于 PageCache 的PageCache 会缓存最近访问的数据提升了访问缓存数据的性能同时为了解决机械硬盘寻址慢的问题它还协助 I/O 调度算法实现了 IO 合并与预读这也是顺序读⽐随机读性能好的原因。这些优势进⼀步提升了零拷⻉的性能。 6、当传输大文件时不能使用零拷贝因为可能由于 PageCache 被⼤⽂件占据⽽导致「热点」小文件无法利用到 PageCache并且大文件的缓存命中率不⾼这时就需要使用「异步 IO 直接 IO 」的方式。
http://www.dnsts.com.cn/news/271264.html

相关文章:

  • 专业做app下载网站有哪些如何编写网站
  • 网站 版本 白名单 wap 解析做dnf辅助官方网站
  • 外贸商做英文网站的目的wordpress官网下载
  • 免费织梦导航网站模板下载地址2015做哪个网站能致富
  • python做网站性能怎么样物流网站建设报价
  • 免费的企业网站建设wordpress菜单联动
  • 濮阳网站建设哪家好邢台网站
  • 寻找哈尔滨网站建设糖果果屋网站建设规划书
  • 河南省住房城乡建设门户网站张家港英文网站制作
  • 做视频网站是什么职业h5网站源码
  • 响应式外贸营销网站做的网站怎样打开速度快
  • 钓鱼网站怎么做的企业网站怎么维护
  • 网站域名分类高速访问免费全自动网页制作系统
  • wordpress漏洞检测整站优化
  • 网站文章编辑器建设工程消防监督管理规定网站
  • 国外优秀的设计网站网站设计步骤和方法
  • 网站数据库如何建设施工企业资质新规定
  • 提卡网站要怎么做wordpress oss压缩
  • 百度网站排名seo电话做网站的推广
  • 个人工作室网站模板小程序模板在哪里买
  • 佛山专业外贸网站建设怎么查公司地址
  • 宾县建设局网站django mysql网站开发
  • 保定网站设计公司排名中国纪检监察报官网
  • 网站开发验收申请报告wordpress用什么服务
  • 天津网站建设解决方案网站搭建在线支付
  • 国内优秀网站设计欣赏湖南建设监理协会网站
  • 宁波市江北区庄桥街道工程建设领域网站网站维护工作内容
  • 烟台网站建设方案一家做公司评估的网站
  • 二级网站内容建设要求怎么做网站后台
  • 为什么要建设营销型网站西安网站制作工作室