GHOST系统之家 - Windows系统光盘下载网站!
当前位置:GHOST系统之家>系统教程 > Ceph 新版本 Reef 下:RGW 性能

Ceph 新版本 Reef 下:RGW 性能

来源:Ghost系统之家浏览:时间:2023-05-24 21:17:14

背景

Ceph 社区最近冻结了即将发布的 Ceph Reef 版本,今天我们研究一下 Reef 在 10 个节点、60 个 NVMe 驱动器集群上的 RGW 性能。

我们部署了 20 个 RGW 实例和 200 个 hsbench S3 客户端来在 512 个bucket 中执行高度并行的工作负载。

在多次的测试中,我们发现Reef 通常比 Quincy 快 1-5%。

在 3X 复制时,4MB GET 的速度大约为 53GB/s,4MB PUT 的速度为 18.6GB/s。

这两种情况下我们都达到了网络的瓶颈。Reef 在 3X 复制时也实现了大约 312K 4KB GET/s 和 178K 4KB PUT/s。

在大对象测试中,不同版本之间的 CPU 使用率是相等的。然而,在 4KB PUT 和 GET 测试中,Reef 使用的 CPU 资源比 Quincy 多 23%。随着 Reef 版本发布的临近,我们将时刻关注这一点。

最后,我们注意到 OSD 和 RGW 之间的总 CPU 使用率存在显着偏差,具体取决于正在运行的工作负载类型。同时这也对我们的硬件选型有很大的影响。

介绍

在本系列的第 1 部分(https://ceph.io/en/news/blog/2023/reef-freeze-rbd-performance/)中,我们研究了如何使用CBT (https://github.com/ceph/cbt)工具来了解RBD 性能在多个 Ceph 版本之间的变化。

在第 1 部分中,CBT 使用 Jens Axboe 的 fio (https://github.com/axboe/fio)工具针对RBD 镜像进行性能测试。CBT 还可以利用 S3 基准测试工具来测试 RGW。

在之前的 Ceph 版本中,我们已经使用此功能来对性能进行测试。结合 CBT、hsbench (https://github.com/markhpc/s3bench.git) S3 基准测试和 git bisect,我们发现有两个代码的提交更新会损害 Ceph Pacific 版本中的 RGW 性能和效率。

图片

一旦确定了这些代码问题,Ceph 开发人员就能很快进行修复,使性能和 CPU 使用率恢复到我们在 Nautilus 中看到的水平。

在本文中,我们将使用相同的工具来测试 Reef 在冻结后的性能。

集群设置

Nodes

10 x Dell PowerEdge R6515

CPU

1 x AMD EPYC 7742 64C/128T

Memory

128GiB DDR4

Network

1 x 100GbE Mellanox ConnectX-6

NVMe

6 x 3.84TB Samsung PM983

OS Version

CentOS Stream release 8

Ceph Version 1

Quincy v17.2.5 (built from source)

Ceph Version 2

Reef 9d5a260e (built from source)

所有节点都连接到同一台 Juniper QFX5200 交换机上,并通过单个 100GbE QSFP28 连接。同时我们部署了 Ceph 并使用 CBT (https://github.com/ceph/cbt/)启动了fio 测试。

除非特别说明,否则每个节点都安装 6 个 OSD,同时 fio 运行 6 个 librbd 类型的进程。

基于英特尔的系统可以配置 "latency-performance" 以及 "network-latency" 来对系统进行调优。这避免与 CPU C/P 状态转换带来延迟。

基于 AMD Rome 的系统在这方面的调优并没有太大的改变,而且我们还没有确认 tuned 实际上限制了 C/P 状态转换,但是对于这些测试,tuned 配置文件仍然设置为 “network-latency”。

测试设置

CBT 需要针对所部署的 Ceph 集群调整几个参数。每个 OSD 都配置 8GB 内存,并且在禁用 cephx 的情况下使用 msgr V1。没有对 RGW 进行特殊调整。hsbench (https://github.com/markhpc/hsbench.git) 用于 S3 测试。

每个节点都启动了 20 个 hsbench 进程,每个进程都连接到一个不同的 RGW 实例。

因此,每个 RGW 进程都有一个关联的 hsbench 进程从不同的节点连接到它(总共 200 个 hsbench 进程)。每个 hsbench 进程都配置为使用 64 个线程并使用 512 个公共的 bucket 。

同时,也禁用了部分 Ceph 的后台服务进程,如 scrub、deep scrub、pg autoscaling 和 pg balancing。在所有 RGW 池中使用了 3X 复制。

数据和索引池各有 8192 个 PG,而 root,control,meta,以及 log 池各有 64 个 PG。分别使用 200 万个 4MiB 对象和 2 亿个 4KiB 对象为 quincy 和 reef 运行了两个单独的测试 case。

每个测试 case 按以下顺序运行:

Test

Description

cxi

Clear all existing objects from buckets, delete buckets, initialize buckets

p

Put objects into buckets

l

List objects in buckets

g

Get objects from buckets

d

Delete objects from buckets

4MB PUT

图片

Reef 比 Quincy 要快一些,在所有三个测试中保持大约 2% 的领先优势。RGW 和 OSD 进程的 CPU 使用率在这两个测试中是相似的。

令人惊讶的是,Quincy 和 Reef 都显示 RGW CPU 使用在 5 个核心左右,但当测试大约 2-3 分钟后翻倍至 10 个核心。

在本系列的第 1 部分(https://ceph.io/en/news/blog/2023/reef-freeze-rbd-performance/)中,我们研究了4MB 的顺序写入吞吐量,发现使用 librbd,我们可以保持大约 25GB/s(复制时为 75GB/s)。

为什么我们在这里看到 4MB PUT 的速度只有大约 18.5GB/s?很大一部分原因是我们传输了两次数据。一次从客户端到 RGW,然后再次从 RGW 到 OSD。一些传输将发生在位于同一节点上的 RGW 实例或 OSD 上。

同时,我们也不能忽略复制,因为至少有 2 次从主 OSD 到次 OSD 的额外传输,这些传输必须落在其他节点上。

Probability of 2 transfers = 1/10 * 1/10 = 1/100Probability of 4 transfers = 9/10 * 9/10 = 81/100Probability of 3 transfer = 1 - 1/100 - 81/100 = 18/100

相对于最大网络吞吐量,我们应该期望的一般最佳情况下的性能是:

100 / (2 * (1/100) + 4 * (81/100) + 3 * (18/100)) = 26.31%

在 librbd 的情况下,我们总是以 3X 复制进行 3 次传输(1 次到主 OSD,然后 1 次到另外两个次 OSD):

100 / 3 = 33.3%

用上述的结果乘以我们的期望性能:

25GB/s * 26.31/33.3 = 19.75GB/s

看起来我们做的比 RBD 稍微差一点,但一旦考虑到额外的网络开销,那么则差不了太多。

4MB LIST

图片

LIST测试的完成时间完全由对象的数量决定。在这种情况下,因为我们总共只有 2M 个对象分布在 512 个桶中,所以单个桶列LIST时间非常短。Reef 再次与 Quincy 一样快或略快。

4MB GET

图片

在此测试中,RGW 和 OSD 进程的 CPU 使用率非常一致。与 PUT 测试一样,我们必须考虑必须传输数据的次数。

因为我们使用的是复制,所以我们总是只将数据从 OSD 传输到 RGW 一次,然后再传输到客户端。

Probability of 0 transfers = 1/10 * 1/10 = 1/100Probability of 2 transfers = 9/10 * 9/10 = 81/100Probability of 1 transfer = 1 - 1/100 - 81/100 = 18/100100 / (0 * (1/100) + 2 * (81/100) + 1 * (18/100)) = 55.6%

在这里,我们为 Quincy 维持约 51GB/s,为 Reef 维持约 53GB/s。这非常接近这些 100GbE NIC 应该能够提供的最大值。

4MB DELETE

图片

这里的DELETE测试“吞吐量”数字似乎高得惊人,但是DELETE性能主要取决于被删除对象的数量而不是对象的大小,并且实际删除过程是异步的。话虽如此,Reef 的平均速度似乎再次略快于 Quincy。

在第 3 次测试迭代中,两者似乎都具有更快的删除速度。其原因尚不清楚。

4KB PUT

图片

与之前的测试一样,Reef 比 Quincy 快一点。两者的 OSD CPU 使用率大致相同,但 RGW CPU 使用率似乎上升了大约 15%。

从好的方面来说,在 Quincy 的 RGW 中,每次测试迭代结束时 CPU 消耗都会急剧上升,这在 Reef 中没有发生。

这里的一个重点是 OSD 和 RGW 都尽可能地保持 180K PUT/s。RGW 要求每个 PUT 操作到主 OSD 的 3 次往返(2 次同步,1 次异步)以正确写入数据并保持桶索引正确同步。

4KB LIST

图片

与之前的测试相比,对象越多,桶LIST时间就越长。Reef 在第一次迭代中只是稍微快一点,但 Quincy 和 Reef 在其他方面差不多。

4KB GET

图片

首先,Reef 中的GET性能比 Quincy 中更快、更稳定。话虽如此,这里有一些非常有趣的行为。

在 Quincy 中,测试的前 2 分钟主要是极高的 CPU 使用率。一旦完成,稳定状态的 CPU 使用率比 Reef 低很多。OSD CPU 使用率同样较低。

在此测试中,Reef 在 RGW 端使用了大约 10-20% 的 CPU,在 OSD 端使用了大约 17-23% 的 CPU。Reef 的行为似乎更加一致。

虽然 RGW CPU 使用率在测试开始时较高,但远不及 Quincy 测试中发生的变化。

4KB DELETE

图片

最后,Reef 在删除 4K 对象时平均要快 5%。同样,这是一个异步过程,因此结果可能与 RGW 在后台删除内容的速度不匹配。

结论

这些测试仅展示了 RGW 性能特征的一小部分。我们没有在本文中查看单操作延迟,或尝试不同的客户端来进行测试。尽管如此,在我们的测试中,我们看到了两种趋势:

1.Reef 的性能比 Quincy 高出约 1-5%,并且在所有测试中都相当一致,并且发生在大多数测试迭代中。

2.在某些测试中,尤其是 4K GET 测试中,Reef 的 CPU 使用率高于 Quincy。这在 RGW 中表现的很明显,另外我们在 OSD 中也发现了这个问题。我们希望在发布 Reef 之前能跟进解决这个问题。

关于这些结果,还有一些额外的事情需要注意。

在之前的测试中,我们为一个 60 NVMe 集群使用了 10 个 RGW 实例。

在这些测试中,我们使用了 20 个 RGW 实例,发现小对象 PUT 和 GET 测试的性能明显高于我们之前看到的性能。很有可能将 RGW 数量增加到更高的比率,也许每 2 个甚至每 1 个 OSD 有 1 个 RGW 实例可能会产生更好的小对象性能。

第二个有趣的事情是,在这些测试中,CPU 消耗差异很大,RGW 和 OSD 进程之间的 CPU 消耗比率也发生了变化。

如果我们查看 Reef 结果并计算 RGW 和 OSD 使用的大概核心数,我们得到:

4MB

Test

Result

Total RGW Cores

Total OSD Cores

Total Cores

RGW/OSD Core Ratio

4MB PUT

18.6GB/s

184 Cores

152 Cores

336 Cores

6/5

4MB GET

53GB/s

88 Cores

55 Cores

143 Cores

8/5

4KB

Test

Result

Total RGW Cores

Total OSD Cores

Total Cores

RGW/OSD Core Ratio

4KB PUT

178K IOPS

269 Cores

475 Cores

744 Cores

11/20

4KB GET

312K IOPS

302 Cores

102 Cores

404 Cores

3/1

除了了解这些测试中使用的内核数量之外,还可以从这些结果中获取另外一个结论:在容器中运行 Ceph 是非常不错的。

因为 Ceph 的最新版本有大量的外部依赖项,这使包管理变的非常麻烦。除此之外,很多用户已经采用了容器化管理应用程序,并希望以同样的方式部署 ceph。

对此的一个需求是,大家希望在容器级别分配 Ceph 守护进程静态资源分配:一定数量的内存和一定数量的内核来运行。这是也是可能比较麻烦的地方。

关于内存配额的问题我们放到以后再进行讨论,但简而言之:在非专门设计的应用程序中保证内存使用是极其困难的。

默认情况下,我们能做的就是让 Ceph 进程监视它们的映射内存并自动调整非必要内存使用量。因为 Ceph 包含了底层内存自动调整和缓存管理代码。

限制 CPU 核心数通常不会导致与限制内存相同的问题。在这些测试中,PUT 和 GET 之间的差距接近 6 倍。

如果我们只针对一种场景进行优化,那么我们要么会影响到另一种场景,要么会有大量多余的 CPU 核心在不同的时间点处于空闲状态。

如果我们需要更多的 4K GET 吞吐量,那么也许在 Ceph 的某个未来版本中,我们可以按需启动或关闭 RGW 容器。

但就目前而言,我们需要灵活变通从而实现 Ceph RGW 存储的高性能和高效率。

推荐系统

  • 电脑公司Ghost Win8.1 x32 精选纯净版2022年7月(免激活) ISO镜像高速下载

    电脑公司Ghost Win8.1 x32 精选纯净版2022年7月(免激活) ISO镜像高速下载

    语言:中文版系统大小:2.98GB系统类型:Win8

    电脑公司Ghost Win8.1x32位纯净版V2022年7月版本集成了自2022流行的各种硬件驱动,首次进入系统即全部硬件已安装完毕。电脑公司Ghost Win8.1x32位纯净版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,精心挑选的系统维护工具,加上绿茶独有

  • 微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载

    语言:中文版系统大小:5.13GB系统类型:Win11

    微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化  1、保留 Edge浏览器。  2、隐藏“操作中心”托盘图标。  3、保留常用组件(微软商店,计算器,图片查看器等)。  5、关闭天气资讯。 

  • Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载

    语言:中文版系统大小:4.75GB系统类型:Win11

    Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件

  • windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化

  • 微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载

    语言:中文版系统大小:5.31GB系统类型:Win11

    微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载

  • 微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件

    语言:中文版系统大小:0MB系统类型:Win11

    微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为

  • 雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载

    语言:中文版系统大小:4.75GB系统类型:

    雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统

  • 雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO

    语言:中文版系统大小:5.91GB系统类型:Win7

    雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户