Ceph 使用 NVME 是否可以实现 10k 混合 IOPS ?
新钛云服已累计为您分享765篇技术干货
fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=test --bs=4k --iodepth=64 --size=150G --readwrite=randrw --rwmixread=75
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 4TB Samsung PM983 |
OS Version | CentOS Stream release 8 |
Ceph Version 1 | Pacific v16.2.13 (built from source) |
Ceph Version 2 | Quincy v17.2.6 (built from source) |
Ceph Version 3 | Reef v18.1.0 (built from source) |
gtod_reduce
选项的支持添加到cbt的FIO基准测试工具中。 gtod_reduce
可以通过显著减少 FIO 必须进行的 getTimeOfDay(2) 调用次数来提高性能, 但它也禁用了某些功能, 例如在测试期间收集操作延迟信息。为了评估影响,我们在启用和禁用的情况下 gtod_reduce
运行了测试:gtod_reduce
禁用状态,以便我们也可以观察延迟数据。请注意,启用此 FIO 选项可以提高大约 3-4%性能。除此之外,所有其他选项要么在CBT中可用,要么在FIO中已经默认。CBT YAML 文件的基准测试部分包含单客户端测试的配置内容如下:benchmarks:
fio:
client_endpoints: 'fiotest'
op_size: [4096]
iodepth: [64]
size: 153600 # data set size per fio instance in KB
mode: ['randrw']
rwmixread: 75
procs_per_endpoint: [1]
osd_ra: [4096]
log_avg_msec: 100
cmd_path: '/usr/local/bin/fio'
fio --ioengine=libaio --direct=1 --bs=4096 --iodepth=64 --rw=randrw --rwmixread=75 --rwmixwrite=25 --size=153600M --numjobs=1 --name=/tmp/cbt/mnt/cbt-rbd-kernel/0/`hostname -f`-0-0 --write_iops_log=/tmp/cbt/00000000/Fio/output.0 --write_bw_log=/tmp/cbt/00000000/Fio/output.0 --write_lat_log=/tmp/cbt/00000000/Fio/output.0 --log_avg_msec=100 --output-format=json,normal > /tmp/cbt/00000000/Fio/output.0
gtod_reduce
可将 性能再提高 3-4%。Name | Count |
---|---|
OSD Worker Threads | 16 |
Async Messenger Threads | 3 |
Bluestore KV Sync Thread | 1 |
Bluster "Finisher" Thread | 1 |
由于cycles/OP 解析代码中的错误,先前的cycles/OP 计数显着增加。这使得 OSD 的效率似乎比实际要低得多。因此,我们计算性能指标的时候,需要使用聚合平均 CPU 消耗和 IOPS 而不是聚合周期和 OPS ,校正后的数值已被验证在预期的 ~14-17% 以内。我们认为,剩余的差异主要是由于cpu速度随时间的变化,以及 collectl 报告的 CPU 消耗方式。
在单客户端和多客户端测试中,性能似乎略有提高。另外,在多客户端测试中,我们发现在高负载下处理数据的效率要高得多,而在单客户端测试中,我们在低负载下处理数据的效率要高得多。
为什么会这样呢?在上一节中,我们讨论了 OSD 中的大部分工作如何由 OSD 工作线程和异步信使线程完成。当 OSD 收到新 IO 时,首先由与相应网络连接关联的异步信使线程处理并移动到用户空间中。然后将其放入给定 OSD 分片的计划程序工作队列中。如果队列之前为空,则与该分片关联的所有线程都会唤醒,并且在分片的工作队列为空之前不会返回睡眠状态。当只有 1 个客户端执行 IO 时,集群上的负载会明显减少,并且每个分片的队列通常会在短时间内为空。线程会不断唤醒并重新进入睡眠状态。当群集负载较重时,队列更有可能有工作要做,因此线程花费更少的睡眠和唤醒时间。相反,他们花更多的时间做实际工作。
Release | Read Goal | Read IOPS | Improvement | Write Goal | Write IOPS | Improvement |
---|---|---|---|---|---|---|
v16.2.13 | 7500 | 88540 | 11.8X | 2500 | 30509 | 12.2X |
v17.2.6 | 7500 | 89032 | 11.9X | 2500 | 30644 | 12.3X |
v18.1.0 | 7500 | 89669 | 12.0X | 2500 | 30940 | 12.4X |
多客户端 IOPS:
Release | Read Goal | Read IOPS | Improvement | Write Goal | Write IOPS | Improvement |
---|---|---|---|---|---|---|
v16.2.13 | 7500 | 490773 | 65.4X | 2500 | 163649 | 65.5X |
v17.2.6 | 7500 | 521475 | 69.5X | 2500 | 173887 | 69.6X |
v18.1.0 | 7500 | 535611 | 71.4X | 2500 | 178601 | 71.4X |
原文: https://ceph.io/en/news/blog/2023/reddit-is-10k-IOPs-achieable-with-NVMes/
关键词
性能
数据
集群
文件
驱动器
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。