CN106462451A - 虚拟化平台处理中断方法和相关设备 - Google Patents

虚拟化平台处理中断方法和相关设备 Download PDF

Info

Publication number
CN106462451A
CN106462451A CN201480079053.5A CN201480079053A CN106462451A CN 106462451 A CN106462451 A CN 106462451A CN 201480079053 A CN201480079053 A CN 201480079053A CN 106462451 A CN106462451 A CN 106462451A
Authority
CN
China
Prior art keywords
target
vcpu
pcpu
determined
virtual interrupt
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201480079053.5A
Other languages
English (en)
Other versions
CN106462451B (zh
Inventor
张浩宇
藏洪永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN106462451A publication Critical patent/CN106462451A/zh
Application granted granted Critical
Publication of CN106462451B publication Critical patent/CN106462451B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)

Abstract

本发明实施例提供虚拟化平台处理中断方法和相关设备,包括:在第j物理输入输出设备发生第i物理中断的情况下,从U个目标pCPU中确定第npCPU;使用该第n pCPU处理该第i物理中断;根据该第i物理中断,确定该第i虚拟中断;从该V个目标vCPU中确定第m vCPU,以便于该第k VM使用该第m vCPU执行该第i虚拟中断。上述技术方案能够有效地避免因为vCPU所亲和的pCPU不是用于处理该vCPU所处理的虚拟中断所对应的物理中断的pCPU引起额外的IPI导致的VM‑Exit,有效地减少上下文切换次数,并且降低虚拟机对pCPU的干扰。

Description

虚拟化平台处理中断方法和相关设备 技术领域
本发明实施例涉及通信技术领域, 并且更具体地, 涉及虚拟化平台处理 中断方法和相关设备。 背景技术
虚拟化技术是一种将底层硬件设备与上层操作系统、应用程序分离的去 耦合技术。 虚拟化技术作为当前流行的云计算( Cloud Computing )平台的底 层重要支撑技术之一, 可以极大的提高物理设备的资源使用效率。 与传统的 物理服务器相比, 虚拟机具有更好的隔离性和封装性, 其可以将整个虚拟机 的信息保存到虚拟磁盘镜像( VDI, Virtual Disk Image ) 中, 从而可以方便 地对虚拟机进行快照、 备份、 克隆和分发等操作。 由于虚拟化引入了开销, 因此导致在相同的配置下虚拟机的性能要低于物理机的性能。如何有效地提 高虚拟机的性能是本领域中一个需要解决的问题。 发明内容
本发明实施例提供的虚拟化平台处理中断方法和相关设备, 能够降低中 断开销对虚拟化平台的影响, 从而有效提高虚拟机的性能。
第一方面, 本发明实施例一种虚拟化平台处理中断方法, 应用于计算节 点上, 该计算节点包括: 物理硬件层、 运行在该物理硬件层之上的宿主机 Host,运行在该 Host之上的至少一个虚拟机 VM、该至少一个 VM上被虚拟 有虚拟硬件, 其中, 该物理硬件层包括 X个物理中央处理器 pCPU和 Y个 物理输入输出设备, 该虚拟硬件包括 Z个虚拟中央处理器 vCPU, 该 Y个物 理输入输出设备包括第 j物理输入输出设备, 该至少一个 VM包括第 k VM, 该第 j物理输入输出设备直通该第 k VM, 该方法由该 Host执行, 该方法包 括:在该第 j物理输入输出设备发生第 i物理中断的情况下,从 U个目标 pCPU 中确定第 n pCPU, 其中, 该 U个目标 pCPU为与该第 i物理中断以及 V个 目标 vCPU均具有亲和关系的 pCPU, 该 V个目标 vCPU为被虚拟在该第 k VM上的与第 i虚拟中断具有亲和关系的 vCPU,该第 i虚拟中断对应于该第 i物理中断, 该 X个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V 个目标 vCPU;使用该第 n pCPU处理该第 i物理中断;根据该第 i物理中断, 确定该第 i虚拟中断; 从该 V个目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i虚拟中断; 其中, X、 Y、 Ζ为大于 1的 正整数, U为大于或等于 1且小于或等于 X的正整数, V为大于或等于 1且 小于或等于 Ζ的正整数, i、 j、 k、 m、 n为正整数。
结合第一方面, 在第一方面的第一种可能的实现方式中, 该 U个目标 pCPU与该第 i物理中断的亲和关系,该 U个目标 pCPU与该 V个目标 vCPU 的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系是通过以下 方式确定的: 确定该 V个目标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i虚拟中断的 vCPU; 确定该 U个目标 pCPU,其中该 V个目标 vCPU能够运行在该 U个目标 pCPU 上, 其中 U等于 1 ; 确定对应于该第 i虚拟中断的第 i物理中断; 确定该第 i 物理中断与该 U个目标 pCPU的亲和关系,其中该第 i物理中断能被该 U个 目标 pCPU处理。
结合第一方面, 在第一方面的第二种可能的实现方式中, 该 U个目标 pCPU与该第 i物理中断的亲和关系,该 U个目标 pCPU与该 V个目标 vCPU 的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系是通过以下 方式确定的; 确定该 V个目标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i虚拟中断的 vCPU; 确定该 U个目标 pCPU,其中该 V个目标 vCPU能够运行在该多个目标 pCPU 上,其中 U为大于 1且小于或等于 X的正整数; 确定对应于该第 i虚拟中断 的第 i物理中断; 确定该第 i物理中断与该 U个目标 pCPU的亲和关系, 其 中该第 i物理中断能被该 U个目标 pCPU处理。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实 现方式中, 当该第 i物理中断与该 U个目标 pCPU的亲和关系为一对多的亲 和关系, 该从该 V个目标 vCPU中确定第 m vCPU, 包括: 确定该第 n pCPU 上是否运行有该 V个目标 vCPU 中的至少一个目标 vCPU; 在确定该第 n pCPU上运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下, 确定 该第 n pCPU上运行的一个目标 vCPU作为该第 m vCPU;在确定该第 n pCPU 上没有运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下,根据优 先级顺序, 从该 V个目标 vCPU中确定一个目标 vCPU作为该第 m vCPU。 结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实 现方式中, 该确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一 个目标 vCPU, 包括: 根据虚拟中断路由信息, 确定该第 n pCPU上是否运 行有该 V个目标 vCPU中的至少一个目标 vCPU, 其中该虚拟中断路由信息 包括该 U个目标 pCPU与运行在该 U个目标 pCPU上的目标 vCPU的对应关 系。
第二方面, 本发明实施例提供一种虚拟化平台处理中断方法, 应用于计 算节点上, 该计算节点包括: 物理硬件层、 运行在该物理硬件层之上的宿主 机 Host、运行在该 Host之上的 Y个虚拟机 VM、运行在该 Host之上的 Y个 虚拟主机 vhost内核线程、 该至少一个 VM上被虚拟有虚拟硬件, 其中, 该 物理硬件层包括 X个物理中央处理器 pCPU,该虚拟硬件包括 Z个虚拟中央 处理器 vCPU, 该 Y个 VM中的每一个 VM包括一个半虚拟化驱动 virtio设 备, 该 Y个 VM包括第 k VM, 该第 k VM包括第 i virtio设备, 该第 i virtio 设备与该 Y个 vhost内核线程中的第 j vhost内核线程对应,该方法由该 Host 执行, 该方法包括: 在该第 j vhost内核线程触发第 i vhost线程的情况下, 从 U个目标 pCPU中确定第 n pCPU,其中,该 U个目标 pCPU为与该第 i vhost 线程以及 V个目标 vCPU均具有亲和关系的 pCPU,该 V个目标 vCPU为被 虚拟在该第 k VM上的与第 i virtio设备的虚拟中断具有亲和关系的 vCPU, 该第 i virtio设备的虚拟中断对应于该第 i vhost线程, 该 X个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU; 使用该第 n pCPU 处理该第 i vhost线程; 根据该第 i vhost线程, 确定该第 i virtio设备的虚拟 中断; 从该 V个目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i virtio设备的虚拟中断; 其中, X、 Y、 Ζ为大于 1的正整 数, U为大于或等于 1且小于或等于 X的正整数, V为大于或等于 1且小于 或等于 Ζ的正整数, i、 j、 k、 m、 n为正整数。
结合第二方面, 在第二方面的第一种可能的实现方式中, 该 U个目标 pCPU与该第 i vhost线程的亲和关系,该 U个目标 pCPU与该 V个目标 vCPU 的亲和关系以及该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关 系是通过以下方式确定的: 确定该 V个目标 vCPU与该第 i虚拟中断的亲和 关系,其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i virtio 设备的虚拟中断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU 能够运行在该 U个目标 pCPU上, 其中 U等于 1 ; 确定对应于该第 i virtio 设备的虚拟中断的第 i vhost线程;确定该第 i vhost线程与该 U个目标 pCPU 的亲和关系, 其中该第 i vhost线程能被该 U个目标 pCPU处理。
结合第二方面, 在第二方面的第二种可能的实现方式中, 该 U个目标 pCPU与该第 i vhost线程的亲和关系,该 U个目标 pCPU与该 V个目标 vCPU 的亲和关系以及该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关 系是通过以下方式确定的: 确定该 V个目标 vCPU与该第 I virito设备的虚 拟中断的亲和关系,其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够 处理该第 i virtio设备的虚拟中断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行在该多个目标 pCPU上,其中 U为大于 1且小于或 等于 X的正整数;确定对应于该第 i virtio设备的虚拟中断的第 i vhost线程; 确定该第 i vhost线程与该 U个目标 pCPU的亲和关系, 其中该第 i vhost线 程能被该 U个目标 pCPU处理。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实 现方式中, 当该第 i vhost线程与该 U个目标 pCPU的亲和关系为一对多的 亲和关系,该从该 V个目标 vCPU中确定第 m vCPU,包括:确定该第 n pCPU 上是否运行有该 V个目标 vCPU 中的至少一个目标 vCPU; 在确定该第 n pCPU上运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下, 确定 该第 n pCPU上运行的一个目标 vCPU作为该第 m vCPU;在确定该第 n pCPU 上没有运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下,根据优 先级顺序, 从该 V个目标 vCPU中确定一个目标 vCPU作为该第 m vCPU。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实 现方式中, 该确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一 个目标 vCPU,包括:根据 virtio设备的虚拟中断路由信息,确定该第 n pCPU 上是否运行有该 V个目标 vCPU中的至少一个目标 vCPU, 其中该 virtio设 备的虚拟中断路由信息包括该 U个目标 pCPU与运行在该 U个目标 pCPU 上的目标 vCPU的对应关系。
第三方面, 本发明实施例提供一种宿主机 Host, 应用于计算节点上, 该 计算节点包括: 物理硬件层、 运行在该物理硬件层之上的该 Host、 运行在该 Host之上的至少一个虚拟机 VM、 该至少一个 VM上被虚拟有虚拟硬件, 其 中, 该物理硬件层包括 X个物理中央处理器 pCPU和 Y个物理输入输出设 备, 该虚拟硬件包括 Z个虚拟中央处理器 vCPU, 该 Y个物理输入输出设备 包括第 j物理输入输出设备,该至少一个 VM包括第 k VM,该第 j物理输入 输出设备直通该第 k VM, 该 Host包括: 第一确定单元, 用于在该第 j物理 输入输出设备发生第 i物理中断的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个目标 pCPU为与该第 i物理中断以及 V个目标 vCPU 均具有亲和关系的 pCPU, 该 V个目标 vCPU为被虚拟在该第 k VM上的与 第 i虚拟中断具有亲和关系的 vCPU,该第 i虚拟中断对应于该第 i物理中断, 该 X个 pCPU包括该 U个目标 pCPU,该 Z个 vCPU包括该 V个目标 vCPU,; 第二调用单元, 用于使用该第 n pCPU处理该第 i物理中断; 第三确定单元, 用于根据该第 i物理中断, 确定该第 i虚拟中断; 第四确定单元, 用于从该 V个目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执 行该第 i虚拟中断; 其中, X、 Υ、 Ζ为大于 1的正整数, U为大于或等于 1 且小于或等于 X的正整数, V为大于或等于 1且小于或等于 Ζ的正整数, i、 j、 k、 m、 n为正整数。
结合第三方面, 在第三方面的第一种可能的实现方式中, 该第一确定单 元, 还用于: 确定该 V个目标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i虚拟中断的 vCPU; 确定该 U个目标 pCPU,其中该 V个目标 vCPU能够运行在该 U个目标 pCPU 上, 其中 U等于 1 ; 确定对应于该第 i虚拟中断的第 i物理中断; 确定该第 i 物理中断与该 U个目标 pCPU的亲和关系,其中该第 i物理中断能被该 U个 目标 pCPU处理。
结合第三方面, 在第三方面的第二种可能的实现方式中, 该第一确定单 元, 还用于: 确定该 V个目标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i虚拟中断的 vCPU; 确定该 U个目标 pCPU,其中该 V个目标 vCPU能够运行在该多个目标 pCPU 上,其中 U为大于 1且小于或等于 X的正整数; 确定对应于该第 i虚拟中断 的第 i物理中断; 确定该第 i物理中断与该 U个目标 pCPU的亲和关系, 其 中该第 i物理中断能被该 U个目标 pCPU处理。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实 现方式中, 该第四确定单元, 具体用于: 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目标 vCPU;在确定该第 n pCPU上运行有该 V 个目标 vCPU中的至少一个目标 vCPU的情况下, 确定该第 n pCPU上运行 的一个目标 vCPU作为该第 m vCPU, 以便于该第 k VM使用该第 m vCPU 执行该第 i虚拟中断; 或者, 在确定该第 n pCPU上没有运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下, 根据优先级顺序, 从该 V个目标 vCPU中确定一个目标 vCPU作为该第 m vCPU,以便于该第 k VM使用该第 m vCPU执行该第 i虚拟中断。
结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实 现方式中, 在该确定该第 n pCPU上是否运行该 V个目标 vCPU中的至少一 个目标 vCPU的方面, 该第四确定单元, 具体用于根据虚拟中断路由信息, 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目标 vCPU, 其中该虚拟中断路由信息包括该 U个目标 pCPU与运行在该 U个目标 pCPU 上的目标 vCPU的对应关系。
第四方面, 本发明实施例提供一种宿主机 Host, 应用于计算节点上, 该 计算节点包括: 物理硬件层、 运行在该物理硬件层之上的该 Host、 运行在该 Host之上的 Y个虚拟机 VM、 运行在该 Host之上的 Y个虚拟主机 vhost内 核线程、 该至少一个 VM上被虚拟有虚拟硬件, 其中, 该物理硬件层包括 X 个物理中央处理器 pCPU, 该虚拟硬件包括 Z个虚拟中央处理器 vCPU, X、 Y、 Z为大于 1的正整数, 该 Υ个 VM中的每一个 VM包括一个半虚拟化驱 动 virtio设备, 该 Y个 VM包括第 k VM, 该第 k VM包括第 i virtio设备, 该第 i virtio设备与该 Y个 vhost内核线程中的第 j vhost内核线程对应, 该 Host包括: 第一确定单元, 用于在该第 j vhost内核线程触发第 i vhost线程 的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个目标 pCPU 为与该第 i vhost线程以及 V个目标 vCPU均具有亲和关系的 pCPU,该 V个 目标 vCPU为被虚拟在该第 k VM上的与第 i virtio设备的虚拟中断具有亲和 关系的 vCPU, 该第 i virtio设备的虚拟中断对应于该第 i vhost线程, 该 X 个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU; 第 二调用单元, 用于使用该第 n pCPU处理该第 i vhost线程; 第三确定单元, 用于根据该第 i vhost线程, 确定该第 i virtio设备的虚拟中断; 第四确定单 元, 用于从该 V个目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该 第 m vCPU执行该第 i virtio设备的虚拟中断; 其中, X、 Y、 Ζ为大于 1的 正整数, U为大于或等于 1且小于或等于 X的正整数, V为大于或等于 1且 小于或等于 Z的正整数, i、 j、 k、 m、 n为正整数。
结合第四方面, 在第四方面的第一种可能的实现方式中, 该第一确定单 元, 还用于: 确定该 V个目标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i virtio设备的虚拟 中断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行在 该 U个目标 pCPU上, 其中 U等于 1 ; 确定对应于该第 i virtio设备的虚拟 中断的第 i vhost线程; 确定该第 i vhost线程与该 U个目标 pCPU的亲和关 系, 其中该第 i vhost线程能被该 U个目标 pCPU处理。
结合第四方面的, 在第四方面的第二种可能的实现方式中, 该第一确定 单元, 还用于: 确定该 V个目标 vCPU与该第 i虚拟中断的亲和关系, 其中 该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i virtio设备的虚 拟中断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行 在该多个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数; 确定 对应于该第 i virtio设备的虚拟中断的第 i vhost线程; 确定该第 i vhost线程 与该 U个目标 pCPU的亲和关系,其中该第 i vhost线程能被该 U个目标 pCPU 处理。
结合第四方面的第二种可能的实现方式,在第四方面的第三种可能的实 现方式中, 该第四确定单元, 具体用于: 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目标 vCPU;在确定该第 n pCPU上运行有该 V 个目标 vCPU中的至少一个目标 vCPU的情况下, 确定该第 n pCPU上运行 的一个目标 vCPU作为该第 m vCPU, 以便于该第 k VM使用该第 m vCPU 执行该第 i virtio设备的虚拟中断; 或者, 在确定该第 n pCPU上没有运行有 该 V个目标 vCPU中的至少一个目标 vCPU的情况下, 根据优先级顺序, 从 该 V个目标 vCPU中确定一个目标 vCPU作为该第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i virtio设备的虚拟中断。
结合第四方面的第三种可能的实现方式,在第四方面的第四种可能的实 现方式中, 在该确定该第 n pCPU上是否运行该 V个目标 vCPU中的至少一 个目标 vCPU的方面, 该第四确定单元, 具体用于根据 virtio设备的虚拟中 断路由信息, 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一 个目标 vCPU,其中该 virtio设备的虚拟中断路由信息包括该 U个目标 pCPU 与运行在该 U个目标 pCPU上的目标 vCPU的对应关系。 第五方面, 本发明实施例提供一种计算节点, 该计算节点包括: Y个物 理输入输出设备,其中该 Y个物理输入输出设备包括第 j物理输入输出设备, X个物理中央处理器 pCPU, 与该 X个物理中央处理器 pCPU和 Y个物理输 入输出设备分别连接的存储器,其中该 X个物理中央处理器 pCPU中的一个 或多个 pCPU用于调用或执行该存储器中存储的操作指令、 宿主机 Host、 至 少一个虚拟机 VM以及该至少一个虚拟机 VM上被虚拟的虚拟硬件,其中该 虚拟硬件包括 Z个虚拟中央处理器 vCPU, 该至少一个 VM包括第 k VM, 该第 j物理输入输出设备直通该第 k VM, 其中, 该 Host用于: 在该第 j物 理输入输出设备发生第 i物理中断的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个目标 pCPU为与该第 i物理中断以及 V个目标 vCPU 均具有亲和关系的 pCPU, 该 V个目标 vCPU为被虚拟在该第 k VM上的与 第 i虚拟中断具有亲和关系的 vCPU,该第 i虚拟中断对应于该第 i物理中断, 该 X个 pCPU包括该 U个目标 pCPU,该 Z个 vCPU包括该 V个目标 vCPU, U为大于或等于 1且小于或等于 X的正整数, V为大于或等于 1且小于或等 于 Z的正整数; 使用该第 n pCPU处理该第 i物理中断; 根据该第 i物理中 断, 确定该第 i虚拟中断; 从该 V个目标 vCPU中确定第 m vCPU, 以便于 该第 k VM使用该第 m vCPU执行该第 i虚拟中断; 其中 i、 j、 k、 m、 n为 正整数。
结合第五方面, 在第五方面的第一种可能的实现方式中, 该 Host还用 于通过以下方式确定该 U个目标 pCPU与该第 i物理中断的亲和关系, 该 U 个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系: 确定该 V个目标 vCPU与该第 i虚拟中断的亲和关 系, 其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i虚拟 中断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行在 该 U个目标 pCPU上, 其中 U等于 1 ; 确定对应于该第 i虚拟中断的第 i物 理中断; 确定该第 i物理中断与该 U个目标 pCPU的亲和关系, 其中该第 i 物理中断能被该 U个目标 pCPU处理。
结合第五方面, 在第五方面的第二种可能的实现方式中, 该 Host还用 于通过以下方式确定该 U个目标 pCPU与该第 i物理中断的亲和关系, 该 U 个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系: 确定该 V个目标 vCPU与该第 i虚拟中断的亲和关 系, 其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i虚拟 中断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行在 该多个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数; 确定对 应于该第 i虚拟中断的第 i物理中断;确定该第 i物理中断与该 U个目标 pCPU 的亲和关系, 其中该第 i物理中断能被该 U个目标 pCPU处理。
结合第五方面的第二种可能的实现方式,在第五方面的第三种可能的实 现方式中, 在该从该 V个目标 vCPU中确定第 m vCPU的方面, 该 Host具 体用于: 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目 标 vCPU; 在确定该第 n pCPU上运行有该 V个目标 vCPU中的至少一个目 标 vCPU的情况下, 确定该第 n pCPU上运行的一个目标 vCPU作为该第 m vCPU; 在确定该第 n pCPU上没有运行有该 V个目标 vCPU中的至少一个 目标 vCPU的情况下, 根据优先级顺序, 从该 V个目标 vCPU中确定一个目 标 vCPU作为该第 m vCPU。
结合第五方面的第三种, 在第五方面的第四种可能的实现方式中, 在该 确定该第 n pCPU上是否运行该 V个目标 vCPU中的至少一个目标 vCPU的 方面, 该 Host具体用于: 根据虚拟中断路由信息, 确定该第 n pCPU上是否 运行有该 V个目标 vCPU中的至少一个目标 vCPU, 其中该虚拟中断路由信 息包括该 U个目标 pCPU与运行在该 U个目标 pCPU上的目标 vCPU的对应 关系。
第六方面, 本发明实施例提供一种计算节点, 该计算节点包括: X个物 理中央处理器 pCPU, 与该 X个物理中央处理器 pCPU连接的存储器, 其中 该 X个物理中央处理器 pCPU中的一个或多个 pCPU用于调用或执行该存储 器中存储的操作指令、 宿主机 Host、 Y个虚拟机 VM、 Y个虚拟主机 vhost 内核线程以及该至少一个虚拟机 VM上被虚拟的虚拟硬件,其中该虚拟硬件 包括 Z个虚拟中央处理器 vCPU,该 Y个 VM中的每一个 VM包括一个半虚 拟化驱动 virtio设备, 该 Y个 VM包括第 k VM, 该第 k VM包括第 i virtio 设备,该第 i virtio设备与该 Y个 vhost内核线程中的第 j vhost内核线程对应, 其中, 该 Host用于: 在该第 j vhost内核线程触发第 i vhost线程的情况下, 从 U个目标 pCPU中确定第 n pCPU,其中,该 U个目标 pCPU为与该第 i vhost 线程以及 V个目标 vCPU均具有亲和关系的 pCPU,该 V个目标 vCPU为被 虚拟在该第 k VM上的与第 i virtio设备的虚拟中断具有亲和关系的 vCPU, 该第 i virtio设备的虚拟中断对应于该第 i vhost线程, 该 X个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU, U为大于或等于 1 且小于或等于 X的正整数, V为大于或等于 1且小于或等于 Z的正整数; 使用该第 n pCPU处理该第 i vhost线程; 根据该第 i vhost线程, 确定该第 i virtio设备的虚拟中断; 从该 V个目标 vCPU中确定第 m vCPU, 以便于该 第 k VM使用该第 m vCPU执行该第 i virtio设备的虚拟中断; 其中 X、 Y、 Ζ为大于 1的正整数, U为大于或等于 1且小于或等于 X的正整数, V为大 于或等于 1且小于或等于 Ζ的正整数, i、 j、 k、 m、 n为正整数。
结合第六方面, 在第六方面的第一种可能的实现方式中, 该 Host还用 于通过以下方式确定该 U个目标 pCPU与该第 i物理中断的亲和关系, 该 U 个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系: 确定该 V个目标 vCPU与该第 i虚拟中断的亲和关 系, 其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i virtio 设备的虚拟中断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU 能够运行在该 U个目标 pCPU上, 其中 U等于 1 ; 确定对应于该第 i virtio 设备的虚拟中断的第 i vhost线程;确定该第 i vhost线程与该 U个目标 pCPU 的亲和关系, 其中该第 i vhost线程能被该 U个目标 pCPU处理。
结合第六方面, 在第六方面的第二种可能的实现方式中, 该 Host还用 于通过以下方式确定该 U个目标 pCPU与该第 i物理中断的亲和关系, 该 U 个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系: 确定该 V个目标 vCPU与该第 i虚拟中断的亲和关 系, 其中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i virtio 设备的虚拟中断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU 能够运行在该多个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整 数;确定对应于该第 i virtio设备的虚拟中断的第 i vhost线程;确定该第 i vhost 线程与该 U个目标 pCPU的亲和关系, 其中该第 i vhost线程能被该 U个目 标 pCPU处理。
结合第六方面的第二种可能的实现方式,在第六方面的第三种可能的实 现方式中, 在该从该 V个目标 vCPU中确定第 m vCPU的方面, 该 Host具 体用于: 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目 标 vCPU; 在确定该第 n pCPU上运行有该 V个目标 vCPU中的至少一个目 标 vCPU的情况下, 确定该第 n pCPU上运行的一个目标 vCPU作为该第 m vCPU; 在确定该第 n pCPU上没有运行有该 V个目标 vCPU中的至少一个 目标 vCPU的情况下, 根据优先级顺序, 从该 V个目标 vCPU中确定一个目 标 vCPU作为该第 m vCPU。
结合第六方面的第三种可能的实现方式,在第六方面的第四种可能的实 现方式中, 在该确定该第 n pCPU上是否运行该 V个目标 vCPU中的至少一 个目标 vCPU的方面, 该 Host具体用于: 根据 virtio设备的虚拟中断路由信 息, 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目标 vCPU, 其中该 virtio设备的虚拟中断路由信息包括该 U个目标 pCPU与运 行在该 U个目标 pCPU上的目标 vCPU的对应关系。
一方面, 本发明实施例中, 在第 j物理输入输出设备发生第 i物理中断 的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个目标 pCPU 为与该第 i物理中断以及 V个目标 vCPU均具有亲和关系的 pCPU, 该 V个 目标 vCPU 为被虚拟在该第 k VM 上的与第 i虚拟中断具有亲和关系的 vCPU, 该第 i虚拟中断对应于该第 i物理中断, 该 X个 pCPU包括该 U个 目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU; 使用该第 n pCPU处理 该第 i物理中断; 根据该第 i物理中断, 确定该第 i虚拟中断; 从该 V个目 标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i 虚拟中断,可见通过上述技术方案能够有效地避免因为 vCPU所亲和的 pCPU 不是用于处理该 vCPU所处理的虚拟中断所对应的物理中断的 pCPU引起额 夕卜的 IPI导致的 VM-Exit, 有效地减少上下文切换次数, 并且降低虚拟机对 pCPU的干扰。
另一方面, 本发明实施例中, 在该第 j vhost内核线程触发第 i vhost线 程的情况下,从 U个目标 pCPU中确定第 n pCPU,其中,该 U个目标 pCPU 为与该第 i vhost线程以及 V个目标 vCPU均具有亲和关系的 pCPU,该 V个 目标 vCPU为被虚拟在该第 k VM上的与第 i virtio设备的虚拟中断具有亲和 关系的 vCPU, 该第 i virtio设备的虚拟中断对应于该第 i vhost线程, 该 X 个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU; 使 用该第 n pCPU处理该第 i vhost线程;根据该第 i vhost线程,确定该第 i virtio 设备的虚拟中断;从该 V个目标 vCPU中确定第 m vCPU,以便于该第 k VM 使用该第 m vCPU执行该第 i virtio设备的虚拟中断,可见通过上述技术方案 能够有效地避免因为 vCPU所亲和的 pCPU不是用于处理该 vCPU所处理的 虚拟中断所对应的物理中断的 pCPU引起额外的 IPI导致的 VM-Exit, 有效 地减少上下文切换次数, 并且降低虚拟机对 pCPU的干扰。 附图说明
为了更清楚地说明本发明实施例的技术方案, 下面将对本发明实施例中 所需要使用的附图作简单地介绍, 显而易见地, 下面所描述的附图仅仅是本 发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的 前提下, 还可以根据这些附图获得其他的附图。
图 1是一种直通模式的示意图。
图 2是一种前后端模式的示意图。 图。 ; " 、
图 4是本发明实施例提供的虚拟中断、 物理中断、 vCPU以及 pCPU的 对应关系的示意图。
图 5是本发明实施例提供的另一虚拟中断、物理中断、 vCPU以及 pCPU 的对应关系的示意图。
图 6 是根据本发明提供的另一虚拟化平台处理中断方法的示意性流程 图。
图 7是本发明实施例提供的 virtio设备的虚拟中断、 vhost线程、 vCPU 以及 pCPU的对应关系的示意图。
图 8是本发明实施例提供的另一 virtio设备的虚拟中断、 vhost线程、 vCPU以及 pCPU的对应关系的示意图。 图 10是根据本发明实施例提供的另一宿主机 Host的结构框图。
图 11是根据本发明实施例提供的计算节点的结构框图。
图 12是根据本发明实施例提供的另一计算节点的结构框图。 具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、 完整地描述, 显然, 所述的实施例是本发明的一部分实施例, 而不是 全部实施例。 基于本发明中的实施例, 本领域普通技术人员在没有做出创造 性劳动的前提下所获得的所有其他实施例, 都应属于本发明保护的范围。
为了方便理解本发明实施例, 首先在此介绍本发明实施例描述中会引入 的几个要素。
虚拟机:
通过虚拟机软件可以在一台物理计算节点上模拟出一台或者多台的计 算节点,其中该物理计算节点可以是服务器、 台式计算机、便携式计算机等。 模拟的计算节点称为虚拟机 ( Virtual Machine, VM )。 该物理计算节点称为宿 主机。 虚拟机可以像真正的计算节点进行工作。 虚拟机上可以安装操作系统 和应用程序。 虚拟机还可访问网络资源。 虚拟机上运行的操作系统称为虚拟 操作系统。虚拟操作系统中运行的程序就像是运行在真正的计算节点的操作 系统中。 虚拟机还可以被虚拟有虚拟硬件。 具体来说, 这种被虚拟是通过宿 主机( Host )在 VM上模拟的虚拟硬件, 例如虚拟中央处理器( virtual Central Processing Unit, vCPU )。 vCPU用于处理虚拟机中运行的程序。 一个或多个 vCPU可以对应于物理计算节点中的一个中央处理器 ( Central Processing Unit, CPU )。 物理计算节点中的 CPU可以称为物理 CPU ( physical CPU, pCPU pCPU可以有客户 (guest ) 态和宿主 (host ) 态。 在虚拟机运行时, pCPU处于 guest态。 由于特殊指令或外部中断等原因, pCPU可以从 guest态切 换到 host态。 这一过程可以称为虚拟机退出 (VM-Exit )。
虚拟设备的实现方式可以有直通模式和前后端模式。
直通模式:
直通(direct )模式, 也可以称为透传 ( assthrough )模式, 是指宿主机 向一个特定的虚拟机提供一种设备隔离, 以便特定的物理输入输出设备能够 被特定的虚拟机独占使用。 在直通模式下, 如果处理虚拟中断的 vCPU所对 应的 pCPU和处理该虚拟中断对应的物理中断的 pCPU不一致, 则引起额外的 处理器间中断( Inter-Processor Interrupt, IPI )导致的 VM-Exit。
前后端模式:
前后端 (split driver )模式是指将虚拟设备驱动通过前端驱动和后端驱 动两部分配合完成, 其中该前端驱动在虚拟机中, 该后端驱动在宿主机中。 前后端驱动通过共享内存的方式进行数据传输。 与纯软件虚拟的设备相比, 前后端驱动模式的抽象层次更高, 性能也更好。 前后端模式中, 每一个虚拟 机中都会有一个使用半虚拟化驱动 (virtio ) 的设备(简称 virtio设备)。 每一 个 virtio设备都会有一个对应的虚拟主机(vhost ) 内核线程, 其中 vhost内核 线程运行在宿主机中。 vhost内核线程用于处理对应的 virtio设备的数据包。 在前后端模式中,如果用于处理 virtio设备的虚拟中断的 vCPU对应的 pCPU与 用于处理对应于该 virtio设备的虚拟中断的 vhost线程的 pCPU不一致, 则引起 额外的 IPI导致的 VM-Exit。
图 1是一种直通模式的示意图。 如图 1所示, 计算节点 100中, 第一虚 拟机 101可以独占第一物理输入输出设备 111 , 第二虚拟机 102可以独占第 二物理输入输出设备 112。 图 3所示的方法可以应用于釆用如图 1所示的直 通模式的虚拟机。
图 2是一种前后端模式的示意图。如图 2所示,计算节点 200中第一 virtio 设备 211与第一 vhost线程 212对应,计算节点 200中的第二 virtio设备 221 与第二 vhost线程 222对应, 其中第一 virtio设备是第一虚拟机中的 virtio设 备, 第二 virtio设备是第二虚拟机中的 virtio设备 211。 图 6所示的方法可以 应用于釆用如图 2所示的前后端模式的虚拟机。 图。 该方法应用于计算节点上, 该计算节点包括: 物理硬件层、 运行在该物 理硬件层之上的宿主机 Host, 运行在该 Host之上的至少一个虚拟机 VM、 该至少一个 VM上被虚拟有虚拟硬件, 其中, 该物理硬件层包括 X个物理 中央处理器 pCPU和 Y个物理输入输出设备,该虚拟硬件包括 Z个虚拟中央 处理器 vCPU, X、 Υ、 Ζ为大于 1的正整数, 该 Υ个物理输入输出设备包括 第 j物理输入输出设备,该至少一个 VM包括第 k VM,该第 j物理输入输出 设备直通该第 k VM, 该方法由该 Host执行。
301,在该第 j物理输入输出设备发生第 i物理中断的情况下,从 U个目 标 pCPU中确定第 n pCPU, 其中, 该 U个目标 pCPU为与该第 i物理中断 以及 V个目标 vCPU均具有亲和关系的 pCPU,该 V个目标 vCPU为被虚拟 在该第 k VM上的与第 i虚拟中断具有亲和关系的 vCPU,该第 i虚拟中断对 应于该第 i物理中断, 该 X个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU 包括该 V个目标 vCPU, U为大于或等于 1且小于或等于 X的正整数, V为 大于或等于 1且小于或等于 Z的正整数。 302, 使用该第 n pCPU处理该第 i物理中断。
303, 根据该第 i物理中断, 确定该第 i虚拟中断。
304,从该 V个目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该 第 m vCPU执行该第 i虚拟中断, i、 j、 k、 m、 n为正整数。
可见, 本发明实施例中, 在第 j物理输入输出设备发生第 i物理中断的 情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个目标 pCPU为 与该第 i物理中断以及 V个目标 vCPU均具有亲和关系的 pCPU, 该 V个目 标 vCPU为被虚拟在该第 k VM上的与第 i虚拟中断具有亲和关系的 vCPU, 该第 i虚拟中断对应于该第 i物理中断,该 X个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU; 使用该第 n pCPU处理该第 i物理中 断; 根据该第 i物理中断, 确定该第 i虚拟中断; 从该 V个目标 vCPU中确 定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i虚拟中断, 从而本发明实施例的方法能够有效地避免因为 vCPU所亲和的 pCPU不是用 导致的 VM-Exit, 有效地减少上下文切换次数, 并且降低虚拟机对 pCPU的 干扰。
宿主机可以通过虚拟机管理程序实现图 3所示的方法。虚拟机管理程序 也可以称为虚拟机监视器(Virtual Machine Monitor, VMM )或超级监督者 ( hypervisor )。 典型的 VMM有 VMware ESX, XEN, KVM/Qemu等。
具体来说, pCPU与物理中断具有亲和关系是指, 该 pCPU能够处理该 物理中断。 vCPU与虚拟中断具有亲和关系是指, 该 vCPU能够处理该虚拟 中断。 pCPU与 vCPU具有亲和关系是指, 该 vCPU可以运行在该 pCPU上。 因此,根据该 U个目标 pCPU与该第 i物理中断的亲和关系,从该 U个目标 pCPU中确定该第 n pCPU。
可选的, 作为一个实施例, 该 U个目标 pCPU与该第 i物理中断的亲和 关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系是通过以下方式确定的: 确定该 V个目 标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU为被虚拟在 该第 k VM上的能够处理该第 i虚拟中断的 vCPU, 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行在该 U个目标 pCPU上, 其中 U等于 1, 确定对应于该第 i虚拟中断的第 i物理中断, 确定该第 i物理中断与该 U个 目标 pCPU的亲和关系, 其中该第 i物理中断能被该 U个目标 pCPU处理。 该 U个目标 pCPU与该第 i物理中断的亲和关系、该 U个目标 pCPU与该 V 个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关 系可以预先设置好并保存, 然后在发生物理中断的情况下可以根据保存的亲 和关系之间找到相应的 pCPU以及 vCPU处理物理中断和虚拟中断。 或者, 当该 U个目标 pCPU与该第 i物理中断的亲和关系、该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和 关系设置好的情况下, 可以根据这些亲和关系找到相应的 pCPU以及 vCPU 处理对应的物理中断和虚拟中断。 在此情况下, 当第 i物理中断发生时, 用 于处理对应于第 i物理中断的第 i虚拟中断的第 m vCPU运行在处理该第 i 物理中断的第 n pCPU上。
可选的, 作为另一个实施例, 该 U个目标 pCPU与该第 i物理中断的亲 和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目 标 vCPU与该第 i虚拟中断的亲和关系是通过以下方式确定的, 确定该 V个 目标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU为被虚拟 在该第 k VM上的能够处理该第 i虚拟中断的 vCPU,确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行在该多个目标 pCPU上, 其中 U为大于 1 且小于或等于 X的正整数, 确定对应于该第 i虚拟中断的第 i物理中断, 确 定该第 i物理中断与该 U个目标 pCPU的亲和关系, 其中该第 i物理中断能 被该 U个目标 pCPU处理。该 U个目标 pCPU与该第 i物理中断的亲和关系、 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU 与该第 i虚拟中断的亲和关系可以预先设置好并保存, 然后在发生物理中断 的情况下可以根据保存的亲和关系之间找到相应的 pCPU以及 vCPU处理物 理中断和虚拟中断。 或者, 当该 U个目标 pCPU与该第 i物理中断的亲和关 系、该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU 与该第 i虚拟中断的亲和关系设置好的情况下, 可以根据这些亲和关系找到 相应的 pCPU以及 vCPU处理对应的物理中断和虚拟中断。 在此情况下, 当 第 i物理中断发生时, 用于处理对应于第 i物理中断的第 i虚拟中断的第 m vCPU运行在有限个确定的 pCPU上而不是该物理硬件层中的任一个 pCPU 上, 并且有可能运行在处理该第 i物理中断的第 n pCPU上。
进一步,当该 V个目标 vCPU能够运行在该多个目标 pCPU上(换言之, 当该第 i物理中断与该 U个目标 pCPU的亲和关系为一对多的亲和关系)时, 该从该 V个目标 vCPU中确定第 m vCPU, 包括: 确定该第 n pCPU上是否 运行有该 V个目标 vCPU中的至少一个目标 vCPU, 在确定该第 n pCPU上 运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下, 确定该第 n pCPU上运行的一个目标 vCPU作为该第 m vCPU,在确定该第 n pCPU上没 有运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下,根据优先级 顺序,从该 V个目标 vCPU中确定一个目标 vCPU作为该第 m vCPU。此时, 如果用于处理虚拟中断的 vCPU运行在用于处理物理中断的 pCPU上, 就不 IPI导致的 VM-Exit。 该优先级顺序可以是预先设定的 V个目标 vCPU的优 先级。该优先级的选择也可以釆取 round-robin策略确定, 即保证每一个目标 vCPU被选中的概率是相同的。
进一步, 该确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少 一个目标 vCPU, 包括: 根据虚拟中断路由信息, 确定该第 n pCPU上是否 运行有该 V个目标 vCPU中的至少一个目标 vCPU, 其中该虚拟中断路由信 息包括该 U个目标 pCPU与运行在该 U个目标 pCPU上的目标 vCPU的对应 关系。 这样, Host可以方便快速地确定该第 m vCPU是否运行在该第 n pCU 上。
图 4是本发明实施例提供的虚拟中断、 物理中断、 vCPU以及 pCPU的 对应关系的示意图。 如图 4所示, 第 1号物理中断对应于第 1号虚拟中断。 第 1号虚拟中断与第 4号 vCPU具有亲和关系。第 4号 vCPU与第 3号 pCPU 具有亲和关系。 此时, 可以将第 3号 pCPU与第 1号物理中断绑定, 使得两 者具有亲和关系。 那么, 当第 1号物理中断发生时, 第 3号 pCPU就可以处 理该第 1号物理中断。 然后, 找到与第 1号物理中断对应的第 1号虚拟中断 以及用于处理第 1号虚拟中断的 vCPU。当第 4号 vCPU运行在第 3号 pCPU 上时, 可以直接使用该第 4号 vCPU处理与第 1号物理中断对应的第 1号虚 拟中断。这样,就不会发生由于运行 vCPU的 pCPU与发生物理中断的 pCPU 不同引起的额外的 IPI导致的 VM-Exit。
图 5是本发明实施例提供的另一虚拟中断、物理中断、 vCPU以及 pCPU 的对应关系的示意图。如图 5所示,第 1号物理中断对应于第 1号虚拟中断。 第 4号 vCPU、 第 5号 vCPU与第 3号 pCPU、 4号 pCPU均具有亲和关系。 换句话说, 第 4号 vCPU和 5号 vCPU可以运行在第 3号 pCPU上, 也可以 运行在第 4号 pCPU上。例如,在第一时刻,第 4号 vCPU运行在第 3号 pCPU 上, 第 5号 vCPU运行在第 4号 pCPU上。 在第二时刻, 第 4号 vCPU和第 5号 vCPU可以同时运行在第 3号 pCPU上。 此外, 第 4号 vCPU和第 5号 vCPU与第 1号虚拟中断具有亲和关系。 也就是说, 第 1号虚拟中断可以由 第 4号 vCPU或第 5号 vCPU处理。此时,可以将第 3号 pCPU和第 4号 pCPU 均与第 1号物理中断绑定, 使得两者具有亲和关系。 那么, 当第 1号物理中 断发生时, Host可以从第 3号 pCPU或第 4号 pCPU中选择一个 pCPU处理 该第 1号物理中断。 然后, Host找到与第 1号物理中断对应的第 1号虚拟中 断以及用于处理第 1号虚拟中断的 vCPU, 并使用该 vCPU处理第 1号虚拟 中断。 由于用于处理虚拟中断的 vCPU 可能会运行在用于处理物理中断的 不同引起的额外的 IPI导致的 VM-Exit。
图 6 是根据本发明提供的另一虚拟化平台处理中断方法的示意性流程 图。 图 6所示的方法可以应用于计算节点上,该计算节点包括: 物理硬件层、 运行在该物理硬件层之上的宿主机 Host, 运行在该 Host之上的 Y个虚拟机 VM、 运行在该 Host之上的 Y个虚拟主机 vhost内核线程、 该至少一个 VM 上被虚拟有虚拟硬件,其中,该物理硬件层包括 X个物理中央处理器 pCPU, 该虚拟硬件包括 Z个虚拟中央处理器 vCPU, X、 Υ、 Ζ为大于 1的正整数, 该 Υ个 VM中的每一个 VM包括一个半虚拟化驱动 virtio设备,该 Y个 VM 包括第 k VM,该第 k VM包括第 i virtio设备,该第 i virtio设备与该 Y个 vhost 内核线程中的第 j vhost内核线程对应, 该方法由该 Host执行。
601, 在该第 j vhost内核线程触发第 i vhost线程的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个目标 pCPU为与该第 i vhost线程以 及 V个目标 vCPU均具有亲和关系的 pCPU,该 V个目标 vCPU为被虚拟在 该第 k VM上的与第 i virtio设备的虚拟中断具有亲和关系的 vCPU, 该第 i virtio设备的虚拟中断对应于该第 i vhost线程, 该 X个 pCPU包括该 U个目 标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU, U为大于或等于 1且小于 或等于 X的正整数, V为大于或等于 1且小于或等于 Z的正整数。
602, 使用该第 n pCPU处理该第 i vhost线程。
603, 根据该第 i vhost线程, 确定该第 i virtio设备的虚拟中断。 604,从该 V个目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该 第 m vCPU执行该第 i virtio设备的虚拟中断, i、 j、 k、 m、 n为正整数。
本发明实施例中, 在该第 j vhost内核线程触发第 i vhost线程的情况下, 从 U个目标 pCPU中确定第 n pCPU,其中,该 U个目标 pCPU为与该第 i vhost 线程以及 V个目标 vCPU均具有亲和关系的 pCPU,该 V个目标 vCPU为被 虚拟在该第 k VM上的与第 i virtio设备的虚拟中断具有亲和关系的 vCPU, 该第 i virtio设备的虚拟中断对应于该第 i vhost线程, 该 X个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU; 使用该第 n pCPU 处理该第 i vhost线程; 根据该第 i vhost线程, 确定该第 i virtio设备的虚拟 中断; 从该 V个目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i virtio设备的虚拟中断, 可见通过上述技术方案能够有效 地避免因为 vCPU所亲和的 pCPU不是用于处理该 vCPU所处理的 virtio设 备的虚拟中断所对应的 vhost线程的 pCPU引起额外的 IPI导致的 VM-Exit, 有效地减少上下文切换次数, 并且降低虚拟机对 pCPU的干扰。
宿主机可以通过虚拟机管理程序实现图 6所示的方法。虚拟机管理程序 也可以称为虚拟机监视器 (Virtual Machine Monitor, VMM )或超级监督者 ( hypervisor )。 典型的 VMM有 VMware ESX, XEN, KVM/Qemu等。
具体来说, pCPU与 vhost线程具有亲和关系是指, 该 pCPU能够处理 该 vhost线程。 vCPU与 virtio设备的虚拟中断具有亲和关系是指, 该 vCPU 能够处理该 virtio设备的虚拟中断。 pCPU与 vCPU具有亲和关系是指, 该 vCPU可以运行在该 pCPU上。 因此, 根据该 U个目标 pCPU与该第 i物理 中断的亲和关系, 从该 U个目标 pCPU中确定该第 n pCPU。
可选的, 作为一个实施例, 该 U个目标 pCPU与该第 i vhost线程的亲 和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目 标 vCPU与该第 i virtio设备的虚拟中断的亲和关系是通过以下方式确定的: 确定该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系,其中该 V 个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i virtio设备的虚拟中 断的 vCPU, 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行在该 U个目标 pCPU上, 其中 U等于 1, 确定对应于该第 i virtio设备的虚拟中断 的第 i vhost线程, 确定该第 i vhost线程与该 U个目标 pCPU的亲和关系, 其中该第 i vhost线程能被该 U个目标 pCPU处理。 该 U个目标 pCPU与该 第 i vhost线程的亲和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和 关系以及该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系可以 预先设置好并保存, 然后在发生 vhost线程的情况下可以根据保存的亲和关 系之间找到相应的 pCPU以及 vCPU处理 vhost线程和 viritio设备的虚拟中 断。 或者, 当该 U个目标 pCPU与该第 i vhost线程的亲和关系, 该 U个目 标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系设置好的情况下, 可以根据这些亲和关系 找到相应的 pCPU以及 vCPU处理对应的 vhost线程和 virtio设备的虚拟中断。 在此情况下, 当第 i vhost线程发生时, 用于处理对应于第 i vhost线程的第 i virito设备的虚拟中断的第 m vCPU运行在处理该第 i vhost线程的第 n pCPU 上。
可选的, 作为另一个实施例, 该 U个目标 pCPU与该第 i vhost线程的 亲和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个 目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系是通过以下方式确定 的: 确定该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系, 其 中该 V个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i virtio设备的 虚拟中断的 vCPU, 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运 行在该多个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数, 确 定对应于该第 i virtio设备的虚拟中断的第 i vhost线程, 确定该第 i vhost线 程与该 U个目标 pCPU的亲和关系, 其中该第 i vhost线程能被该 U个目标 pCPU处理。该 U个目标 pCPU与该第 i vhost线程的亲和关系,该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i virtio 设备的虚拟中断的亲和关系可以预先设置好并保存, 然后在发生 vhost线程 的情况下可以根据保存的亲和关系之间找到相应的 pCPU 以及 vCPU处理 vhost线程和 viritio设备的虚拟中断。或者,当该 U个目标 pCPU与该第 i vhost 线程的亲和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及 该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系设置好的情况 下, 可以根据这些亲和关系找到相应的 pCPU以及 vCPU处理对应的 vhost 线程和 virtio设备的虚拟中断。 在此情况下, 当第 i vhost线程发生时, 用于 处理对应于第 i vhost线程的的第 i virito设备的虚拟中断的第 m vCPU运行 在有限个确定的 pCPU上而不是该物理硬件层中的任一个 pCPU上, 并且有 可能运行在处理该第 i vhost线程的第 n pCPU上。
进一步,在该 V个目标 vCPU能够运行在该多个目标 pCPU上的情况下 (换言之, 当该第 i vhost线程与该 U个目标 pCPU的亲和关系为一对多的 亲和关系),该从该 V个目标 vCPU中确定第 m vCPU,包括:确定该第 n pCPU 上是否运行有该 V个目标 vCPU 中的至少一个目标 vCPU, 在确定该第 n pCPU上运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下, 确定 该第 n pCPU上运行的一个目标 vCPU作为该第 m vCPU,在确定该第 n pCPU 上没有运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下,根据优 先级顺序, 从该 V个目标 vCPU中确定一个目标 vCPU作为该第 m vCPU。 此时, 如果用于处理 virito设备的虚拟中断的 vCPU运行在用于处理 vhost 线程的 pCPU上, 就不会发生由于运行 vCPU的 pCPU与处理 vhost线程的 pCPU不同引起的额外的 IPI导致的 VM-Exit。该优先级顺序可以是预先设定 的 V个目标 vCPU的优先级。 该优先级的选择也可以釆取 round-robin策略 确定, 即保证每一个目标 vCPU被选中的概率是相同的。
进一步, 该确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少 一个目标 vCPU, 包括: 根据 virtio设备的虚拟中断路由信息, 确定该第 n pCPU上是否运行有该 V个目标 vCPU 中的至少一个目标 vCPU, 其中该 virtio设备的虚拟中断路由信息包括该 U个目标 pCPU与运行在该 U个目标 pCPU上的目标 vCPU的对应关系。 这样, Host可以方便快速地确定该第 m vCPU是否运行在该第 n pCU上。
图 7是本发明实施例提供的 virtio设备的虚拟中断、 vhost线程、 vCPU 以及 pCPU的对应关系的示意图。 如图 7所示, 第 1号 vhost线程对应于第 1号 virtio设备的虚拟中断。第 4号 vCPU与第 1号 virtio设备的虚拟中断具 有亲和关系。 第 3号 pCPU与第 4号 vCPU具有亲和关系。 此时, 可以将第 1号 vhost线程与第 3号 pCPU绑定, 使得两者具有亲和关系。 那么, 当第 1 号 vhost线程发生时, 第 3号 pCPU就可以处理该第 1号 vhost线程。 然后, 找到与第 1号 vhost线程对应的第 1号 virtio设备的虚拟中断以及用于处理 第 1号 virtio设备的虚拟中断的 vCPU。 当第 4号 vCPU运行在第 3号 pCPU 上时, 可以直接使用该第 4号 vCPU处理与第 1号 vhost线程对应的第 1号 virtio设备的虚拟中断。 这样, 就不会发生由于运行 vCPU的 pCPU与发生 vhost线程的 pCPU不同引起的额外的 IPI导致的 VM-Exit。 图 8是本发明实施例提供的另一 virtio设备的虚拟中断、 vhost线程、 vCPU以及 pCPU的对应关系的示意图。 如图 8所示, 第 1号 vhost线程对 应于第 1号 virtio设备的虚拟中断。第 3号 pCPU、 4号 pCPU与第 4号 vCPU、 5号 vCPU均具有亲和关系。 换句话说, 第 4号 vCPU和 5号 vCPU可以运 行在第 3号 pCPU上, 也可以运行在第 4号 pCPU上。 例如, 在第一时刻, 第 4号 vCPU运行在第 3号 pCPU上,第 5号 vCPU运行在第 4号 pCPU上。 在第二时刻,第 4号 vCPU和第 5号 vCPU可以同时运行在第 3号 pCPU上。 此外, 第 4号 vCPU和第 5号 vCPU与第 1号 virtio设备的虚拟中断具有亲 和关系。 也就是说, 第 1号 virtio设备的虚拟中断可以由第 4号 vCPU或第 5号 vCPU处理。此时,可以将第 3号 pCPU和第 4号 pCPU均与第 1号 vhost 线程绑定,使得两者具有亲和关系。那么, 当第 1号 vhost线程发生时, Host 可以从第 3号 pCPU或第 4号 pCPU中选择一个 pCPU处理该第 1号 vhost 线程。 然后, Host找到与第 1号 vhost线程对应的第 1号 virtio设备的虚拟 中断以及用于处理第 1号 virtio设备的虚拟中断的 vCPU, 并使用该 vCPU 处理第 1号 virtio设备的虚拟中断。 由于用于处理 virtio设备的虚拟中断的 vCPU可能会运行在用于处理 vhost线程的 pCPU上, 因此就不会发生由于 运行 vCPU的 pCPU与发生 vhost线程的 pCPU不同引起的额外的 IPI导致的 VM-Exito
图 9是根据本发明实施例提供的宿主机 Host的结构框图。 图 9所示的 Host 900能够执行图 3所示的各个步骤。具体来说,该 Host应用于计算节点 上, 该计算节点包括: 物理硬件层、 运行在该物理硬件层之上的该 Host、 运 行在该 Host之上的至少一个虚拟机 VM、 该至少一个 VM上被虚拟有虚拟 硬件, 其中, 该物理硬件层包括 X个物理中央处理器 pCPU和 Y个物理输 入输出设备, 该虚拟硬件包括 Z个虚拟中央处理器 vCPU, X、 Υ、 Ζ为大于 1的正整数, 该 Υ个物理输入输出设备包括第 j物理输入输出设备, 该至少 一个 VM包括第 k VM , 该第 j物理输入输出设备直通该第 k VM , 该 Host 包括第一确定单元 901、 第二调用单元 902、 第三确定单元 903和第四确定 单元 904。
第一确定单元 901, 用于在该第 j物理输入输出设备发生第 i物理中断 的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个目标 pCPU 为与该第 i物理中断以及 V个目标 vCPU均具有亲和关系的 pCPU, 该 V个 目标 vCPU 为被虚拟在该第 k VM 上的与第 i虚拟中断具有亲和关系的 vCPU, 该第 i虚拟中断对应于该第 i物理中断, 该 X个 pCPU包括该 U个 目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU, U为大于或等于 1且小 于或等于 X的正整数, V为大于或等于 1且小于或等于 Z的正整数。
第二调用单元 902, 用于使用该第 n pCPU处理该第 i物理中断。
第三确定单元 903, 用于根据该第 i物理中断, 确定该第 i虚拟中断。 第四确定单元 904, 用于从该 V个目标 vCPU中确定第 m vCPU, 以便 于该第 k VM使用该第 m vCPU执行该第 i虚拟中断, i、 j、 k、 m、 n为正整 数。
可见, 本发明实施例的 Host中, 在第 j物理输入输出设备发生第 i物理 中断的情况下,从 U个目标 pCPU中确定第 n pCPU,其中,该 U个目标 pCPU 为与该第 i物理中断以及 V个目标 vCPU均具有亲和关系的 pCPU, 该 V个 目标 vCPU 为被虚拟在该第 k VM 上的与第 i虚拟中断具有亲和关系的 vCPU, 该第 i虚拟中断对应于该第 i物理中断, 该 X个 pCPU包括该 U个 目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU; 使用该第 n pCPU处理 该第 i物理中断; 根据该第 i物理中断, 确定该第 i虚拟中断; 从该 V个目 标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i 虚拟中断,从而图 9所示的 Host能够有效地避免因为 vCPU所亲和的 pCPU 不是用于处理该 vCPU所处理的虚拟中断所对应的物理中断的 pCPU引起额 外的 IPI导致的 VM-Exit, 有效地减少上下文切换次数, 并且降低虚拟机对 pCPU的干扰。
可选的, 作为一个实施例, 第一确定单元 901, 还用于确定该 V个目标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU为被虚拟在该 第 k VM上的能够处理该第 i虚拟中断的 vCPU; 确定该 U个目标 pCPU,其 中该 V个目标 vCPU能够运行在该 U个目标 pCPU上, 其中 U等于 1 ; 确 定对应于该第 i虚拟中断的第 i物理中断; 确定该第 i物理中断与该 U个目 标 pCPU的亲和关系, 其中该第 i物理中断能被该 U个目标 pCPU处理。 这 样, 该 U个目标 pCPU与该第 i物理中断的亲和关系, 该 U个目标 pCPU与 该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲 和关系是就可以被确定好。 在此情况下, 当第 i物理中断发生时, 用于处理 对应于第 i物理中断的第 i虚拟中断的第 m vCPU运行在处理该第 i物理中 断的第 n pCPU上。
可选的, 作为另一个实施例, 第一确定单元 901, 还用于确定该 V个目 标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU为被虚拟在 该第 k VM上的能够处理该第 i虚拟中断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行在该多个目标 pCPU上, 其中 U为大于 1 且小于或等于 X的正整数; 确定对应于该第 i虚拟中断的第 i物理中断; 确 定该第 i物理中断与该 U个目标 pCPU的亲和关系, 其中该第 i物理中断能 被该 U个目标 pCPU处理。 这样, 该 U个目标 pCPU与该第 i物理中断的亲 和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目 标 vCPU与该第 i虚拟中断的亲和关系是就可以被确定好。 在此情况下, 当 第 i物理中断发生时, 用于处理对应于第 i物理中断的第 i虚拟中断的第 m vCPU运行在有限个确定的 pCPU上而不是该物理硬件层中的任一个 pCPU 上, 并且有可能运行在处理该第 i物理中断的第 n pCPU上。
进一步,当该 V个目标 vCPU能够运行在该多个目标 pCPU上(换言之, 当该第 i物理中断与该 U个目标 pCPU的亲和关系为一对多的亲和关系)时, 第四确定单元 904, 具体用于用于确定该第 n pCPU上是否运行有该 V个目 标 vCPU中的至少一个目标 vCPU; 在确定该第 n pCPU上运行有该 V个目 标 vCPU中的至少一个目标 vCPU的情况下, 确定该第 n pCPU上运行的一 个目标 vCPU作为该第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行 该第 i虚拟中断;或者,在确定该第 n pCPU上没有运行有该 V个目标 vCPU 中的至少一个目标 vCPU的情况下, 根据优先级顺序, 从该 V个目标 vCPU 中确定一个目标 vCPU作为该第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i虚拟中断。 此时, 如果用于处理虚拟中断的 vCPU运行在 用于处理物理中断的 pCPU上, 就不会发生由于运行 vCPU的 pCPU与发生 物理中断的 pCPU不同引起的额外的 IPI导致的 VM-Exit。 该优先级顺序可 以是预先设定的 V 个目标 vCPU 的优先级。 该优先级的选择也可以釆取 round-robin策略确定, 即保证每一个目标 vCPU被选中的概率是相同的, 从 而能最大限度地避免因为 vCPU所亲和的 pCPU不是用于处理该 vCPU所处 理的虚拟中断所对应的物理中断的 pCPU引起额外的 IPI导致的 VM-Exit, 有效地减少上下文切换次数, 并且降低虚拟机对 pCPU的干扰。
进一步, 在确定该第 n pCPU上是否运行该 V个目标 vCPU中的至少一 个目标 vCPU的方面, 第四确定单元 904,具体用于根据虚拟中断路由信息, 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目标 vCPU, 其中该虚拟中断路由信息包括该 U个目标 pCPU与运行在该 U个目标 pCPU 上的目标 vCPU的对应关系。 这样, Host可以方便快速地确定该第 m vCPU 是否运行在该第 n pCU上。
图 10是根据本发明实施例提供的另一宿主机 Host的结构框图。 图 10 所示的 Host 1000能够执行图 6所示的各个步骤。 Host 1000应用于计算节点 上, 该计算节点包括: 物理硬件层、 运行在该物理硬件层之上的该 Host、 运 行在该 Host之上的 Y个虚拟机 VM、 运行在该 Host之上的 Y个虚拟主机 vhost内核线程、 该至少一个 VM上被虚拟有虚拟硬件, 其中, 该物理硬件 层包括 X个物理中央处理器 pCPU, 该虚拟硬件包括 Z个虚拟中央处理器 vCPU, X、 Y、 Z为大于 1的正整数, 该 Υ个 VM中的每一个 VM包括一个 半虚拟化驱动 virtio设备,该 Y个 VM包括第 k VM,该第 k VM包括第 i virtio 设备,该第 i virtio设备与该 Y个 vhost内核线程中的第 j vhost内核线程对应, 该 Host包括第一确定单元 1001、 第二调用单元 1002、 第三确定单元 1003 和第四确定单元 1005。
第一确定单元 1001, 用于在该第 j vhost内核线程触发第 i vhost线程的 情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个目标 pCPU为 与该第 i vhost线程以及 V个目标 vCPU均具有亲和关系的 pCPU,该 V个目 标 vCPU为被虚拟在该第 k VM上的与第 i virtio设备的虚拟中断具有亲和关 系的 vCPU, 该第 i virtio设备的虚拟中断对应于该第 i vhost线程, 该 X个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU, U为 大于或等于 1且小于或等于 X的正整数, V为大于或等于 1且小于或等于 Z 的正整数;
第二调用单元 1002, 用于使用该第 n pCPU处理该第 i vhost线程; 第三确定单元 1003, 还用于根据该第 i vhost线程, 确定该第 i virtio设 备的虚拟中断;
第四确定单元 1004, 还用于从该 V个目标 vCPU中确定第 m vCPU, 以 便于该第 k VM使用该第 m vCPU执行该第 i virtio设备的虚拟中断, i、 j、 k、 m、 n为正整数。
可见, 本发明实施例的宿主机 Host中, 在该第 j vhost内核线程触发第 i vhost线程的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个 目标 pCPU为与该第 i vhost线程以及 V个目标 vCPU均具有亲和关系的 pCPU, 该 V个目标 vCPU为被虚拟在该第 k VM上的与第 i virtio设备的虚 拟中断具有亲和关系的 vCPU, 该第 i virtio设备的虚拟中断对应于该第 i vhost线程, 该 X个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V 个目标 vCPU; 使用该第 n pCPU处理该第 i vhost线程; 根据该第 i vhost线 程,确定该第 i virtio设备的虚拟中断;从该 V个目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i virtio设备的虚拟中断, 从而 图 10所示的 Host能够有效地避免因为 vCPU所亲和的 pCPU不是用于处理 该 vCPU所处理的 virtio设备的虚拟中断所对应的 vhost线程的 pCPU引起额 夕卜的 IPI导致的 VM-Exit, 有效地减少上下文切换次数, 并且降低虚拟机对 pCPU的干扰。
可选的, 作为一个实施例, 第一确定单元 1001, 还用于确定该 V个目 标 vCPU与该第 i virtio设备的虚拟中断的亲和关系,其中该 V个目标 vCPU 为被虚拟在该第 k VM上的能够处理该第 i virtio设备的虚拟中断的 vCPU; 确定该 U个目标 pCPU,其中该 V个目标 vCPU能够运行在该 U个目标 pCPU 上, 其中 U等于 1 ; 确定对应于该第 i virtio设备的虚拟中断的第 i vhost线 程;确定该第 i vhost线程与该 U个目标 pCPU的亲和关系,其中该第 i vhost 线程能被该 U个目标 pCPU处理。 该 U个目标 pCPU与该第 i vhost线程的 亲和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个 目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系可以预先设置好并保 存, 然后在发生 vhost线程的情况下可以根据保存的亲和关系之间找到相应 的 pCPU以及 vCPU处理 vhost线程和 viritio设备的虚拟中断。 或者, 当该 U个目标 pCPU与该第 i vhost线程的亲和关系, 该 U个目标 pCPU与该 V 个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i virtio设备的虚拟 中断的亲和关系设置好的情况下, 可以根据这些亲和关系找到相应的 pCPU 以及 vCPU处理对应的 vhost线程和 virtio设备的虚拟中断。在此情况下, 当 第 i vhost线程发生时, 用于处理对应于第 i vhost线程的第 i virito设备的虚 拟中断的第 m vCPU运行在处理该第 i vhost线程的第 n pCPU上。
可选的, 作为另一实施例, 第一确定单元 1001, 还用于确定该 V个目 标 vCPU与该第 i virtio设备的虚拟中断的亲和关系,其中该 V个目标 vCPU 为被虚拟在该第 k VM上的能够处理该第 i virtio设备的虚拟中断的 vCPU。; 确定该 U个目标 pCPU,其中该 V个目标 vCPU能够运行在该多个目标 pCPU 上, 其中 U为大于 1且小于或等于 X的正整数; 确定对应于该第 i virtio设 备的虚拟中断的第 i vhost线程; 确定该第 i vhost线程与该 U个目标 pCPU 的亲和关系, 其中该第 i vhost线程能被该 U个目标 pCPU处理。 该 U个目 标 pCPU与该第 i vhost线程的亲和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲 和关系可以预先设置好并保存, 然后在发生 vhost线程的情况下可以根据保 存的亲和关系之间找到相应的 pCPU以及 vCPU处理 vhost线程和 viritio设 备的虚拟中断。 或者, 当该 U个目标 pCPU与该第 i vhost线程的亲和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU 与该第 i virtio设备的虚拟中断的亲和关系设置好的情况下,可以根据这些亲 和关系找到相应的 pCPU以及 vCPU处理对应的 vhost线程和 virtio设备的虚 拟中断。 在此情况下, 当第 i vhost线程发生时, 用于处理对应于第 i vhost 线程的的第 i virito设备的虚拟中断的第 m vCPU运行在有限个确定的 pCPU 上而不是该物理硬件层中的任一个 pCPU上, 并且有可能运行在处理该第 i vhost线程的第 n pCPU上。
进一步,在该 V个目标 vCPU能够运行在该多个目标 pCPU上的情况下 (换言之, 当该第 i vhost线程与该 U个目标 pCPU的亲和关系为一对多的 亲和关系), 第四确定单元 1004, 具体用于确定该第 n pCPU上是否运行有 该 V个目标 vCPU中的至少一个目标 vCPU; 在确定该第 n pCPU上运行有 该 V个目标 vCPU中的至少一个目标 vCPU的情况下, 确定该第 n pCPU上 运行的一个目标 vCPU作为该第 m vCPU, 以便于所述第 k VM使用所述第 m vCPU执行所述第 i virtio设备的虚拟中断; 或者, 在确定该第 n pCPU上 没有运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下,根据优先 级顺序, 从该 V个目标 vCPU中确定一个目标 vCPU作为该第 m vCPU, 以 便于所述第 k VM使用所述第 m vCPU执行所述第 i virtio设备的虚拟中断。 此时, 如果用于处理 virito设备的虚拟中断的 vCPU运行在用于处理 vhost 线程的 pCPU上, 就不会发生由于运行 vCPU的 pCPU与处理 vhost线程的 pCPU不同引起的额外的 IPI导致的 VM-Exit。该优先级顺序可以是预先设定 的 V个目标 vCPU的优先级。 该优先级的选择也可以釆取 round-robin策略 确定, 即保证每一个目标 vCPU被选中的概率是相同的, 从而能最大限度地 避免因为 vCPU所亲和的 pCPU不是用于处理该 vCPU所处理的虚拟中断所 对应的物理中断的 pCPU引起额外的 IPI导致的 VM-Exit, 有效地减少上下 文切换次数, 并且降低虚拟机对 pCPU的干扰。
进一步, 在确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少 一个目标 vCPU的方面, 第四确定单元 1004, 具体用于根据 virtio设备的虚 拟中断路由信息, 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至 少一个目标 VCPU, 其中该 virtio设备的虚拟中断路由信息包括该 U个目标 pCPU与运行在该 U个目标 pCPU上的目标 vCPU的对应关系。 这样, Host 可以方便快速地确定该第 m vCPU是否运行在该第 n pCU上。 这样, Host 可以方便快速地确定该第 m vCPU是否运行在该第 n pCU上。
图 11是根据本发明实施例提供的计算节点的结构框图。 图 11所示的计 算节点能够执行图 3所示的各个步骤。 该计算节点包括: Y个物理输入输出 设备 1101, 其中该 Y个物理输入输出设备包括第 j物理输入输出设备, X个 物理中央处理器 pCPU 1102,与该 X个物理中央处理器 pCPU和 Y个物理输 入输出设备分别连接的存储器 1103, 其中该 X个物理中央处理器 pCPU中 的一个或多个 pCPU用于调用或执行该存储器 1103中存储的操作指令、 宿 主机 Host, 至少一个虚拟机 VM以及该至少一个虚拟机 VM上被虚拟的虚 拟硬件, 其中该虚拟硬件包括 Z个虚拟中央处理器 vCPU, 该至少一个 VM 包括第 k VM, 该第 j物理输入输出设备直通该第 k VM, 其中, 该 Host用 于:
在该第 j物理输入输出设备发生第 i物理中断的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个目标 pCPU为与该第 i物理中断以及 V个目标 vCPU均具有亲和关系的 pCPU, 该 V个目标 vCPU为被虚拟在该 第 k VM上的与第 i虚拟中断具有亲和关系的 vCPU,该第 i虚拟中断对应于 该第 i物理中断, 该 X个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括 该 V个目标 vCPU;
使用该第 n pCPU处理该第 i物理中断;
根据该第 i物理中断, 确定该第 i虚拟中断;
从该 V个目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i虚拟中断, 其中 X、 Y、 Ζ为大于 1的正整数, U为大于或 等于 1且小于或等于 X的正整数, V为大于或等于 1且小于或等于 Z的正 整数, i、 j、 k、 m、 n为正整数。
可见, 本发明实施例的计算节点中, 在第 j物理输入输出设备发生第 i 物理中断的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 该 U个目 标 pCPU为与该第 i物理中断以及 V个目标 vCPU均具有亲和关系的 pCPU, 该 V个目标 vCPU为被虚拟在该第 k VM上的与第 i虚拟中断具有亲和关系 的 vCPU, 该第 i虚拟中断对应于该第 i物理中断, 该 X个 pCPU包括该 U 个目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU; 使用该第 n pCPU处 理该第 i物理中断; 根据该第 i物理中断, 确定该第 i虚拟中断; 从该 V个 目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该 第 i虚拟中断,从而图 11所示的计算节点能够有效地避免因为 vCPU所亲和 的 pCPU 不是用于处理该 vCPU 所处理的虚拟中断所对应的物理中断的 pCPU引起额外的 IPI导致的 VM-Exit,有效地减少上下文切换次数,并且降 低虚拟机对 pCPU的干扰。
可选的, 作为一个实施例, 该 Host还用于通过以下方式确定该 U个目 标 pCPU与该第 i物理中断的亲和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系: 确 定该 V个目标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU 为被虚拟在该第 k VM上的能够处理该第 i虚拟中断的 vCPU; 确定该 U个 目标 pCPU, 其中该 V个目标 vCPU能够运行在该 U个目标 pCPU上, 其中 U等于 1 ; 确定对应于该第 i虚拟中断的第 i物理中断; 确定该第 i物理中断 与该 U个目标 pCPU的亲和关系,其中该第 i物理中断能被该 U个目标 pCPU 处理。 该 U个目标 pCPU与该第 i物理中断的亲和关系、 该 U个目标 pCPU 与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的 亲和关系可以预先设置好并保存, 然后在发生物理中断的情况下可以根据保 存的亲和关系之间找到相应的 pCPU以及 vCPU处理物理中断和虚拟中断。 或者,当该 U个目标 pCPU与该第 i物理中断的亲和关系、该 U个目标 pCPU 与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的 亲和关系设置好的情况下, 可以根据这些亲和关系找到相应的 pCPU 以及 vCPU处理对应的物理中断和虚拟中断。 在此情况下, 当第 i物理中断发生 时, 用于处理对应于第 i物理中断的第 i虚拟中断的第 m vCPU运行在处理 该第 i物理中断的第 n pCPU上。
可选的, 作为另一个实施例, 该 Host还用于通过以下方式确定该 U个 目标 pCPU与该第 i物理中断的亲和关系,该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系: 确 定该 V个目标 vCPU与该第 i虚拟中断的亲和关系, 其中该 V个目标 vCPU 为被虚拟在该第 k VM上的能够处理该第 i虚拟中断的 vCPU; 确定该 U个 目标 pCPU, 其中该 V个目标 vCPU能够运行在该多个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数; 确定对应于该第 i虚拟中断的第 i物 理中断; 确定该第 i物理中断与该 U个目标 pCPU的亲和关系, 其中该第 i 物理中断能被该 U个目标 pCPU处理。该 U个目标 pCPU与该第 i物理中断 的亲和关系、 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V 个目标 vCPU与该第 i虚拟中断的亲和关系可以预先设置好并保存, 然后在 发生物理中断的情况下可以根据保存的亲和关系之间找到相应的 pCPU以及 vCPU处理物理中断和虚拟中断。 或者, 当该 U个目标 pCPU与该第 i物理 中断的亲和关系、 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及 该 V个目标 vCPU与该第 i虚拟中断的亲和关系设置好的情况下, 可以根据 这些亲和关系找到相应的 pCPU 以及 vCPU处理对应的物理中断和虚拟中 断。 在此情况下, 当第 i物理中断发生时, 用于处理对应于第 i物理中断的 第 i虚拟中断的第 m vCPU运行在有限个确定的 pCPU上而不是该物理硬件 层中的任一个 pCPU上,并且有可能运行在处理该第 i物理中断的第 n pCPU 上。
进一步,当该 V个目标 vCPU能够运行在该多个目标 pCPU上(换言之, 当该第 i物理中断与该 U个目标 pCPU的亲和关系为一对多的亲和关系)时, 在从该 V个目标 vCPU中确定第 m vCPU的方面, 该 Host具体用于: 确定 该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目标 vCPU; 在 确定该第 n pCPU上运行有该 V个目标 vCPU中的至少一个目标 vCPU的情 况下, 确定该第 n pCPU上运行的一个目标 vCPU作为该第 m vCPU; 在确 定该第 n pCPU上没有运行有该 V个目标 vCPU中的至少一个目标 vCPU的 情况下, 根据优先级顺序, 从该 V个目标 vCPU中确定一个目标 vCPU作为 该第 m vCPU。 此时, 如果用于处理虚拟中断的 vCPU运行在用于处理物理 中断的 pCPU上, 就不会发生由于运行 vCPU的 pCPU与发生物理中断的 pCPU不同引起的额外的 IPI导致的 VM-Exit。该优先级顺序可以是预先设定 的 V个目标 vCPU的优先级。 该优先级的选择也可以釆取 round-robin策略 确定, 即保证每一个目标 vCPU被选中的概率是相同的, 从而能最大限度地 避免因为 vCPU所亲和的 pCPU不是用于处理该 vCPU所处理的虚拟中断所 对应的物理中断的 pCPU弓 I起额外的 IPI导致的 VM-Exit, 有效地减少上下 文切换次数, 并且降低虚拟机对 pCPU的干扰。
进一步, 在确定该第 n pCPU上是否运行该 V个目标 vCPU中的至少一 个目标 vCPU的方面, 该 Host具体用于: 根据虚拟中断路由信息, 确定该 第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目标 vCPU, 其中 该虚拟中断路由信息包括该 U个目标 pCPU与运行在该 U个目标 pCPU上 的目标 vCPU的对应关系。 这样, Host可以方便快速地确定该第 m vCPU是 否运行在该第 n pCU上。
图 12是根据本发明实施例提供的另一计算节点的结构框图。 图 12所示 的计算节点 1200能够执行图 6所示的各个步骤。 计算节点 1200包括: X个 物理中央处理器 pCPU 1201,与该 X个物理中央处理器 pCPU连接的存储器 1202,其中该 X个物理中央处理器 pCPU中的一个或多个 pCPU用于调用或 执行该存储器 1202中存储的操作指令、 宿主机 Host、 Y个虚拟机 VM、 Y 个虚拟主机 vhost内核线程以及该至少一个虚拟机 VM上被虚拟的虚拟硬件, 其中该虚拟硬件包括 Z个虚拟中央处理器 vCPU, 该 Y个 VM中的每一个 VM包括一个半虚拟化驱动 virtio设备,该 Y个 VM包括第 k VM,该第 k VM 包括第 i virtio设备,该第 i virtio设备与该 Y个 vhost内核线程中的第 j vhost 内核线程对应, 其中, 该 Host用于:
在该第 j vhost内核线程触发第 i vhost线程的情况下,从 U个目标 pCPU 中确定第 n pCPU, 其中, 该 U个目标 pCPU为与该第 i vhost线程以及 V个 目标 vCPU均具有亲和关系的 pCPU, 该 V个目标 vCPU为被虚拟在该第 k VM上的与第 i virtio设备的虚拟中断具有亲和关系的 vCPU, 该第 i virtio设 备的虚拟中断对应于该第 i vhost线程,该 X个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU;
使用该第 n pCPU处理该第 i vhost线程;
根据该第 i vhost线程, 确定该第 i virtio设备的虚拟中断;
从该 V个目标 vCPU中确定第 m vCPU, 以便于该第 k VM使用该第 m vCPU执行该第 i virtio设备的虚拟中断, 其中 X、 Y、 Ζ为大于 1的正整数, U为大于或等于 1且小于或等于 X的正整数, V为大于或等于 1且小于或等 于 Ζ的正整数, i、 j、 k、 m、 n为正整数。
本发明实施例的计算节点中, 在该第 j vhost内核线程触发第 i vhost线 程的情况下,从 U个目标 pCPU中确定第 n pCPU,其中,该 U个目标 pCPU 为与该第 i vhost线程以及 V个目标 vCPU均具有亲和关系的 pCPU,该 V个 目标 vCPU为被虚拟在该第 k VM上的与第 i virtio设备的虚拟中断具有亲和 关系的 vCPU, 该第 i virtio设备的虚拟中断对应于该第 i vhost线程, 该 X 个 pCPU包括该 U个目标 pCPU, 该 Z个 vCPU包括该 V个目标 vCPU; 使 用该第 n pCPU处理该第 i vhost线程;根据该第 i vhost线程,确定该第 i virtio 设备的虚拟中断;从该 V个目标 vCPU中确定第 m vCPU,以便于该第 k VM 使用该第 m vCPU执行该第 i virtio设备的虚拟中断, 从而图 12所示的计算 节点能够有效地避免因为 vCPU所亲和的 pCPU不是用于处理该 vCPU所处 理的 virtio设备的虚拟中断所对应的 vhost线程的 pCPU引起额外的 IPI导致 的 VM-Exit,有效地减少上下文切换次数,并且降低虚拟机对 pCPU的干扰。
可选的, 作为一个实施例, 该 Host还用于通过以下方式确定该 U个目 标 pCPU与该第 i物理中断的亲和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系: 确 定该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系, 其中该 V 个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i virtio设备的虚拟中 断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行在该 U个目标 pCPU上, 其中 U等于 1; 确定对应于该第 i virtio设备的虚拟中断 的第 i vhost线程; 确定该第 i vhost线程与该 U个目标 pCPU的亲和关系, 其中该第 i vhost线程能被该 U个目标 pCPU处理。 该 U个目标 pCPU与该 第 i vhost线程的亲和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和 关系以及该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系可以 预先设置好并保存, 然后在发生 vhost线程的情况下可以根据保存的亲和关 系之间找到相应的 pCPU以及 vCPU处理 vhost线程和 viritio设备的虚拟中 断。 或者, 当该 U个目标 pCPU与该第 i vhost线程的亲和关系, 该 U个目 标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系设置好的情况下, 可以根据这些亲和关系 找到相应的 pCPU以及 vCPU处理对应的 vhost线程和 virtio设备的虚拟中断。 在此情况下, 当第 i vhost线程发生时, 用于处理对应于第 i vhost线程的第 i virito设备的虚拟中断的第 m vCPU运行在处理该第 i vhost线程的第 n pCPU 上。
可选的, 作为另一个实施例, 该 Host还用于通过以下方式确定该 U个 目标 pCPU与该第 i物理中断的亲和关系,该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i虚拟中断的亲和关系: 确 定该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系, 其中该 V 个目标 vCPU为被虚拟在该第 k VM上的能够处理该第 i virtio设备的虚拟中 断的 vCPU; 确定该 U个目标 pCPU, 其中该 V个目标 vCPU能够运行在该 多个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数; 确定对应 于该第 i virtio设备的虚拟中断的第 i vhost线程; 确定该第 i vhost线程与该 U个目标 pCPU的亲和关系,其中该第 i vhost线程能被该 U个目标 pCPU处 理。 该 U个目标 pCPU与该第 i vhost线程的亲和关系, 该 U个目标 pCPU 与该 V个目标 vCPU的亲和关系以及该 V个目标 vCPU与该第 i virtio设备 的虚拟中断的亲和关系可以预先设置好并保存, 然后在发生 vhost线程的情 况下可以根据保存的亲和关系之间找到相应的 pCPU以及 vCPU处理 vhost 线程和 viritio设备的虚拟中断。 或者, 当该 U个目标 pCPU与该第 i vhost 线程的亲和关系, 该 U个目标 pCPU与该 V个目标 vCPU的亲和关系以及 该 V个目标 vCPU与该第 i virtio设备的虚拟中断的亲和关系设置好的情况 下, 可以根据这些亲和关系找到相应的 pCPU以及 vCPU处理对应的 vhost 线程和 virtio设备的虚拟中断。 在此情况下, 当第 i vhost线程发生时, 用于 处理对应于第 i vhost线程的的第 i virito设备的虚拟中断的第 m vCPU运行 在有限个确定的 pCPU上而不是该物理硬件层中的任一个 pCPU上, 并且有 可能运行在处理该第 i vhost线程的第 n pCPU上。
进一步,在该 V个目标 vCPU能够运行在该多个目标 pCPU上的情况下 (换言之, 当该第 i vhost线程与该 U个目标 pCPU的亲和关系为一对多的 亲和关系), 在从该 V个目标 vCPU中确定第 m vCPU的方面, 该 Host具体 用于: 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目标 vCPU; 在确定该第 n pCPU上运行有该 V个目标 vCPU中的至少一个目标 vCPU的情况下, 确定该第 n pCPU上运行的一个目标 vCPU作为该第 m vCPU, 以便于所述第 k VM使用所述第 m vCPU执行所述第 i virtio设备的 虚拟中断; 或者, 在确定该第 n pCPU上没有运行有该 V个目标 vCPU中的 至少一个目标 vCPU的情况下, 根据优先级顺序, 从该 V个目标 vCPU中确 定一个目标 vCPU作为该第 m vCPU, 以便于所述第 k VM使用所述第 m vCPU执行所述第 i virtio设备的虚拟中断。 此时, 如果用于处理 virito设备 的虚拟中断的 vCPU运行在用于处理 vhost线程的 pCPU上, 就不会发生由 于运行 vCPU的 pCPU与处理 vhost线程的 pCPU不同引起的额外的 IPI导致 优先级的选择也可以釆取 round-robin策略确定,即保证每一个目标 vCPU被 选中的概率是相同的, 从而能最大限度地避免因为 vCPU所亲和的 pCPU不 是用于处理该 vCPU所处理的虚拟中断所对应的物理中断的 pCPU引起额外 的 IPI导致的 VM-Exit,有效地减少上下文切换次数,并且降低虚拟机对 pCPU 的干扰。
进一步, 在确定该第 n pCPU上是否运行该 V个目标 vCPU中的至少一 个目标 vCPU的方面, 该 Host具体用于: 根据 virtio设备的虚拟中断路由信 息, 确定该第 n pCPU上是否运行有该 V个目标 vCPU中的至少一个目标 vCPU, 其中该 virtio设备的虚拟中断路由信息包括该 U个目标 pCPU与运 行在该 U个目标 pCPU上的目标 vCPU的对应关系。这样, Host可以方便快 速地确定该第 m vCPU是否运行在该第 n pCU上。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流 程, 是可以通过计算机程序来指令相关的硬件(例如处理器)来完成, 所述 的程序可存储于一计算机可读取存储介质中, 该程序在执行时, 可包括如上 述各方法的实施例的流程。 其中, 所述的存储介质可为磁碟、 光盘、 只读存 储记忆体 ( Read-Only Memory, ROM )或随机存储记忆体 ( Random Access Memory, RAM )等。
本领域普通技术人员可以意识到, 结合本文中所公开的实施例描述的各 示例的单元及算法步骤, 能够以电子硬件、 或者计算机软件和电子硬件的结 合来实现。 这些功能究竟以硬件还是软件方式来执行, 取决于技术方案的特 定应用和设计约束条件。 专业技术人员可以对每个特定的应用来使用不同方 法来实现所描述的功能, 但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到, 为描述的方便和简洁, 上述描 述的系统、 装置和单元的具体工作过程, 可以参考前述方法实施例中的对应 过程, 在此不再赘述。
在本申请所提供的几个实施例中, 应该理解到, 所揭露的系统、 装置和 方法, 可以通过其它的方式实现。 例如, 以上所描述的装置实施例仅仅是示 意性的, 例如, 所述单元的划分, 仅仅为一种逻辑功能划分, 实际实现时可 以有另外的划分方式, 例如多个单元或组件可以结合或者可以集成到另一个 系统, 或一些特征可以忽略, 或不执行。 另一点, 所显示或讨论的相互之间 的耦合或直接辆合或通信连接可以是通过一些接口, 装置或单元的间接耦合 或通信连接, 可以是电性, 机械或其它的形式。 为单元显示的部件可以是或者也可以不是物理单元, 即可以位于一个地方, 或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或 者全部单元来实现本实施例方案的目的。
另外, 在本发明各个实施例中的各功能单元可以集成在一个处理单元 中, 也可以是各个单元单独物理存在, 也可以两个或两个以上单元集成在一 个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使 用时, 可以存储在一个计算机可读取存储介质中。 基于这样的理解, 本发明 的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部 分可以以软件产品的形式体现出来, 该计算机软件产品存储在一个存储介质 中, 包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器, 或者网络设备等)或处理器(processor )执行本发明各个实施例所述方法的 全部或部分步骤。 而前述的存储介质包括: U盘、 移动硬盘、 只读存储器 ( ROM , Read-Only Memory ), 随机存取存储器 (RAM , Random Access Memory ), 磁碟或者光盘等各种可以存储程序代码的介质。
以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围并不局限 于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内, 可轻易 想到的变化或替换, 都应涵盖在本发明的保护范围之内, 因此本发明的保护 范围应以权利要求的保护范围为准。

Claims (16)

  1. 权利要求
    1、 一种虚拟化平台处理中断方法, 其特征在于, 应用于计算节点上, 所述计算节点包括:物理硬件层、运行在所述物理硬件层之上的宿主机 Host、 运行在所述 Host之上的至少一个虚拟机 VM、 所述至少一个 VM上被虚拟 有虚拟硬件, 其中, 所述物理硬件层包括 X个物理中央处理器 pCPU和 Y 个物理输入输出设备, 所述虚拟硬件包括 Z个虚拟中央处理器 vCPU, 所述 Y个物理输入输出设备包括第 j物理输入输出设备, 所述至少一个 VM包括 第 k VM, 所述第 j物理输入输出设备直通所述第 k VM, 所述方法由所述 Host执行, 所述方法包括:
    在所述第 j物理输入输出设备发生第 i物理中断的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 所述 U个目标 pCPU为与所述第 i物理中断 以及 V个目标 vCPU均具有亲和关系的 pCPU,所述 V个目标 vCPU为被虚 拟在所述第 k VM上的与第 i虚拟中断具有亲和关系的 vCPU,所述第 i虚拟 中断对应于所述第 i物理中断, 所述 X个 pCPU包括所述 U个目标 pCPU, 所述 Z个 vCPU包括所述 V个目标 vCPU;
    使用所述第 n pCPU处理所述第 i物理中断;
    根据所述第 i物理中断, 确定所述第 i虚拟中断;
    从所述 V个目标 vCPU中确定第 m vCPU, 以便于所述第 k VM使用所 述第 m vCPU执行所述第 i虚拟中断;
    其中, X、 Y、 Z为大于 1的正整数, U为大于或等于 1且小于或等于 X 的正整数, V为大于或等于 1且小于或等于 Ζ的正整数, i、 j、 k、 m、 n为 正整数。
  2. 2、 如权利要求 1所述的方法, 其特征在于, 所述 U个目标 pCPU与所 述第 i物理中断的亲和关系,所述 U个目标 pCPU与所述 V个目标 vCPU的 亲和关系以及所述 V个目标 vCPU与所述第 i虚拟中断的亲和关系是通过以 下方式确定的:
    确定所述 V个目标 vCPU与所述第 i虚拟中断的亲和关系, 其中所述 V 个目标 vCPU为被虚拟在所述第 k VM上的能够处理所述第 i虚拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述 U 个目标 pCPU上, 其中 U等于 1 ;
    确定对应于所述第 i虚拟中断的第 i物理中断;
    确定所述第 i物理中断与所述 U个目标 pCPU的亲和关系, 其中所述第 i物理中断能被所述 U个目标 pCPU处理。
  3. 3、 如权利要求 1所述的方法, 其特征在于, 所述 U个目标 pCPU与所 述第 i物理中断的亲和关系,所述 U个目标 pCPU与所述 V个目标 vCPU的 亲和关系以及所述 V个目标 vCPU与所述第 i虚拟中断的亲和关系是通过以 下方式确定的;
    确定所述 V个目标 vCPU与所述第 i虚拟中断的亲和关系, 其中所述 V 个目标 vCPU为被虚拟在所述第 k VM上的能够处理所述第 i虚拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述多 个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数;
    确定对应于所述第 i虚拟中断的第 i物理中断;
    确定所述第 i物理中断与所述 U个目标 pCPU的亲和关系, 其中所述第 i物理中断能被所述 U个目标 pCPU处理。
  4. 4、如权利要求 3所述的方法, 其特征在于, 当所述第 i物理中断与所述 U个目标 pCPU的亲和关系为一对多的亲和关系,所述从所述 V个目标 vCPU 中确定第 m vCPU, 包括:
    确定所述第 n pCPU上是否运行有所述 V个目标 vCPU中的至少一个目 标 vCPU;
    在确定所述第 n pCPU上运行有所述 V个目标 vCPU中的至少一个目标 vCPU的情况下,确定所述第 n pCPU上运行的一个目标 vCPU作为所述第 m vCPU;
    在确定所述第 n pCPU上没有运行有所述 V个目标 vCPU中的至少一个 目标 vCPU的情况下, 根据优先级顺序, 从所述 V个目标 vCPU中确定一个 目标 vCPU作为所述第 m vCPU。
  5. 5、 如权利要求 4所述的方法, 其特征在于, 所述确定所述第 n pCPU上 是否运行有所述 V个目标 vCPU中的至少一个目标 vCPU, 包括:
    根据虚拟中断路由信息, 确定所述第 n pCPU上是否运行有所述 V个目 标 vCPU中的至少一个目标 vCPU, 其中所述虚拟中断路由信息包括所述 U
    6、 一种虚拟化平台处理中断方法, 其特征在于, 应用于计算节点上, 所述计算节点包括:物理硬件层、运行在所述物理硬件层之上的宿主机 Host、 运行在所述 Host之上的 Y个虚拟机 VM、运行在所述 Host之上的 Y个虚拟 主机 vhost内核线程、 所述至少一个 VM上被虚拟有虚拟硬件, 其中, 所述 物理硬件层包括 X个物理中央处理器 pCPU, 所述虚拟硬件包括 Z个虚拟中 央处理器 vCPU,所述 Y个 VM中的每一个 VM包括一个半虚拟化驱动 virtio 设备, 所述 Y个 VM包括第 k VM, 所述第 k VM包括第 i virtio设备, 所述 第 i virtio设备与所述 Y个 vhost内核线程中的第 j vhost内核线程对应,所述 方法由所述 Host执行, 所述方法包括:
    在所述第 j vhost内核线程触发第 i vhost线程的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 所述 U个目标 pCPU为与所述第 i vhost线 程以及 V个目标 vCPU均具有亲和关系的 pCPU,所述 V个目标 vCPU为被 虚拟在所述第 k VM上的与第 i virtio设备的虚拟中断具有亲和关系的 vCPU, 所述第 i virtio设备的虚拟中断对应于所述第 i vhost线程, 所述 X个 pCPU 包括所述 U个目标 pCPU, 所述 Z个 vCPU包括所述 V个目标 vCPU;
    使用所述第 n pCPU处理所述第 i vhost线程;
    根据所述第 i vhost线程, 确定所述第 i virtio设备的虚拟中断; 从所述 V个目标 vCPU中确定第 m vCPU, 以便于所述第 k VM使用所 述第 m vCPU执行所述第 i virtio设备的虚拟中断;
    其中, X、 Y、 Z为大于 1的正整数, U为大于或等于 1且小于或等于 X 的正整数, V为大于或等于 1且小于或等于 Ζ的正整数, i、 j、 k、 m、 n为 正整数。
  6. 7、 如权利要求 6所述的方法, 其特征在于, 所述 U个目标 pCPU与所 述第 i vhost线程的亲和关系, 所述 U个目标 pCPU与所述 V个目标 vCPU 的亲和关系以及所述 V个目标 vCPU与所述第 i virtio设备的虚拟中断的亲 和关系是通过以下方式确定的:
    确定所述 V个目标 vCPU与所述第 i虚拟中断的亲和关系, 其中所述 V 个目标 vCPU为被虚拟在所述第 k VM上的能够处理所述第 i virtio设备的虚 拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述 U 个目标 pCPU上, 其中 U等于 1 ;
    确定对应于所述第 i virtio设备的虚拟中断的第 i vhost线程;
    确定所述第 i vhost线程与所述 U个目标 pCPU的亲和关系, 其中所述 第 i vhost线程能被所述 U个目标 pCPU处理。
  7. 8、 如权利要求 6所述的方法, 其特征在于, 所述 U个目标 pCPU与所 述第 i vhost线程的亲和关系, 所述 U个目标 pCPU与所述 V个目标 vCPU 的亲和关系以及所述 V个目标 vCPU与所述第 i virtio设备的虚拟中断的亲 和关系是通过以下方式确定的:
    确定所述 V个目标 vCPU与所述第 I virito设备的虚拟中断的亲和关系, 其中所述 V个目标 vCPU为被虚拟在所述第 k VM上的能够处理所述第 i virtio设备的虚拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述多 个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数;
    确定对应于所述第 i virtio设备的虚拟中断的第 i vhost线程;
    确定所述第 i vhost线程与所述 U个目标 pCPU的亲和关系, 其中所述 第 i vhost线程能被所述 U个目标 pCPU处理。
    9、 如权利要求 8所述的方法, 其特征在于, 当所述第 i vhost线程与所 述 U个目标 pCPU的亲和关系为一对多的亲和关系, 所述从所述 V个目标 vCPU中确定第 m vCPU, 包括:
    确定所述第 n pCPU上是否运行有所述 V个目标 vCPU中的至少一个目 标 vCPU;
    在确定所述第 n pCPU上运行有所述 V个目标 vCPU中的至少一个目标 vCPU的情况下,确定所述第 n pCPU上运行的一个目标 vCPU作为所述第 m vCPU; 在确定所述第 n pCPU上没有运行有所述 V个目标 vCPU中的至少一个 目标 vCPU的情况下, 根据优先级顺序, 从所述 V个目标 vCPU中确定一个 目标 vCPU作为所述第 m vCPU。 10、 如权利要求 9所述的方法, 其特征在于, 所述确定所述第 n pCPU 上是否运行有所述 V个目标 vCPU中的至少一个目标 vCPU, 包括:
    根据 virtio设备的虚拟中断路由信息, 确定所述第 n pCPU上是否运行 有所述 V个目标 vCPU中的至少一个目标 vCPU, 其中所述 virtio设备的虚 拟中断路由信息包括所述 U个目标 pCPU与运行在所述 U个目标 pCPU上 的目标 vCPU的对应关系。
    11、 一种宿主机 Host, 其特征在于, 应用于计算节点上, 所述计算节点 包括: 物理硬件层、 运行在所述物理硬件层之上的所述 Host、 运行在所述 Host之上的至少一个虚拟机 VM、 所述至少一个 VM上被虚拟有虚拟硬件, 其中, 所述物理硬件层包括 X个物理中央处理器 pCPU和 Y个物理输入输 出设备, 所述虚拟硬件包括 Z个虚拟中央处理器 vCPU, 所述 Y个物理输入 输出设备包括第 j物理输入输出设备, 所述至少一个 VM包括第 k VM, 所 述第 j物理输入输出设备直通所述第 k VM, 所述 Host包括:
    第一确定单元, 用于在所述第 j物理输入输出设备发生第 i物理中断的 情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 所述 U个目标 pCPU 为与所述第 i物理中断以及 V个目标 vCPU均具有亲和关系的 pCPU, 所述 V个目标 vCPU为被虚拟在所述第 k VM上的与第 i虚拟中断具有亲和关系 的 vCPU, 所述第 i虚拟中断对应于所述第 i物理中断, 所述 X个 pCPU包 括所述 U个目标 pCPU, 所述 Z个 vCPU包括所述 V个目标 vCPU,;
    第二调用单元, 用于使用所述第 n pCPU处理所述第 i物理中断; 第三确定单元, 用于根据所述第 i物理中断, 确定所述第 i虚拟中断; 第四确定单元, 用于从所述 V个目标 vCPU中确定第 m vCPU, 以便于 所述第 k VM使用所述第 m vCPU执行所述第 i虚拟中断;
    其中, X、 Y、 Z为大于 1的正整数, U为大于或等于 1且小于或等于 X 的正整数, V为大于或等于 1且小于或等于 Ζ的正整数, i、 j、 k、 m、 11为 正整数。 12、 如权利要求 11所述的 Host, 其特征在于,
    所述第一确定单元, 还用于: 确定所述 V个目标 vCPU与所述第 i虚拟 中断的亲和关系,其中所述 V个目标 vCPU为被虚拟在所述第 k VM上的能 够处理所述第 i虚拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述 U 个目标 pCPU上, 其中 U等于 1 ;
    确定对应于所述第 i虚拟中断的第 i物理中断;
    确定所述第 i物理中断与所述 U个目标 pCPU的亲和关系, 其中所述第 i物理中断能被所述 U个目标 pCPU处理。
    13、 如权利要求 11所述的 Host, 其特征在于,
    所述第一确定单元, 还用于: 确定所述 V个目标 vCPU与所述第 i虚拟 中断的亲和关系,其中所述 V个目标 vCPU为被虚拟在所述第 k VM上的能 够处理所述第 i虚拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述多 个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数;
    确定对应于所述第 i虚拟中断的第 i物理中断;
    确定所述第 i物理中断与所述 U个目标 pCPU的亲和关系, 其中所述第 i物理中断能被所述 U个目标 pCPU处理。
    14、 如权利要求 13所述的 Host, 其特征在于,
    所述第四确定单元, 具体用于: 确定所述第 n pCPU上是否运行有所述 V个目标 vCPU中的至少一个目标 vCPU;
    在确定所述第 n pCPU上运行有所述 V个目标 vCPU中的至少一个目标 vCPU的情况下,确定所述第 n pCPU上运行的一个目标 vCPU作为所述第 m vCPU, 以便于所述第 k VM使用所述第 m vCPU执行所述第 i虚拟中断; 或 者,
    在确定所述第 n pCPU上没有运行有所述 V个目标 vCPU中的至少一个 目标 vCPU的情况下, 根据优先级顺序, 从所述 V个目标 vCPU中确定一个 目标 vCPU作为所述第 m vCPU, 以便于所述第 k VM使用所述第 m vCPU 执行所述第 i虚拟中断。
    15、 如权利要求 14所述的 Host, 其特征在于,
    在所述确定所述第 n pCPU上是否运行所述 V个目标 vCPU中的至少一 个目标 vCPU的方面,所述第四确定单元,具体用于根据虚拟中断路由信息, 确定所述第 n pCPU上是否运行有所述 V个目标 vCPU中的至少一个目标 vCPU, 其中所述虚拟中断路由信息包括所述 U个目标 pCPU与运行在所述 U个目标 pCPU上的目标 vCPU的对应关系。 16、 一种宿主机 Host, 其特征在于, 应用于计算节点上, 所述计算节点 包括: 物理硬件层、 运行在所述物理硬件层之上的所述 Host、 运行在所述 Host之上的 Y个虚拟机 VM、 运行在所述 Host之上的 Y个虚拟主机 vhost 内核线程、 该至少一个 VM上被虚拟有虚拟硬件, 其中, 所述物理硬件层包 括 X 个物理中央处理器 pCPU, 所述虚拟硬件包括 Z个虚拟中央处理器 vCPU, X、 Y、 Z为大于 1的正整数, 所述 Υ个 VM中的每一个 VM包括一 个半虚拟化驱动 virtio设备, 所述 Y个 VM包括第 k VM, 所述第 k VM包 括第 i virtio设备,所述第 i virtio设备与所述 Y个 vhost内核线程中的第 j vhost 内核线程对应, 所述 Host包括:
    第一确定单元, 用于在所述第 j vhost内核线程触发第 i vhost线程的情 况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 所述 U个目标 pCPU为 与所述第 i vhost线程以及 V个目标 vCPU均具有亲和关系的 pCPU,所述 V 个目标 vCPU为被虚拟在所述第 k VM上的与第 i virtio设备的虚拟中断具有 亲和关系的 vCPU,所述第 i virtio设备的虚拟中断对应于所述第 i vhost线程, 所述 X个 pCPU包括所述 U个目标 pCPU, 所述 Z个 vCPU包括所述 V个 目标 vCPU;
    第二调用单元, 用于使用所述第 n pCPU处理所述第 i vhost线程; 第三确定单元, 用于根据所述第 i vhost线程, 确定所述第 i virtio设备 的虚拟中断;
    第四确定单元, 用于从所述 V个目标 vCPU中确定第 m vCPU, 以便于 所述第 k VM使用所述第 m vCPU执行所述第 i virtio设备的虚拟中断;
    其中, X、 Y、 Z为大于 1的正整数, U为大于或等于 1且小于或等于 X 的正整数, V为大于或等于 1且小于或等于 Z的正整数, i、 j、 k、 m、 n为 正整数。
    17、 如权利要求 16所述的 Host, 其特征在于,
    所述第一确定单元, 还用于: 确定所述 V个目标 vCPU与所述第 i虚拟 中断的亲和关系,其中所述 V个目标 vCPU为被虚拟在所述第 k VM上的能 够处理所述第 i virtio设备的虚拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述 U 个目标 pCPU上, 其中 U等于 1 ;
    确定对应于所述第 i virtio设备的虚拟中断的第 i vhost线程;
    确定所述第 i vhost线程与所述 U个目标 pCPU的亲和关系, 其中所述 第 i vhost线程能被所述 U个目标 pCPU处理。
    18、 如权利要求 16所述的 Host, 其特征在于,
    所述第一确定单元, 还用于: 确定所述 V个目标 vCPU与所述第 i虚拟 中断的亲和关系,其中所述 V个目标 vCPU为被虚拟在所述第 k VM上的能 够处理所述第 i virtio设备的虚拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述多 个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数;
    确定对应于所述第 i virtio设备的虚拟中断的第 i vhost线程;
    确定所述第 i vhost线程与所述 U个目标 pCPU的亲和关系, 其中所述 第 i vhost线程能被所述 U个目标 pCPU处理。
    19、 如权利要求 18所述的 Host, 其特征在于,
    所述第四确定单元, 具体用于: 确定所述第 n pCPU上是否运行有所述
    V个目标 vCPU中的至少一个目标 vCPU;
    在确定所述第 n pCPU上运行有所述 V个目标 vCPU中的至少一个目标 vCPU的情况下,确定所述第 n pCPU上运行的一个目标 vCPU作为所述第 m vCPU, 以便于所述第 k VM使用所述第 m vCPU执行所述第 i virtio设备的 虚拟中断; 或者,
    在确定所述第 n pCPU上没有运行有所述 V个目标 vCPU中的至少一个 目标 vCPU的情况下, 根据优先级顺序, 从所述 V个目标 vCPU中确定一个 目标 vCPU作为所述第 m vCPU, 以便于所述第 k VM使用所述第 m vCPU 执行所述第 i virtio设备的虚拟中断。 20、如权利要求 19所述的 Host,其特征在于,在所述确定所述第 n pCPU 上是否运行所述 V个目标 vCPU中的至少一个目标 vCPU的方面,
    所述第四确定单元, 具体用于根据 virtio设备的虚拟中断路由信息, 确 定所述第 n pCPU上是否运行有所述 V 个目标 vCPU 中的至少一个目标 vCPU, 其中所述 virtio设备的虚拟中断路由信息包括所述 U个目标 pCPU 与运行在所述 U个目标 pCPU上的目标 vCPU的对应关系。
  8. 21、 一种计算节点, 其特征在于, 所述计算节点包括:
    Y个物理输入输出设备, 其中所述 Y个物理输入输出设备包括第 j物理 输入输出设备,
    X个物理中央处理器 pCPU,
    与所述 X个物理中央处理器 pCPU和 Y个物理输入输出设备分别连接 的存储器,其中所述 X个物理中央处理器 pCPU中的一个或多个 pCPU用于 调用或执行所述存储器中存储的操作指令、 宿主机 Host、 至少一个虚拟机 VM以及所述至少一个虚拟机 VM上被虚拟的虚拟硬件, 其中所述虚拟硬件 包括 Z个虚拟中央处理器 vCPU, 所述至少一个 VM包括第 k VM, 所述第 j 物理输入输出设备直通所述第 k VM,
    其中, 所述 Host用于:
    在所述第 j物理输入输出设备发生第 i物理中断的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 所述 U个目标 pCPU为与所述第 i物理中断 以及 V个目标 vCPU均具有亲和关系的 pCPU,所述 V个目标 vCPU为被虚 拟在所述第 k VM上的与第 i虚拟中断具有亲和关系的 vCPU,所述第 i虚拟 中断对应于所述第 i物理中断, 所述 X个 pCPU包括所述 U个目标 pCPU, 所述 Z个 vCPU包括所述 V个目标 vCPU;
    使用所述第 n pCPU处理所述第 i物理中断;
    根据所述第 i物理中断, 确定所述第 i虚拟中断;
    从所述 V个目标 vCPU中确定第 m vCPU, 以便于所述第 k VM使用所 述第 m vCPU执行所述第 i虚拟中断;
    其中 X、 Υ、 Ζ为大于 1的正整数, U为大于或等于 1且小于或等于 X 的正整数, V为大于或等于 1且小于或等于 Ζ的正整数, i、 j、 k、 m、 n为 正整数。
  9. 22、 如权利要求 21所述的计算节点, 其特征在于, 所述 Host还用于通 过以下方式确定所述 U个目标 pCPU与所述第 i物理中断的亲和关系, 所述 U个目标 pCPU与所述 V个目标 vCPU的亲和关系以及所述 V个目标 vCPU 与所述第 i虚拟中断的亲和关系:
    确定所述 V个目标 vCPU与所述第 i虚拟中断的亲和关系, 其中所述 V 个目标 vCPU为被虚拟在所述第 k VM上的能够处理所述第 i虚拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述 U 个目标 pCPU上, 其中 U等于 1 ;
    确定对应于所述第 i虚拟中断的第 i物理中断;
    确定所述第 i物理中断与所述 U个目标 pCPU的亲和关系, 其中所述第 i物理中断能被所述 U个目标 pCPU处理。
  10. 23、 如权利要求 21所述的计算节点, 其特征在于, 所述 Host还用于通 过以下方式确定所述 U个目标 pCPU与所述第 i物理中断的亲和关系, 所述
    U个目标 pCPU与所述 V个目标 vCPU的亲和关系以及所述 V个目标 vCPU 与所述第 i虚拟中断的亲和关系:
    确定所述 V个目标 vCPU与所述第 i虚拟中断的亲和关系, 其中所述 V 个目标 vCPU为被虚拟在所述第 k VM上的能够处理所述第 i虚拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述多 个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数;
    确定对应于所述第 i虚拟中断的第 i物理中断;
    确定所述第 i物理中断与所述 U个目标 pCPU的亲和关系, 其中所述第 i物理中断能被所述 U个目标 pCPU处理。 24、 如权利要求 23所述的计算节点, 其特征在于, 在所述从所述 V个 目标 vCPU中确定第 m vCPU的方面, 所述 Host具体用于:
    确定所述第 n pCPU上是否运行有所述 V个目标 vCPU中的至少一个目 标 vCPU;
    在确定所述第 n pCPU上运行有所述 V个目标 vCPU中的至少一个目标 vCPU的情况下,确定所述第 n pCPU上运行的一个目标 vCPU作为所述第 m vCPU;
    在确定所述第 n pCPU上没有运行有所述 V个目标 vCPU中的至少一个 目标 vCPU的情况下, 根据优先级顺序, 从所述 V个目标 vCPU中确定一个 目标 vCPU作为所述第 m vCPU。
  11. 25、如权利要求 24所述的计算节点, 其特征在于, 在所述确定所述第 n pCPU上是否运行所述 V个目标 vCPU中的至少一个目标 vCPU的方面, 所 述 Host具体用于: 根据虚拟中断路由信息, 确定所述第 n pCPU上是否运行 有所述 V个目标 vCPU中的至少一个目标 vCPU, 其中所述虚拟中断路由信 对应关系。
  12. 26、 一种计算节点, 其特征在于, 所述计算节点包括:
    X个物理中央处理器 pCPU,
    与所述 X个物理中央处理器 pCPU连接的存储器, 其中所述 X个物理 中央处理器 pCPU中的一个或多个 pCPU用于调用或执行所述存储器中存储 的操作指令、 宿主机 Host、 Y个虚拟机 VM、 Y个虚拟主机 vhost内核线程 以及所述至少一个虚拟机 VM上被虚拟的虚拟硬件,其中所述虚拟硬件包括 Z个虚拟中央处理器 vCPU, 所述 Y个 VM中的每一个 VM包括一个半虚拟 化驱动 virtio设备,所述 Y个 VM包括第 k VM,所述第 k VM包括第 i virtio 设备,所述第 i virtio设备与所述 Y个 vhost内核线程中的第 j vhost内核线程 对应,
    其中, 所述 Host用于:
    在所述第 j vhost内核线程触发第 i vhost线程的情况下, 从 U个目标 pCPU中确定第 n pCPU, 其中, 所述 U个目标 pCPU为与所述第 i vhost线 程以及 V个目标 vCPU均具有亲和关系的 pCPU,所述 V个目标 vCPU为被 虚拟在所述第 k VM上的与第 i virtio设备的虚拟中断具有亲和关系的 vCPU, 所述第 i virtio设备的虚拟中断对应于所述第 i vhost线程, 所述 X个 pCPU 包括所述 U个目标 pCPU, 所述 Z个 vCPU包括所述 V个目标 vCPU;
    使用所述第 n pCPU处理所述第 i vhost线程;
    根据所述第 i vhost线程, 确定所述第 i virtio设备的虚拟中断; 从所述 V个目标 vCPU中确定第 m vCPU, 以便于所述第 k VM使用所 述第 m vCPU执行所述第 i virtio设备的虚拟中断;
    其中 X、 Υ、 Ζ为大于 1的正整数, U为大于或等于 1且小于或等于 X 的正整数, V为大于或等于 1且小于或等于 Ζ的正整数, i、 j、 k、 m、 n为 正整数。
  13. 27、 如权利要求 26所述的计算节点, 其特征在于, 所述 Host还用于通 过以下方式确定所述 U个目标 pCPU与所述第 i物理中断的亲和关系, 所述 U个目标 pCPU与所述 V个目标 vCPU的亲和关系以及所述 V个目标 vCPU 与所述第 i虚拟中断的亲和关系:
    确定所述 V个目标 vCPU与所述第 i虚拟中断的亲和关系, 其中所述 V 个目标 vCPU为被虚拟在所述第 k VM上的能够处理所述第 i virtio设备的虚 拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述 U 个目标 pCPU上, 其中 U等于 1 ;
    确定对应于所述第 i virtio设备的虚拟中断的第 i vhost线程;
    确定所述第 i vhost线程与所述 U个目标 pCPU的亲和关系, 其中所述 第 i vhost线程能被所述 U个目标 pCPU处理。
  14. 28、 如权利要求 26所述的计算节点, 其特征在于, 所述 Host还用于通 过以下方式确定所述 U个目标 pCPU与所述第 i物理中断的亲和关系, 所述 U个目标 pCPU与所述 V个目标 vCPU的亲和关系以及所述 V个目标 vCPU 与所述第 i虚拟中断的亲和关系:
    确定所述 V个目标 vCPU与所述第 i虚拟中断的亲和关系, 其中所述 V 个目标 vCPU为被虚拟在所述第 k VM上的能够处理所述第 i virtio设备的虚 拟中断的 vCPU;
    确定所述 U个目标 pCPU,其中所述 V个目标 vCPU能够运行在所述多 个目标 pCPU上, 其中 U为大于 1且小于或等于 X的正整数;
    确定对应于所述第 i virtio设备的虚拟中断的第 i vhost线程;
    确定所述第 i vhost线程与所述 U个目标 pCPU的亲和关系, 其中所述 第 i vhost线程能被所述 U个目标 pCPU处理。
  15. 29、 如权利要求 28所述的计算节点, 其特征在于, 在所述从所述 V个 目标 vCPU中确定第 m vCPU的方面, 所述 Host具体用于:
    确定所述第 n pCPU上是否运行有所述 V个目标 vCPU中的至少一个目 标 vCPU;
    在确定所述第 n pCPU上运行有所述 V个目标 vCPU中的至少一个目标 vCPU的情况下,确定所述第 n pCPU上运行的一个目标 vCPU作为所述第 m vCPU;
    在确定所述第 n pCPU上没有运行有所述 V个目标 vCPU中的至少一个 目标 vCPU的情况下, 根据优先级顺序, 从所述 V个目标 vCPU中确定一个 目标 vCPU作为所述第 m vCPU。
  16. 30、如权利要求 29所述的计算节点, 其特征在于, 在所述确定所述第 n pCPU上是否运行所述 V个目标 vCPU中的至少一个目标 vCPU的方面, 所 述 Host具体用于:
    根据 virtio设备的虚拟中断路由信息, 确定所述第 n pCPU上是否运行 有所述 V个目标 vCPU中的至少一个目标 vCPU, 其中所述 virtio设备的虚 拟中断路由信息包括所述 U个目标 pCPU与运行在所述 U个目标 pCPU上 的目标 vCPU的对应关系。
CN201480079053.5A 2014-06-20 2014-06-20 虚拟化平台处理中断方法和相关设备 Active CN106462451B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080430 WO2015192381A1 (zh) 2014-06-20 2014-06-20 虚拟化平台处理中断方法和相关设备

Publications (2)

Publication Number Publication Date
CN106462451A true CN106462451A (zh) 2017-02-22
CN106462451B CN106462451B (zh) 2019-11-12

Family

ID=54934732

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480079053.5A Active CN106462451B (zh) 2014-06-20 2014-06-20 虚拟化平台处理中断方法和相关设备

Country Status (6)

Country Link
US (1) US10169075B2 (zh)
EP (1) EP3147784A4 (zh)
JP (1) JP2017518589A (zh)
KR (1) KR101847518B1 (zh)
CN (1) CN106462451B (zh)
WO (1) WO2015192381A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112817690A (zh) * 2021-01-22 2021-05-18 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 一种面向arm架构虚拟化领域的中断虚拟化处理方法及系统
CN113961147A (zh) * 2021-10-26 2022-01-21 江苏安超云软件有限公司 在云平台上从已删除的块中回收空间的方法及应用
WO2022078375A1 (zh) * 2020-10-15 2022-04-21 华为技术有限公司 一种芯片系统、处理虚拟中断的方法及相应装置
WO2023174220A1 (zh) * 2022-03-17 2023-09-21 北京有竹居网络技术有限公司 数据处理方法、装置、可读介质以及计算设备

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144679B (zh) 2017-06-27 2022-03-29 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备
JP7196439B2 (ja) * 2018-07-03 2022-12-27 株式会社デンソー 仮想化環境におけるデバイスへのアクセス方法
US11204796B2 (en) 2019-04-11 2021-12-21 International Business Machines Corporation Dynamic assignment of interrupts based on input/output metrics
US11194611B2 (en) 2019-07-29 2021-12-07 International Business Machines Corporation Dynamic assignment of interrupts based on input/output metrics
US11068411B2 (en) 2019-07-29 2021-07-20 International Business Machines Corporation Reducing impact of context switches through dynamic memory-mapping overallocation
CN113934504A (zh) * 2020-06-29 2022-01-14 华为技术有限公司 一种系统以及中断处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101135997A (zh) * 2006-08-29 2008-03-05 联想(北京)有限公司 一种虚拟机系统及其硬件设备中断处理方法
CN101158924A (zh) * 2007-11-27 2008-04-09 北京大学 一种虚拟机管理器的动态内存映射方法
US7840839B2 (en) * 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
US20140052932A1 (en) * 2012-08-14 2014-02-20 Ravello Systems Ltd. Method for reducing the overhead associated with a virtual machine exit when handling instructions related to descriptor tables

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853960B1 (en) 2005-02-25 2010-12-14 Vmware, Inc. Efficient virtualization of input/output completions for a virtual device
US8286162B2 (en) 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
US9164784B2 (en) * 2007-10-12 2015-10-20 International Business Machines Corporation Signalizing an external event using a dedicated virtual central processing unit
JP5352848B2 (ja) 2008-11-28 2013-11-27 株式会社日立製作所 仮想計算機の制御方法及び計算機装置
US8055827B2 (en) 2009-01-26 2011-11-08 Advanced Micro Devices, Inc. Guest interrupt controllers for each processor to aid interrupt virtualization
US8489789B2 (en) 2010-02-05 2013-07-16 Advanced Micro Devices, Inc. Interrupt virtualization
US9411624B2 (en) * 2011-11-22 2016-08-09 Red Hat Israel, Ltd. Virtual device interrupt hinting in a virtualization system
CN102799465B (zh) 2012-06-30 2015-05-27 华为技术有限公司 分布式虚拟化系统的虚拟中断管理方法及装置
CN103559087B (zh) * 2013-10-31 2017-11-28 华为技术有限公司 一种虚拟处理器之间的中断的实现方法、相关装置和系统
CN103699428A (zh) 2013-12-20 2014-04-02 华为技术有限公司 一种虚拟网卡中断亲和性绑定的方法和计算机设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101135997A (zh) * 2006-08-29 2008-03-05 联想(北京)有限公司 一种虚拟机系统及其硬件设备中断处理方法
US7840839B2 (en) * 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
CN101158924A (zh) * 2007-11-27 2008-04-09 北京大学 一种虚拟机管理器的动态内存映射方法
US20140052932A1 (en) * 2012-08-14 2014-02-20 Ravello Systems Ltd. Method for reducing the overhead associated with a virtual machine exit when handling instructions related to descriptor tables

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022078375A1 (zh) * 2020-10-15 2022-04-21 华为技术有限公司 一种芯片系统、处理虚拟中断的方法及相应装置
CN112817690A (zh) * 2021-01-22 2021-05-18 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 一种面向arm架构虚拟化领域的中断虚拟化处理方法及系统
CN112817690B (zh) * 2021-01-22 2022-03-18 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 一种面向arm架构虚拟化领域的中断虚拟化处理方法及系统
CN113961147A (zh) * 2021-10-26 2022-01-21 江苏安超云软件有限公司 在云平台上从已删除的块中回收空间的方法及应用
WO2023174220A1 (zh) * 2022-03-17 2023-09-21 北京有竹居网络技术有限公司 数据处理方法、装置、可读介质以及计算设备

Also Published As

Publication number Publication date
CN106462451B (zh) 2019-11-12
WO2015192381A1 (zh) 2015-12-23
JP2017518589A (ja) 2017-07-06
US10169075B2 (en) 2019-01-01
EP3147784A4 (en) 2017-08-02
KR20170016448A (ko) 2017-02-13
EP3147784A1 (en) 2017-03-29
US20170102963A1 (en) 2017-04-13
KR101847518B1 (ko) 2018-05-28

Similar Documents

Publication Publication Date Title
CN106462451A (zh) 虚拟化平台处理中断方法和相关设备
EP2888662B1 (en) Specialized virtual machine to virtualize hardware resource for guest virtual machines
CN102591715B (zh) 一种使用多队列技术的虚拟机网络性能优化的实现方法
CN104598294B (zh) 用于移动设备的高效安全的虚拟化方法及其设备
US11157302B2 (en) Idle processor management in virtualized systems via paravirtualization
US10365936B2 (en) Idle processor management by guest in virtualized systems
CN102307208B (zh) 基于云计算的虚拟机运行控制装置及其运行控制方法
KR20140002048A (ko) 결합된 가상 그래픽 장치
EP2881860B1 (en) Method for implementing an interrupt between virtual processors, related device, and system
US20090100424A1 (en) Interrupt avoidance in virtualized environments
US8392916B2 (en) Multiple layers of virtualization in a computing system
US20060294518A1 (en) Method, apparatus and system for a lightweight virtual machine monitor
US20210389966A1 (en) Micro kernel based extensible hypervisor and embedded system
US10002016B2 (en) Configuration of virtual machines in view of response time constraints
US20150121377A1 (en) Method for implementing inter-virtual processor interrupt, related apparatus, and system
KR20160033517A (ko) 인터럽트 컨트롤러를 위한 하이브리드 가상화 방법
CN106569876A (zh) 一种基于直接设备访问模型的虚拟机迁移的方法及装置
WO2018040845A1 (zh) 一种计算资源调度方法及装置
US9317340B2 (en) Intelligent virtual machine (VM) re-location
US9304874B2 (en) Virtual machine-guest driven state restoring by hypervisor
KR100928866B1 (ko) 가상 환경에서의 어플리케이션 실행 장치 및 방법
US11392504B2 (en) Memory page fault handling for network interface devices in a virtualized environment
CN103197915B (zh) 一种处理敏感指令的方法、装置以及物理机
KR102301937B1 (ko) 가상 머신 환경에서의 입출력 방법
US20140026132A1 (en) Method and System for Emulation of Instructions and Hardware Using Background Guest Mode Processing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant