您当前位置:资讯中心 >服务器 >浏览文章

QEMU/KVM + Ceph Librbd 性能测试以及深度优化

来源:互联网 日期:2022/11/2 8:05:09 阅读量:(0)

?介绍

图片

最近,很多人都会问:如何设置 QEMU/KVM 以获取最高的性能?

虽然,过去很多人都在测试或者使用 Ceph 过程中进行调优设置以获取最佳性能,但到目前而言,还没有一个最优的最新数据。通常,我们在使用 Ceph 的时候,有经验的工程师往往会通过消除系统高级别的性能瓶颈来优化。

这可能意味着可能会通过 librbd 与同步 IO 隔离测试单个OSD的延迟,或者使用大量有高 IO 深度的客户端在裸机上的 OSD 集群上产生大量IO。在这种情况下,请求是用大量并发 IO 驱动由 librbd 支持的单个 QEMU/KVM,并查看其速度。

下文,我们将了解 QEMU/KVM 在使用 Ceph 的 librbd 驱动程序时的执行速度。

集群设置

图片

所有节点都位于同一个 Juniper QFX5200 交换机上,并通过单个 100GbE QSFP28 链路连接。虽然集群有 10 个节点,但在决定最终设置之前我们也评估了各种配置。最终使用 5 个节点作为 OSD 主机,总共有 30 个 NVMe 支持的 OSD。

此设置的预期总体性能约为 1M 随机读取 IOPS 和至少 250K 随机写入 IOPS(在 3 副本的场景下),这足以测试单个 VM 的 QEMU/KVM 性能。集群中剩余的一个节点用作 VM 客户端主机。不过,在配置 VM 之前,使用 CBT (https://github.com/ceph/cbt/) 构建了几个测试集群,并使用 fio 的 librbd 引擎运行测试工作负载以获得基线结果。

基线测试

CBT 的配置为匹配 Ceph 环境修改了一些,而不是使用默认的配置。首先,禁用了 rbd 缓存 (1),每个 OSD 被分配了一个 8GB 的 OSD 内存 traget,并且在初始测试中禁用了 cephx ,并且使用 msgr V1(但在以后的测试中使用安全模式下的 msgr V2 启用了 cephx)。创建集群后,CBT 配置为使用带有 librbd 引擎的 fio 创建一个 6TB RBD 卷,然后通过 iodepth=128 的 fio 执行 16KB 随机读取 5 分钟。由于使用 CBT 重新创建集群和运行多个基线测试非常简单,因此,下面测试了几种不同的集群大小以获得 librbd 引擎和基于 kernel-rbd 的 libaio 引擎的基线结果。

在集群级别禁用 RBD 缓存将对使用 librbd 引擎的 fio 有效,但不会对 QEMU/KVM 的 librbd 驱动程序有效。相反,cache=none 必须通过 qemu-kvm 的驱动部分显式传递。

图片

Kernel-RBD 在从单个 OSD 读取时表现非常出色,但 Librbd 在完整的 30 个 OSD Ceph 集群中以略高于 122K IOPS 的速度实现了最高性能。librbd 和 kernel-rbd 在 5 OSD Ceph 集群上的表现几乎一样。

尽管如此,在 5 个节点、30 个 OSD Ceph 集群上我们执行了进一步的测试。此场景更好地模仿了用户在小规模但更贴近真实环境并且配置 NVMe 的 Ceph 集群上可能看到的结果。

虚拟机部署

使用 RBD 部署和引导 QEMU 虚拟机镜像相当简单了。

1. 下载镜像

使用了 CentOS8 Stream qcow2 映像,并注入了 root 密码和公钥以便于访问:

wget https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-20220913.0.x86_64.qcow2
virt-sysprep -a ~/CentOS-Stream-GenericCloud-8-20220913.0.x86_64.qcow2 --root-password password:123456 --ssh-inject root:file:/home/nhm/.ssh/id_rsa.pub
关键字:
声明:我公司网站部分信息和资讯来自于网络,若涉及版权相关问题请致电(63937922)或在线提交留言告知,我们会第一时间屏蔽删除。
有价值
0% (0)
无价值
0% (10)

分享转发:

发表评论请先登录后发表评论。愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。