AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 457869
Accepted
PythonLearner
PythonLearner
Asked: 2012-12-14 09:23:17 +0800 CST2012-12-14 09:23:17 +0800 CST 2012-12-14 09:23:17 +0800 CST

KVM/Qemu、Ubuntu:为什么更多来宾 CPU 会快速增强磁盘 I/O?

  • 772

我们有一个由两个节点组成的 Heartbeat/DRBD/Pacemaker/KVM/Qemu/libvirt 集群。每个节点都运行具有以下软件包/版本的 Ubuntu 12.04 64 位:

  • 内核 3.2.0-32-generic #51-Ubuntu SMP
  • DRBD 8.3.11
  • qemu-kvm 1.0+noroms-0ubuntu14.3
  • libvirt 0.9.13
  • 心脏起搏器1.1.7
  • 心跳3.0.5

虚拟来宾正在运行 Ubuntu 10.04 64 位和 Ubuntu 12.04 64 位。我们使用 libvirt 功能将主机 CPU 的功能传递给虚拟来宾,以实现最佳 CPU 性能。

现在这是该集群上的常见设置:

  • VM“监控”有 4 个 vCPU
  • VM“监控”使用ide作为磁盘接口(由于显而易见的原因,我们目前正在切换到VirtIO)

我们最近进行了一些简单的测试。我知道他们不专业,达不到高标准,但他们已经表现出很强的趋势:

节点 A 正在运行虚拟机“bla” 节点 B 正在运行虚拟机“监控”

当我们将文件从 VM“bla”同步到 VM“monitoring”时,我们只能达到 12 MB/s。当我们在虚拟机“监控”中执行一个简单的 dd if=/dev/null of=/tmp/blubb 时,我们达到了大约 30 MB/s。

然后我们向虚拟机“监控”添加了 4 个 vCPU 并重新启动它。VM“监控”现在有 8 个 vCPU。我们重新运行测试,结果如下:当我们将文件从 VM“bla”rsync 到 VM“monitoring”时,我们现在达到了 36 MB/s。当我们在虚拟机“监控”中执行一个简单的 dd if=/dev/null of=/tmp/blubb 时,我们现在达到了大约 61 MB/s。

对我来说,这种效果是相当令人惊讶的。为什么显然为这个虚拟来宾自动添加更多虚拟 CPU 意味着 VM 内的磁盘性能更高?

我对此没有任何解释,非常感谢您的意见。我想了解导致这种性能提升的原因,因为我可以 100% 重现这种行为。

performance
  • 1 1 个回答
  • 2616 Views

1 个回答

  • Voted
  1. Best Answer
    John Siu
    2012-12-24T20:35:59+08:002012-12-24T20:35:59+08:00

    我会给出非常粗略的想法/解释。

    在 OP 情况下,除了在 VM 内进行测量外,还应查看主机。

    在这种情况下,我们可以假设以下是正确的

    1. 在所有测试中,主机 I/O(磁盘)带宽都没有达到最大值。随着 VM( "monitoring") I/O 随着分配给它的更多 CPU 的增加而增加。如果主机 I/O 已经达到最大值,那么 I/O 性能应该不会提高。
    2. "bla"不是限制因素因为"monitoring"I/O 性能在不改变"bla"
    3. CPU 是提高性能的主要工厂(在 OP 的情况下),因为 I/O 不是瓶颈,而且 OP 没有提到任何内存大小的变化。但为什么?或者如何?

    附加因素

    1. 写入比读取花费更多时间这对于 VM 和主机都是一样的。说的非常简单:VM等待host完成读写。

    当更多的 cpu 分配给时会发生什么"monitoring"?

    当"monitoring"分配更多的 CPU 时,它获得更多的处理能力,但它也获得更多的 I/O 处理时间。

    这与它无关,rsync因为它是一个单线程程序。

    它是 I/O 层利用增加的 CPU 能力,或者更准确地说,增加的处理时间。

    如果在测试期间使用 cpu 监控程序(例如 top)"monitoring",它不会显示一个,但所有 cpu 使用率都会上升,还有 %wa。%wa 是花在 I/O 上的等待时间。

    这种性能提升只会在您的主机 I/O 不是最大时发生。出去。

    我在 KVM 站点找不到 cpu 调度,但是这个博客提到 KVM 正在使用 CFS 和 cgroups,以下是引用

    在 KVM 中,每个 vcpu 都映射到一个 Linux 进程,后者又利用硬件辅助为虚拟化创建必要的“烟雾和镜像”。因此,vcpu 只是 CFS 的另一个进程,对于 cgroups 也很重要,作为资源管理器,它允许 Linux 管理资源分配 - 通常按比例分配以设置约束分配。cgroups 也适用于内存、网络和 I/O。进程组可以成为调度组的一部分,以将资源分配要求应用于分层进程组。

    简而言之,更多 cpu = 更多 cpu 时间 = 在给定时间段内更多的 I/O 时隙。

    • 9

相关问题

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • jvm性能调优技巧/资源?

  • 加快 MSSQL 快照复制到 SQLExpress 副本的速度

  • 聚集索引与非聚集索引?

  • 使用大量 javascript 的页面上的鱿鱼速度很慢

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve