sách gpt4 ai đã đi

performance - 为什么在我的实验中 virtio-scsi 比 virtio-blk 慢得多(超过和 ceph rbd 图像)?

In lại 作者:行者123 更新时间:2023-12-04 02:31:58 77 4
mua khóa gpt4 Nike

嗨,我最近通过 qemu 目标(因为它的 DISCARD/TRIM 支持)在 rbd 上进行了 virtio-scsi 实验,并将吞吐量和 iops 与在同一台机器上通过 rbd 设置的 virtio-blk 的吞吐量和 iops 进行了比较,在 guest 中使用 fio .结果是顺序读写的吞吐量小 7 倍(42.3MB/s 对 309MB/s),随机读写的 iops 小 10 倍(546 对 5705)。

我所做的是使用 OpenStack Juno 设置虚拟机,它通过 rbd 设置为我提供了 virtio-blk。然后我修改了libvirt configure xml中的相关部分,从这个:













对此:












软件版本为:

qemu 2.5.1

libvirt 1.2.2

内核 3.18.0-031800-generic#201412071935 SMP Mon Dec 8 00:36:34 UTC 2014 x86_64(Ubuntu 14.04 内核)

管理程序是 KVM。

我认为 virtio-scsi 和 virtio-blk 之间的性能差异不会那么大。所以请指出我做错了什么,以及如何实现合理的性能。

一个限制是我想要一个适用于 OpenStack 的解决方案(如果适用于 Juno 是理想的),而无需进行大量修补或编码。例如,我听说过 virtio-scsi + vhost-scsi + scsi-mq,但目前在 OpenStack 中似乎不可用。

1 Câu trả lời

简单的答案是 VirtIO-SCSI 比 VirtIO-Block 稍微复杂一些。借用đây的简单描述:

VirtIO Block 有以下几层:

guest: app -> Block Layer -> virtio-blk
host: QEMU -> Block Layer -> Block Device Driver -> Hardware

而 VirtIO SCSI 看起来像这样:
guest: app -> Block Layer -> SCSI Layer -> scsi_mod
host: QEMU -> Block Layer -> SCSI Layer -> Block Device Driver -> Hardware

本质上,VirtIO SCSI 与 VirtIO Block 相比,还要经过另一个转换层。

对于使用本地设备的大多数情况,结果会更慢。有一些奇怪的特定情况,但有时反过来是正确的,即:
  • 主机 SCSI LUN 到 VirtIO SCSI 适配器的直接传递。这稍微快一点,因为它绕过了主机端的块层。
  • QEMU 对 iSCSI 设备的 native 访问。这有时会更快,因为它完全避免了主机块和 SCSI 层,并且不必从 VirtIO 块命令转换为 SCSI 命令。

  • 不过,作为记录,在 VirtIO Block 上使用 VirtIO SCSI 有三个与性能无关的好处:
  • 它支持更多的设备。 VirtIO Block 为每个块设备公开一个 PCI 设备,这限制了大约 21-24 个设备,而 VirtIO SCSI 只使用一个 PCI 设备,并且可以在该设备上处理绝对数量的 LUN。
  • VirtIO SCSI 支持 SCSI UNMAP 命令(ATA 术语中的 TRIM,Linux 内核术语中的 DISCARD)。如果您使用的是精简配置的存储,这一点很重要。
  • VirtIO SCSI 将设备公开为常规 SCSI 节点,而 VirtIO Block 使用特殊的设备主节点。这通常不是很重要,但在从物理系统转换时会很有帮助。
  • 关于performance - 为什么在我的实验中 virtio-scsi 比 virtio-blk 慢得多(超过和 ceph rbd 图像)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39031456/

    77 4 0
    Bài viết được đề xuất: ruby-on-rails - 在 rails 3 中动态获取模型属性
    Bài viết được đề xuất: apache-flex - Flex 库和 ActionScript 库有什么区别?
    Bài viết được đề xuất: VB.net 把窗口放在前面
    Bài viết được đề xuất: sql - Oracle 数据库在 UPDATE 查询中无限挂起
    行者123
    Hồ sơ cá nhân

    Tôi là một lập trình viên xuất sắc, rất giỏi!

    Nhận phiếu giảm giá Didi Taxi miễn phí
    Mã giảm giá Didi Taxi
    Giấy chứng nhận ICP Bắc Kinh số 000000
    Hợp tác quảng cáo: 1813099741@qq.com 6ren.com