几个 Ceph 性能优化的新方法和思路_intel isa-l ceph-程序员宅基地

0. 常规的 Ceph 性能优化方法

(1). 硬件层面

  • 硬件规划:CPU、内存、网络
  • SSD选择:使用 SSD 作为日志存储
  • BIOS设置:打开超线程(HT)、关闭节能、关闭 NUMA 等

(2). 软件层面

  • Linux OS:MTU、read_ahead 等
  • Ceph Configurations 和 PG Number 调整:使用 PG 计算公式(Total PGs = (Total_number_of_OSD * 100) / max_replication_count)计算。
  • CRUSH Map

更多信息,可以参考下面的文章:

1. 使用分层的缓存层 - Tiered Cache

  显然这不是一个 Ceph 的新特性,在会议上有这方面的专家详细地介绍了该特性的原理及用法,以及与纠错码方式结合的细节。

简单概括:

  • 每一个缓存层次(tiered cache)使用一个 RADOS pool,其中 cache pool 必须是拷贝(replicated)类型,而 backing pool 可以是拷贝类型也可以是纠错码类型。
  • 在不同的缓存层次,使用不同的硬件介质,cache pool 使用的介质必须比 backing pool 使用的介质速度快:比如,在 backing pool 使用一般的存储介质,比如常规的HDD或者 SATA SDD;在 cache pool 使用快速介质,比如 PCIe SDD。
  • 每一个 tiered cache 使用自己的 CRUSH rules,使得数据会被写入到指定的不同存储介质。
  • librados 内在支持 tiered cache,大多数情况下它会知道客户端数据需要被放到哪一层,因此不需要在 RDB,CephFS,RGW 客户端上做改动。
  • OSD 独立地处理数据在两个层次之间的流动:promotion(HDD->SDD)和 eviction(SDD -> HDD),但是,这种数据流动是代价昂贵(expensive)和耗时的(take long time to “warm up”)。

2. 使用更好的 SSD - Intel NVM Express (NVMe) SSD

     在 Ceph 集群中,往往使用 SSD 来作为 Journal(日志)和 Caching(缓存)介质,来提高集群的性能。下图中,使用 SSD 作为 Journal 的集群比全 HDD 集群的 64K 顺序写速度提高了 1.5 倍,而 4K 随机写速度提高了 32 倍。

   而Journal 和 OSD 使用的 SSD 分开与两者使用同一块SSD,还可以提高性能。下图中,两者放在同一个 SATA SSD 上,性能比分开两块 SSD (Journal 使用 PCIe SSD,OSD 使用 SATA SSD),64K 顺序写速度下降了 40%,而 4K 随机写速度下降了 13%。

    因此,更先进的 SSD 自然能更加提高Ceph 集群的性能。SSD 发展到现在,其介质(颗粒)基本经过了三代,自然是一代比一代先进,具体表现在密度更高(容量更大)和读写数据更快。目前,最先进的就是 Intel NVMe SSD,它的特点如下:

  • 为 PCI-e 驱动器定制的标准化的软件接口
  • 为 SSD 定制(别的是为 PCIe 所做的)
  • SSD Journal : HDD OSD 比例可以从常规的 1:5 提高到 1:20
  • 对全 SSD 集群来说,全 NVMe SSD 磁盘Ceph 集群自然性能最好,但是它造价太高,而且性能往往会受限于网卡/网络带宽;所以在全SSD环境中,建议的配置是使用 NVMe SSD 做 Journal 而使用常规 SSD 做 OSD 磁盘。

同时,Intel SSD 还可以结合 Intel Cache Acceleration Software 软件使用,它可以智能地根据数据的特性,将数据放到SSD或者HDD:

测试:

  • 测试配置:使用 Intel NVMe SSD 做 Cache,使用 Intel CAS Linux 3.0 with hinting feature (今年年底将发布)
  • 测试结果:5% 的 cache,使得吞吐量(ThroughOutput)提交了一倍,延迟(Latency)降低了一半

3. 使用更好的网络设备 - Mellanox 网卡和交换机等

3.1 更高带宽更低延迟的网卡设备

    Mellanox 是一家总部在以色列的公司,全球约 1900 名员工,专注高端网络设备,2014 年revenue 为 ¥463.6M 。(今天正好在水木BBS上看到该公司在中国的分公司待遇也是非常好)。其主要观点和产品:

  • Ceph 的 Scale Out 特性要求用于 replicaiton、sharing 和 metadata (文件)的网络吞吐量更高、延迟更低
  • 目前 10 GbE(万兆以太网络) 已经不能满足高性能Ceph 集群的要求(基本上 20个 SSD 以上的集群就不能满足了),已经开始全面进入 25, 50, 100 GbE 时代。目前,25GbE 性价比比较高。
  • 大部分网络设备公司使用的是高通的芯片,而 Mellanox 使用自研的芯片,其延迟(latency)是业界最低的(220ns)
  • Ceph 高速集群需要使用两个网络:public network 用于客户端访问,Cluster network 用于 heartbeat、replication、recovery 和 re-balancing。
  • 目前 Ceph 集群广泛采用 SSD, 而快速的存储设备就需要快速的网络设备

实际测试:

(1)测试环境:Cluster network 使用 40GbE 交换机,Public network 分布使用 10 GbE 和 40GbE 设备做对比

(2)测试结果:结果显示,使用 40GbE 设备的集群的吞吐量是使用 10 GbE 集群的 2.5 倍,IOPS 则提高了 15%。

    目前,已经有部分公司使用该公司的网络设备来生产全SSD Ceph 服务器,比如,SanDisk 公司的 InfiniFlash 就使用了该公司的 40GbE 网卡、2个 Dell R720 服务器作为 OSD 节点、512 TB SSD,它的总吞吐量达到 71.6 Gb/s,还有富士通和Monash 大学。

3.2 RDMA 技术

    传统上,访问硬盘存储需要几十毫秒,而网络和协议栈需要几百微妙。这时期,往往使用 1Gb/s 的网络带宽,使用 SCSI 协议访问本地存储,使用 iSCSI 访问远端存储。而在使用 SSD 后,访问本地存储的耗时大幅下降到几百微秒,因此,如果网络和协议栈不同样提高的话,它们将成为性能瓶颈。这意味着,网络需要更好的带宽,比如40Gb/s  甚至 100Gb/s;依然使用 iSCSI 访问远端存储,但是 TCP 已经不够用了,这时 RDMA 技术应运而生。RDMA 的全称是 Remote Direct Memory Access,就是为了解决网络传输中服务器端数据处理的延迟而产生的。它是通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能.它消除了外部存储器复制和文本交换操作,因而能腾出总线空间和CPU 周期用于改进应用系统性能. 通用的做法需由系统先对传入的信息进行分析与标记,然后再存储到正确的区域。

 

   这种技术上,Mellanox  是业界领先者。它通过 Bypass Kenerl 和 Protocol Offload 的实现,提供高带宽、低CPU占用和低延迟。目前,该公司在 Ceph 中实现了 XioMessager,使得Ceph 消息不走 TCP 而走 RDMA,从而得以提高集群性能,该实现在 Ceph Hammer 版本中提供。

    更多信息,可以参考:

http://www.mellanox.com/related-docs/solutions/ppt_ceph_mellanox_ceph_day.pdf

http://ir.mellanox.com/releasedetail.cfm?ReleaseID=919461

What is RDMA?

Mellanox Benchmarks Ceph on 100Gb Ethernet

RDMA 百度百科

<2015/11/26 更新>

之前不熟悉这个公司,一个原因是其名字实在太长太难记了。今天看到西瓜哥的微信,才发现这个公司的Infiniband 交换机和 HBA 卡在美国数据中心里面的领导地位。唯一能和它竞争的就是Intel。

4. 使用更好的软件 - Intel SPDK 相关技术

4.1 Mid-Tier Cache 方案

    该方案在客户端应用和 Ceph 集群之间添加一个缓存层,使得客户端的访问性能得以提高。该层的特点:

  • 对 Ceph 客户端提供 iSCSI/NVMF/NFS 等协议支持;
  • 使用两个或者多个节点提高可靠性;
  • 添加了Cache,提高访问速度
  • 使用 write log 保证多节点之间数据一致性
  • 使用 RBD 连接后端Ceph集群

4.2 使用 Intel DPDK 和 UNS 技术

    Intel 使用该技术,在用户空间(user space)实现了全 DPDK 网卡及驱动、TCP/IP协议栈(UNS)、 iSCSI Target,以及 NVMe 驱动,来提高Ceph的 iSCSI 访问性能。好处:

  • 与 Linux*-IO Target (LIO) 相比,其 CPU overhead 仅为 1/7。
  • 用户空间的 NVMe 驱动比内核空间的 VNMe 驱动的 CPU 占用少 90%

   该方案的一大特点是使用用户态网卡,为了避免和内核态的网卡冲突,在实际配置中,可以通过 SRIOV 技术,将物理网卡虚拟出多个虚拟网卡,在分配给应用比如OSD。通过完整地使用用户态技术,避免了对内核版本的依赖。

  目前,Intel 提供 Intel DPDK、UNS 、优化后的 Storage 栈作为参考性方案,使用的话需要和 Intel 签订使用协议。用户态NVMe驱动已经开源。

4.3  CPU 数据存放加速 - ISA-L 技术

    该代码库(code libaray)使用 Intel E5-2600/2400 和 Atom C2000 product family CPU 的新指令集来实现相应算法,最大化地利用CPU,大大提高了数据存取速度,但是,目前只支持单核 X64 志强和 Atom CPU。在下面的例子中,EC 速度得到几十倍提高,总体成本减少了百分之25到30.

5. 使用系统的工具和方法 - Ceph 性能测试和调优工具汇总

本次会议上,还发布了若干Ceph 性能测试和调优工具。

5.1 Intel CeTune

Intel的该工具可以用来部署、测试、分析和调优(deploy, benchmark, analyze and tuning)Ceph 集群,目前它已经被开源,代码 在这里。主要功能包括:

  • 用户可以对 CeTune 进行配置,使用其 WebUI
  • 部署模块:使用 CeTune Cli 或者 GUI 部署 Ceph
  • 性能测试模块:支持 qemurbd, fiorbd, cosbench 等做性能测试
  • 分析模块:iostat, sar, interrupt, performance counter 等分析工具
  • 报告视图:支持配置下载、图标视图

5.2 常见的性能测试和调优工具

Ceph 软件栈(可能的性能故障点和调优点):

可视性性能相关工具汇总:

Benchmarking 工具汇总:

调优工具汇总:

6. 综合评价  

    上面的几种方法,与传统的性能优化方法相比,部分具有其创新性,其中,

  • 更好的硬件,包括SSD和网络设备,自然能带来更好的性能,但是成本也相应增加,而且带来的性能优化幅度具有不一致性,因此,需要在应用场景、成本、优化效果之间做综合权衡;
  • 更好的软件,目前大都还没有开源,而且大都还处于测试状态,离在生产环境中使用尚有距离,而且都和 Intel 的硬件紧密绑定;
  • 更全面的方法,则是广大 Ceph 专业人员需要认真学习、使用到的,在平时的使用中能够更高效的定位性能问题并找到解决方法;
  • Intel 在 Ceph 上的投入非常大,客户如果有Ceph集群性能问题,还可以把相关数据发给他们,他们会提供相应建议。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jiangbb8686/article/details/106029595

智能推荐

Springboot计算机毕业设计儿童益智动画微信小程序【附源码】开题+论文+mysql+程序+部署-程序员宅基地

文章浏览阅读808次,点赞23次,收藏9次。为了解决这些问题,我们将采取以下措施:首先,通过市场调研和用户需求分析,了解儿童益智教育市场的现状和发展趋势,以及家长和儿童对小程序的具体需求。此外,我们还将利用大数据和人工智能技术,对用户的学习行为和偏好进行深度挖掘和分析,以实现个性化的学习推荐和精准的内容推送。该小程序将融合丰富的益智动画、儿歌和故事资源,通过生动的画面和有趣的情节,激发儿童的学习兴趣,培养他们的观察力、思考力和创造力。同时,小程序还将根据儿童的年龄段和兴趣偏好,提供个性化的学习推荐,使学习更加精准和高效。然后,进行系统的开发与实现。

ClickHouse 存储原理初窥-程序员宅基地

文章浏览阅读750次。更多内容关注微信公众号:fullstack888背景目前业务中有大量实时分析需求,随着数据量的增加,基于行存储的 OLTP 数据库已经不能满足性能的需求,我们对 ClickHouse 进行了基础调研与性能摸底,并最终决定引入 ClickHouse 作为新系统的 OLAP 方案。简介ClickHouse 是一个列式存储数据库管理系统(DBMS)。相比于其他传统行式数据库系统..._clickhouse列存储原理

MySQL模糊查询-程序员宅基地

文章浏览阅读544次,点赞3次,收藏7次。%通配符可以匹配任意字符,但是不能匹配NULL,也就是说SELECT * FROM blog where title_name like '%';--模糊匹配含有“xxx网xxx车xxx”的数据,如“滴滴网约车司机端,网络约车平台”2.“_”下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。--查询前三个字符为xx网,后面任意匹配,如:“城通网盘、模具网平台”--模糊匹配含义“xx网x车xxx”的数据,如:“携程网约车客户端”--查询以“网”为结尾的,长度为三个字的数据,如:“链家网”

OpenWrt介绍及编译基础教程_openwrt编译-程序员宅基地

文章浏览阅读1.2w次,点赞11次,收藏96次。编译 Open­Wrt 的过程就像是复读机,除了选择系统组件外,几乎每次编译都是复制粘贴相同的命令。而理解每一条命令的作用、什么时候该去执行,这样才能更好的去解决编译中遇到的问题,更顺利的编译出固件。_openwrt编译

springcloud排除错误记录,Dependency org.springframework.cloud:spring-cloud-starter-netflix-eureka-cli_dependency 'org.springframework.cloud:spring-cloud-程序员宅基地

文章浏览阅读3.2k次,点赞4次,收藏3次。2.执行以下命令,删除未下载成功的依赖,即是存在.lastUpdated后缀的文件(3.使用maven的Reload Project刷新,重新下载删除的依赖。1.先到maven仓库所在的目录并且在该目录打开cmd命令;网络不好情况下,导致产生许多依赖未成功下载。_dependency 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-cl

工具说明书 - 英语翻译软件对比和英语词典选择_百度网页英语词典插件安装-程序员宅基地

文章浏览阅读1.5k次。1,百度翻译桌面版:200+语言。界面简洁清爽,操作方便。可以选择领域更好的翻译术语。翻译结果可以语音播放。APP版功能更强大,拍照翻译、语音翻译、权威词典。网页版,功能和桌面版类似,里面还有个视频翻译功能。在官方介绍页面,还有个百度同传工具。2,google翻译有网页版,带了语音翻译和朗读。手机上可以下载APP。PC端还可以下载客户端:Client for Google Translatehttp://translateclient.com3,网易有道翻译.._百度网页英语词典插件安装

随便推点

kVPAC/Beremiz项目操作实践_beremiz怎么控制机器-程序员宅基地

文章浏览阅读2.5k次,点赞4次,收藏19次。本部分反映了在Beremiz开发环境中工作的基本方法,这些方法是创建应用程序时所必需的。目标平台的应用程序是使用特定配置构建项目的结果。Beremiz中的项目是源文件所在的命名文件夹。 该文件夹必须为空并且没有写保护。 如果文件夹中已经有文件,则会发出相应的错误。以下文件和文件夹将保存在创建的文件夹中:“Beremiz.xml"-此XML文件保存与项目有关的Beremiz开发环境特定的设置; “Plc.xml"-在此XML文件中,保存了项目的完整说明:所有程序模块,资源,用户数据类型,项目数据_beremiz怎么控制机器

如何将您的自定义容器镜像导入Amazon SageMaker Studio Notebooks_亚马逊云自定义镜像-程序员宅基地

文章浏览阅读375次。Amazon SageMaker Studio是第一套用于机器学习(ML)的全集成开发环境(IDE)。Amazon SageMaker Studio可帮助数据科学家们快速启动Studio notebooks以探索数据、构建模型、启动Amazon SageMaker训练作业并部署托管端点。Studio notebooks中随附一组预构建镜像,这些镜像由Amazon SageMaker Python SDK与IPython运行时或内核的最新版本构成。_亚马逊云自定义镜像

【再见,2020】 走向开源,拥抱RT-Thread_rt-thread现状-程序员宅基地

文章浏览阅读296次。过往云烟话说进入RT-Thread,是在2019年12月份。因为自己的十几年的瞎折腾,在嵌入式开发中,并没有大放异彩。人生的跌宕起伏,也验证了普通技术工作者的心路历程。 偶尔静下心来,发现,自己掌握的技术,还不够全面,不够深入,不够新颖,更重要的,是没有一家公司可以让你全面的享受技术开发,可以做很多精彩的事情。 我不是科学家,不是技术专家,非名校毕业,非海归,我只是普通人。但是,我们在求知、求职、工作、生活、家庭、社会等等场合,都折腾着,努力的活着,每天都期待着。让我们的梦想,对得起自己过往的、现在_rt-thread现状

20暨南大学计算机考研经验知乎,暨大应统经验转自知乎-程序员宅基地

文章浏览阅读554次。1. 准备考研脑中要有一个思想:“书贵精不贵多,一本书读三遍胜过三本书读一遍。”某些答案推荐了一大堆的书,看见那么多的书你怕不怕?直接吓的放弃考研。就算不怕,你那些书打算做几遍?每本书都做三遍那要花费多少时间?2. 关于对我\"考研从六月份开始准备就足够了\"言论的误读。考研以大三结束放暑假那个时间为节点(也就是六、七月份),前后分为兼职考研和全职考研。什么是兼职考研?就是指你平时该上课就好好上课..._暨南大学的计算机应用专业怎么样知乎

Python爬虫详解(一看就懂)-程序员宅基地

文章浏览阅读9.1w次,点赞249次,收藏1.7k次。爬虫简单的来说就是用程序获取网络上数据这个过程的一种名称。如果要获取网络上数据,我们要给爬虫一个网址(程序中通常叫URL),爬虫发送一个HTTP请求给目标网页的服务器,服务器返回数据给客户端(也就是我们的爬虫),爬虫再进行数据解析、保存等一系列操作。爬虫可以节省我们的时间,比如我要获取豆瓣电影 Top250 榜单,如果不用爬虫,我们要先在浏览器上输入豆瓣电影的 URL ,客户端(浏览器)通过解析查到豆瓣电影网页的服务器的 IP 地址,然后与它建立连接,浏览器再创造一个 HTTP 请求发送给豆瓣电影的服务器,_python爬虫

Demo project for Spring Boot 【1】spring-boot-starter【2】spring-boot-maven-plugin_win7 demo project for spring boot版本-程序员宅基地

文章浏览阅读474次。spring-boot-maven-plugin是一个Maven插件,用于简化Spring Boot应用程序的构建和部署过程。它提供了许多有用的功能,包括:打包可执行的JAR文件:该插件可以将Spring Boot应用程序打包为可执行的JAR文件,其中包含了所有的依赖和资源文件。自动重新加载:在开发过程中,该插件可以监视应用程序的源代码和资源文件的变化,并自动重新加载应用程序,以便快速查看修改的效果。自定义属性:通过该插件,可以方便地在构建过程中设置自定义的属性,例如应用程序的版本号、环境配置等。运行应用程_win7 demo project for spring boot版本