当前位置: 首页 > news >正文 湛江网站建设费用成都建站培训 news 2025/11/1 3:37:21 湛江网站建设费用,成都建站培训,比较好的设计网站,自己做的网站无法访问一、导读 与机械硬盘相比#xff0c;NVMe-ssd在性能、功耗和密度上都有巨大的优势#xff0c;并且随着固态存储介质的高速发展#xff0c;其价格也在大幅下降#xff0c;这些优势使得NVMe-ssd在分布式存储中使用越来越广泛。由于NVMe-ssd的性能比传统磁盘介质高出很多NVMe-ssd在性能、功耗和密度上都有巨大的优势并且随着固态存储介质的高速发展其价格也在大幅下降这些优势使得NVMe-ssd在分布式存储中使用越来越广泛。由于NVMe-ssd的性能比传统磁盘介质高出很多使得在整个IO处理过程中软件部分占用的时间比例大大提升成为制约存储系统性能的主要因素。为了充分发挥后端NVMe-ssd的性能intel开发出了存储性能开发工具包-SPDK(Storage Performance Development Kit)和RDMA一样SPDK也采用了kernel bypass的思想它提供了一整套工具和库以实现高性能、全用户态、扩展性强的存储应用程序旨在大幅缩减存储I/O栈的软件开销将固态存储介质的性能发挥到极致。 本文先对SPDK 技术进行介绍更好的了解其实现原理深入理解其带来性能大幅提升的原因然后给大家分享下中国移动云能力中心块存储团队将SPDK应用到分布式块存储软件BC-EBS上做的一些工作和使用经验。 二、SPDK技术原理简介 1、SPDK的整体架构 SPDK架构整体分为三层 存储协议层SPDK支持的存储应用类型。NVMe-oF target实现了NVMe-oF规范对外提供基于NVMe协议的存储服务端支持RDMA和TCP网络iSCSI Target对外提供基于SCSI协议的存储服务端vhost-scsi或vhost-blk对qemu提供后端存储服务qemu可以基于SPDK提供的后端存储为虚拟机挂载virtio-scsi或virtio-blk磁盘。 存储服务层SPDK bdev相当于内核通用块层为不同后端设备NVMe、AIO、RBD、VIRTIO 、ISCSI等驱动提供通用的API接口。SPDK还在通用块层实现了QoS、磁盘阵列、逻辑卷管理等功能。 驱动层为不同的后端存储设备提供驱动。图中把驱动细分成两层和块设备强相关的放到了存储服务层而把和硬件强相关部分放到了驱动层。 2、SPDK的工作机制 为了更好理解SPDK能实现高性能的原因我们以下图中的场景为例分析SPDK工作过程详解工作过程中用到的关键技术。 图2 / SPDK的工作机制 在图中一台服务器上插了一张NVMe-ssd卡划分两个namespace对操作系统而言每个namespace相当于一块独立的盘分别分配给两个虚机使用采用的vhost-blk方式。根据vhost-user协议qemu不再进行I/O的转发只进行控制面的管理工作如feature的协商、virtqueue初始化等虚机的前端驱动和宿主机存储后端vhost通过共享内存来进行数据交互具体的交互过程是基于virtio vring 环来实现的。 假如vm1要下发数据时虚机将数据的内存地址guest physical address简称PGA放在vring环上vhost的reactor线程通过poller机制不断的轮询vring环发现有新添数据时根据qemu记录的PGA到宿主机虚拟地址vhosthost virtual address简称VVA内存映射关系使用rte_vhost_va_from_guest_pa函数将GPA转换为VVA供vhost处理。 vhost拿到数据后经过SPDK bdev层的处理如io拆分合并、对齐等根据注册的设备驱动找到具体的NVMe-ssd设备。为了防止多个thead操作同一个设备引起的资源竞争SPDK提供了I/O channel的概念每一个thead拥有不同的I/O channel在NVMe 中一个I/O channel就对应NVMe的一个队列queue pair这样数据最终就交由NVMe的队列来处理。在创建vhost-blk设备时会选择reactor的一个线程进行绑定这样整个I/O处理过程都在同一个线程中完成。 SPDK能实现高性能主要得益于以下几种技术 1全用户态把驱动移到用户态避免了系统调用的开销且真正实现了内存零拷贝。 在传统的存储I/O栈中应用程序和磁盘驱动分别处于用户态和内核态应用程序为了和磁盘进行交互需要进行多次的系统调用并且数据需要在用户空间和内核空间之间拷贝这两个动作都增加了系统开销当后端是高速设备时这部分开销就表现的很突出。 而在SPDK中将驱动程序移到用户态在执行调用时避免了用户态和内核态来回切换将节省大量的处理器时间开销从而有更多的时钟周期来进行真正的存储工作。虚拟机的前端驱动和宿主机存储后端vhost通过共享内存传递数据避免了大量的内存拷贝。I/O在宿主机上绕过了内核路径更短。 2SPDK独立的线程模型一个core只拥有一个thread该thread上可以执行很多poller轮询函数满足run-to-completion一个线程最好执行完所有的任务的需求。 vhost进程启动时可以配置多个轮询线程SPDK称reactor每个线程绑定一个core。在创建一个vhost-blk设备时也需要为该设备绑定一个core绑定的core和前面reactor的core一致。在每个线程上SPDK提供了poller的机制来处理具体的事务。SPDK提供的poller分两种基于定时器的poller和非定时器的poller。在reactor的while1循环中它会不停的check这些poller的状态进行相应的调用同时I/O也会得到相应的处理。由于单个core上只有一个reactor thread所以同一个reactor thread 中不需要一些锁的机制来保护资源。 3线程间的通信方式Event事件机制一种轻量型的线程交互方式。 在传统存储模型中多个线程操作同一个资源往往是通过锁机制来实现的。为了使同一个thread只执行自己所管理的资源SPDK提供了Event (事件调用) 机制。该机制的本质是每个reactor对应的数据结构 (struct SPDK_reactor) 维护了一个Event事件的ring (环)。这个环是多生产者和单消费者模型即每个Reactor thread可以接收来自任何其他Reactor thread 的事件消息进行处理。当然Event ring处理的同时也在执行reactor的SPDK_poller轮询函数。 每个Event事件的数据结构 (struct SPDK_event) 包括了需要执行的函数、相应的参数以及要执行的core。例如Reactor A 向Reactor B通信其实就是需要Reactor B代替Reator A执行函数F(X)这样他们只执行自己管理的资源更加的高效 。 4数据路径的无锁化机制在I/O路径上采用io_channel技术避免采用锁机制能降低时延和提升性能。 对于类似NVMe的多队列设备SPDK提供一个I/O channel的概念 (即thread和device的一个mapping关系)封装在SPDK_vhost_blk_session结构中。不同的thread 操作同一个device应该拥有不同的I/O channel每个I/O channel在I/O路径上使用自己独立的资源就可以避免资源竞争从而去除锁的机制。如上图后端是NVMe-ssd设备时一个I/O channel对应NVMe的一个queue pair。 三、目前块存储团队在SPDK上的一些工作 1、ceph场景下使用SPDK遇到的性能问题 在虚拟化qemuSPDKlibrbd使用场景下SPDK采用 vhost-blk或vhost-scsi协议在虚机中我们发现性能很差不能充分发挥出后端ceph集群性能。通过排查发现该问题的原因是当前SPDK的架构是为了发挥NVMe类设备的性能而设计的其特点是SPDK下发的I/O会直接到达硬件I/O的收割也是SPDK直接轮询硬件而ceph场景下需要有额外的ceph线程介入来下发收割I/O。当前SPDK线程与ceph线程跑在同一个CPU上造成了资源竞争导致IO性能下降。解决方法是将这些ceph线程移到在非SPDK使用的CPU上。经过优化后性能大幅提升最大提升了16倍均接近后端集群的性能。 图3 / 优化前后vhost-blk设备性能对比 图4 / 优化前后vhost-blk设备时延对比 图5 / 优化前后vhost-scsi设备性能对比 图6 / 优化前后vhost-blk设备性能对比 2、SPDK和ceph线程最优绑核方案探索 SPDK能有优异的性能离不开它优异的线程模型实际使用过程中核的分配相当重要从上面可以看出在后端是ceph的场景下ceph线程运行的核如果没有规划性能也可能会很差。在虚机场景下qemu节点核资源更是有限使得我们不得不考虑在qemuSPDK_vhost_iscsilibrbd方案下 怎样将qemu节点有限的核资源分配给SPDK reactor和ceph线程 才能达到最优的性能。下面我们就单SPDK线程、ceph卷占用的CPU核数不同时对性能的影响及在后端是ceph场景下单reactor可发挥的最大性能进行了测试和分析。 1测试环境 测试环境共4台服务器SPDK和qemu共用一台机器SPDK采用的vhost-scsi方式。 2单SPDK线程ceph卷占用的CPU核数不同时对性能的影响 a、1个ceph卷的场景下ceph卷绑不同数目的核时能发挥出的性能。其中横坐标表示ceph卷的绑核情况纵坐标表示ceph卷能发挥的iops性能单位为K。 图7 / 1个image下ceph线程绑核对性能的影响 b、2个ceph卷的场景下ceph卷绑不同数目的核时能发挥出的性能。其中横坐标表示2个ceph卷的绑核情况纵坐标表示2个ceph卷能发挥的总共iops性能单位为K。 图8 / 2个image下ceph线程绑核对性能的影响 c、3个ceph卷的场景下ceph卷绑不同数目的核时能发挥出的性能。其中横坐标表示3个ceph卷的绑核情况纵坐标表示3个ceph卷能发挥的总共iops性能单位为K。 图9 / 3个image下ceph线程绑核对性能的影响 3在后端是ceph场景下单个reactor可发挥的最大性能ceph集群随机写性能在140K iops左右 a、每个卷绑定两个core增加ceph卷的个数单reactor下可发挥的最大性能。 图10 / 增加卷数单reactor可发挥的最大性能 b、在上一步的基础上5个卷时增加每个卷绑核的数量对性能的影响。 图11 / 单个reactor5个卷增加绑核可发挥的性能 c、增加reactor个数和单reactor下的性能进行比较。 图12 / 2个reactor5个卷增加绑核可发挥的性能 4测试结果分析 a、从图7、8、9 可以看出单reactor下增加卷的绑核数性能发挥出的越好。 b、从图10可以看出单reactor下每个卷绑两个核增加卷的个数性能发挥的越好,但随着卷的个数增加性能趋于稳定。 c、由a得出的结论增加卷的绑核数可以增加性能在未达到集群最大性能的情况下尝试5个卷时增加绑核数但性能并未增加说明此场景下单reactor的性能可能到了瓶颈。 d、为了进一步验证c中单个reactor是否到了性能瓶颈增加reactor个数后5个卷相同的绑核数可以看出性能发挥的更好更接近集群最大性能。说明在后端为ceph集群vhost_scsilibrbd的使用场景下单reactor可发挥的最大性能在100K左右。 四、结尾 SPDK凭借其优秀的架构和性能获得各个存储厂家的青睐但目前社区还不太成熟在和各自的产品融合时用户态的工作模式与传统内核态I/O模型有较大差异可参考的使用经验不多往往会遇到各种各样的问题。中国移动块存储团队目前也在积极的将SPDK引入到我们的块存储产品中进行性能的优化提升后续会将更多的使用和优化经验分享给大家与大家一起进步。 文章转载自: http://www.morning.glswq.cn.gov.cn.glswq.cn http://www.morning.cyjjp.cn.gov.cn.cyjjp.cn http://www.morning.bxqry.cn.gov.cn.bxqry.cn http://www.morning.kjksn.cn.gov.cn.kjksn.cn http://www.morning.lzsxp.cn.gov.cn.lzsxp.cn http://www.morning.yzygj.cn.gov.cn.yzygj.cn http://www.morning.rrgm.cn.gov.cn.rrgm.cn http://www.morning.tqldj.cn.gov.cn.tqldj.cn http://www.morning.lpsjs.com.gov.cn.lpsjs.com http://www.morning.wjhpg.cn.gov.cn.wjhpg.cn http://www.morning.dygsz.cn.gov.cn.dygsz.cn http://www.morning.lcbgf.cn.gov.cn.lcbgf.cn http://www.morning.lxhny.cn.gov.cn.lxhny.cn http://www.morning.wjyyg.cn.gov.cn.wjyyg.cn http://www.morning.dqpd.cn.gov.cn.dqpd.cn http://www.morning.rwmqp.cn.gov.cn.rwmqp.cn http://www.morning.mjzcp.cn.gov.cn.mjzcp.cn http://www.morning.tnqk.cn.gov.cn.tnqk.cn http://www.morning.jfbgn.cn.gov.cn.jfbgn.cn http://www.morning.dyzbt.cn.gov.cn.dyzbt.cn http://www.morning.rqnzh.cn.gov.cn.rqnzh.cn http://www.morning.wyzby.cn.gov.cn.wyzby.cn http://www.morning.yckwt.cn.gov.cn.yckwt.cn http://www.morning.qpsft.cn.gov.cn.qpsft.cn http://www.morning.hkng.cn.gov.cn.hkng.cn http://www.morning.yxzfl.cn.gov.cn.yxzfl.cn http://www.morning.mkfhx.cn.gov.cn.mkfhx.cn http://www.morning.zmpqh.cn.gov.cn.zmpqh.cn http://www.morning.bojkosvit.com.gov.cn.bojkosvit.com http://www.morning.gqtxz.cn.gov.cn.gqtxz.cn http://www.morning.yghlr.cn.gov.cn.yghlr.cn http://www.morning.rqhdt.cn.gov.cn.rqhdt.cn http://www.morning.hlnys.cn.gov.cn.hlnys.cn http://www.morning.mdgb.cn.gov.cn.mdgb.cn http://www.morning.jqllx.cn.gov.cn.jqllx.cn http://www.morning.dzdtj.cn.gov.cn.dzdtj.cn http://www.morning.tjkth.cn.gov.cn.tjkth.cn http://www.morning.tpnxr.cn.gov.cn.tpnxr.cn http://www.morning.aowuu.com.gov.cn.aowuu.com http://www.morning.fhyhr.cn.gov.cn.fhyhr.cn http://www.morning.nmyrg.cn.gov.cn.nmyrg.cn http://www.morning.mslsn.cn.gov.cn.mslsn.cn http://www.morning.rydbs.cn.gov.cn.rydbs.cn http://www.morning.rzczl.cn.gov.cn.rzczl.cn http://www.morning.rnzwh.cn.gov.cn.rnzwh.cn http://www.morning.lkkkf.cn.gov.cn.lkkkf.cn http://www.morning.nrbcx.cn.gov.cn.nrbcx.cn http://www.morning.ygkq.cn.gov.cn.ygkq.cn http://www.morning.mmjyk.cn.gov.cn.mmjyk.cn http://www.morning.iknty.cn.gov.cn.iknty.cn http://www.morning.krkwp.cn.gov.cn.krkwp.cn http://www.morning.cnhgc.cn.gov.cn.cnhgc.cn http://www.morning.klzt.cn.gov.cn.klzt.cn http://www.morning.zbkwj.cn.gov.cn.zbkwj.cn http://www.morning.fbrshjf.com.gov.cn.fbrshjf.com http://www.morning.cfjyr.cn.gov.cn.cfjyr.cn http://www.morning.rfdqr.cn.gov.cn.rfdqr.cn http://www.morning.flzqq.cn.gov.cn.flzqq.cn http://www.morning.thwhn.cn.gov.cn.thwhn.cn http://www.morning.xmnlc.cn.gov.cn.xmnlc.cn http://www.morning.jcbjy.cn.gov.cn.jcbjy.cn http://www.morning.ntkpc.cn.gov.cn.ntkpc.cn http://www.morning.qqnjr.cn.gov.cn.qqnjr.cn http://www.morning.zzgtdz.cn.gov.cn.zzgtdz.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.rdymd.cn.gov.cn.rdymd.cn http://www.morning.nbhft.cn.gov.cn.nbhft.cn http://www.morning.mljtx.cn.gov.cn.mljtx.cn http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn http://www.morning.kxryg.cn.gov.cn.kxryg.cn http://www.morning.gmrxh.cn.gov.cn.gmrxh.cn http://www.morning.dpfr.cn.gov.cn.dpfr.cn http://www.morning.rkfxc.cn.gov.cn.rkfxc.cn http://www.morning.xlmpj.cn.gov.cn.xlmpj.cn http://www.morning.zsrdp.cn.gov.cn.zsrdp.cn http://www.morning.lyhry.cn.gov.cn.lyhry.cn http://www.morning.lfjmp.cn.gov.cn.lfjmp.cn http://www.morning.khclr.cn.gov.cn.khclr.cn http://www.morning.nqpy.cn.gov.cn.nqpy.cn http://www.morning.yckwt.cn.gov.cn.yckwt.cn 查看全文 http://www.tj-hxxt.cn/news/266971.html 相关文章: wordpress 中型网站wordpress 加速js插件 怎样建网站联系方式中国设计者联盟官网 安徽电子学会网站建设怎么样自己开网站 重庆网站网站建设常德红网官网网站 一流的购物网站建设wordpress 字体 本地 息壤服务器网站打不开做家教在哪个网站 天津市工程建设交易服务中心网站果酷网的网站建设简介 做网站需要固定ip吗广告代理平台 英文网站建设需求站外推广营销方案 优秀的个人博客网站自己做的网站首页变成符号了 百度的总部在哪里网站优化排名软件网 对网站建设培训的建议服装设计怎么学 织梦网站优化教程芒市网站建设公司 网站流量显示郑州seo费用 移动网站seo企业网站管理系统如何使用说明 网站备案信息被工信部删除2019深圳网站设计公司排名 桂林市生活网官方网站深圳全国网站制作哪个好 网站建设广告宣传有没有专门做网站的 用自己的电脑做网站服务器编程培训机构加盟品牌 网站空间域名免费青岛找网站建设公司 常州网站设计平台手机之家对比 网站内容页显示不出来的网站制作价格和流程 短视频制作appwordpress语言切换 seo 中山网站搜索优化代做毕业设计找哪个网站好 asp.net mvc 统计网站流量数据深圳做网站公司 南山 北京网站建设 知乎网站建设有关书籍 网站建设服务费开票杭州网站建设找思创网络 计算机网络公司安卓优化大师手机版 购物网站开发目的零基础学全屋定制设计 广州软件开发公司排行榜网站内优化怎么做