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 / 问题 / 871053
Accepted
Olivier S
Olivier S
Asked: 2017-08-30 06:10:57 +0800 CST2017-08-30 06:10:57 +0800 CST 2017-08-30 06:10:57 +0800 CST

kvm/centos7的cpu pinning策略

  • 772

我正在从 Xen 迁移到 Kvm。

在 Xen 中,我能够轻松地将主机 cpus 固定到来宾 vms,并将主机 cpus 固定到 "dom0"。

在 Kvm 中,我还可以轻松地将主机 cpu 固定到来宾 vm,但是,据我所知,没有什么可以阻止在主机操作系统上运行的应用程序使用这些 cpu。我想防止在主机上运行的程序饿死/增加客人延迟的情况。

我可以手动执行详细的 cgroup 策略,但也许我只是缺少 libvirt / centos7 中的设置?

此外,还有一个供客人使用的“emulatorpin”设置。我应该将“模拟器”固定到专用主机 CPU,还是应该将其限制在来宾 CPU 上?目标是尽可能地限制 guest 的延迟。

kvm-virtualization
  • 3 3 个回答
  • 9138 Views

3 个回答

  • Voted
  1. Best Answer
    HBruijn
    2017-09-20T02:31:10+08:002017-09-20T02:31:10+08:00

    如果我正确理解您的问题,您想要实现的是限制管理程序,使其只能使用单个 CPU/内核(或有限数量)来处理自己的进程、中断处理和所有内容。libvirt 可以将所有其他内核分配给来宾系统。

    相对简单的是isolcpus引导参数,它允许您将一个或多个 CPU 与调度程序隔离开来。这可以防止调度程序在此 CPU 上调度任何用户空间线程。

    即在您的虚拟机管理程序上/etc/default/grub:

    GRUB_CMDLINE_LINUX="... quiet isolcpus=0,1"
    

    这应该可以防止虚拟机管理程序上的任何用户空间程序使用大于 1 的核心。然后 Libvirt 可以将虚拟服务器固定到剩余的空闲核心。

    我不确定isolcpus引导参数是否也确保所有中断都将限制在这些内核上。否则,中断也有自己的关联属性 ,smp_affinity它定义了将处理中断请求的处理器。特定中断请求的中断关联值存储在相关/proc/irq/irq_number/smp_affinity文件中,默认设置为/proc/irq/default_smp_affinity. smp_affinity 存储为代表系统中所有处理器的十六进制位掩码。默认值为 f,表示可以在系统中的任何处理器上处理中断请求。将此值设置为 1 意味着只有处理器 0 可以处理中断。


    用于控制 RHEL 和 CentOS 7 的处理器和调度亲和性的工具称为tuna

    • 5
  2. c4f4t0r
    2017-09-13T04:41:10+08:002017-09-13T04:41:10+08:00

    在 Linux 中,如果您希望进程仅使用主机中的特定 cpu,taskset命令可以提供帮助

    在两个 cpu 上运行一个新程序:

    taskset -c 0,2 /home/app/myprogramm
    

    要更改已运行进程的 cpu 亲和性:

    taskset -p -c 0,2 <pid_of_your_proccess>
    

    kvm中没有dom0,你有kvm内核模块,所以一切都集成在内核中,不像在xen中你有dom0作为特权域,所以你可以pin内核运行的进程。

    在此处输入图像描述

    • 1
  3. Stuart Cardall
    2018-09-12T14:16:51+08:002018-09-12T14:16:51+08:00

    isolcpus现在已弃用:

              [Deprecated - use cpusets instead]
              Format: [flag-list,]<cpu-list>```
    

    cpuset与_libvirt

    • 1

相关问题

  • Xen 与 KVM 的性能对比

  • 什么是bridge_fd?

  • 如何在 kvm-linux 中登录除 ssh、vnc 之外的控制台

  • Linux 内核虚拟机

  • Vista 上的 VNC

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