CN102053858B - 一种虚拟cpu调度方法 - Google Patents
一种虚拟cpu调度方法 Download PDFInfo
- Publication number
- CN102053858B CN102053858B CN 201010607544 CN201010607544A CN102053858B CN 102053858 B CN102053858 B CN 102053858B CN 201010607544 CN201010607544 CN 201010607544 CN 201010607544 A CN201010607544 A CN 201010607544A CN 102053858 B CN102053858 B CN 102053858B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- spin lock
- vcpu
- scheduling
- lock
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种虚拟CPU调度方法,属于计算系统虚拟化技术领域,解决锁持有者抢占问题,以提高多处理机系统中虚拟机的性能。本发明用于多处理机虚拟化环境,包括监测步骤,信息收集步骤和调度步骤,监测步骤实时监控各虚拟机操作系统中的自旋锁操作命令;信息收集步骤提取监测步骤所得到的自旋锁数目,并将其构成自旋锁计数信息;调度步骤根据从信息收集步骤提取的自旋锁计数信息,采用公平高效的调度方法对VCPU进行调度。与现有技术相比,本发明对是否处于可调度状态的检测更为精确,提高了PCPU的利用率,调度策略具有灵活性与可扩展性,兼具公平性,有效解决了锁持有者抢占问题,极大地提高了多处理机系统中虚拟机的性能。
Description
技术领域
本发明属于计算系统虚拟化技术领域,具体涉及一种虚拟CPU调度方法,用于多处理机虚拟化环境。
背景技术
近年来,随着计算体系结构和软硬件技术的飞速发展,计算系统虚拟化技术也日益成熟,并成为学术界和工业界的热门技术。虚拟化技术使得计算机软件可以在一个虚拟平台上而不是真实的物理机上运行,应用程序在各自独立的空间运行而互不影响,使得一个平台可以同时运行多个操作系统,扩大了硬件容量,简化了软件重新配置的过程,从而显著提高了计算机的利用率、工作效率和安全性、灵活性。
多处理机系统为虚拟化环境带来了很大的优势。多处理机系统包括多个物理中央处理器(PCPU),多处理机虚拟化环境包括虚拟机监视器以及一台或多台虚拟机(指通过软件模拟的,具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统),每台虚拟机上运行一个客户操作系统(Guest OS),每台虚拟机又包含一个或多个虚拟中央处理器(VCPU);虚拟机监视器将虚拟机上的客户操作系统映射到某些VCPU上(VCPU的数目可以多于PCPU的数目),同时,将VCPU调度到PCPU上运行。VCPU能够在不同PCPU上运行而无需告知Guest OS。虚拟机监视器采用灵活的分配策略,以响应不断变化的负载情况。这使得虚拟机可以从一台机器迁移到与该机器结构不同的机器上。
虚拟机监视器上具有共享内存页,它是一种特殊的数据结构,能够同时被虚拟机监视器和虚拟机访问;VCPU被调度时,虚拟机监视器的调度模块会给当前被选择运行的VCPU分配一个运行时间,称为时间片。
虚拟机监视器能够将PCPU分发给Guest OS,以支持灵活的分配策略,并支持重新分配PCPU来响应不断变化的负载情况。分配策略支持Guest OS的并发操作,它也能将Guest OS映射到VCPU上(VCPU的数目可以多于PCPU),VCPU能够在PCPU之间迁移而无需通知Guest OS。这使得虚拟机(指通过软件模拟的,具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统)可以从一台机器迁移到与该机器结构不同的机器上。
多处理机系统中引入虚拟化,会带来很大的优势,但同时也引发了一些问题,锁持有者抢占问题就是其中之一。锁,是操作系统中常用的一种机制,用来保护临界区(即访问一次仅允许一个线程使用的共享资源的代码段),使其在任意时刻只能被某一个线程访问。线程是指在进程(即处于执行期的程序)中活动的对象。锁有多种多样的形式,而多处理机操作系统最常用的一种锁是自旋锁。自旋锁最多只能被一个可执行线程持有。如果一个执行线程试图获得一个已经被持有的自旋锁,那么该线程就会一直进行忙循环(自旋),直到这个锁被持有它的线程释放为止。从设计上来说,自旋锁只能持有很短的时间。但是如果一个虚拟机的某个VCPU被抢占的时候持有锁的话,这一点就不再成立——这个虚拟机的其他VCPU仍有可能运行在不同的CPU上,并等待着这个锁的释放,这样就导致了锁持有时间延长,大量处理器周期被浪费,极大地影响了性能和可扩展性。
发明内容
本发明提供一种虚拟CPU的调度方法,解决锁持有者抢占问题,以提高多处理机系统中虚拟机的性能。
本发明的一种虚拟CPU调度方法,用于多处理机虚拟化环境,包括监测步骤,信息收集步骤和调度步骤,其特征在于:
一.监测步骤:
实时监控各虚拟机的Linux操作系统中的自旋锁操作命令,针对每台虚拟机的每个VCPU都设置一个自旋锁计数器,在Linux操作系统每个自旋锁加锁语句处,判断是否成功加锁,是则将该自旋锁加锁语句所对应的VCPU的自旋锁计数器加1,否则不进行操作;在每个自旋锁解锁语句处,将该自旋锁解锁语句所对应的VCPU的自旋锁计数器减1;所述自旋锁计数器加减操作均为原子操作,所述原子操作,是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何上下文切换;
二.信息收集步骤:
提取监测步骤所得到的每台虚拟机上各个VCPU上的自旋锁数目,并将其与每台虚拟机对应,构成每台虚拟机自旋锁计数信息;将所述每台虚拟机自旋锁计数信息写入虚拟机监视器共享内存页;
三.调度步骤:运行于各个PCPU上,虚拟机监视器按照周期T,循环执行如下子步骤:
(3.2)在Sn时刻启动窗口,窗口长度w=0.5~1.5ms;
(3.3)从虚拟机监视器共享内存页提取当前正在运行的VCPU上的自旋锁数目,并据其判断当前正在运行的VCPU是否持有锁,是则转子步骤(3.5);否则转子步骤(3.4);
(3.4)调度该VCPU,转子步骤(3.6);
(3.5)检查窗口是否已经到达结束点,是则转子步骤(3.4);否则转子步骤(3.3);
(3.6)结束本轮调度,当周期T届满时,转子步骤(3.1)。
所述的虚拟CPU调度方法,其特征在于:
所述信息收集步骤中,使用读写锁对共享内存页中的信息进行保护。
本发明针对当前多处理机虚拟化环境下调度方法所存在的锁持有者抢占问题,收集了自旋锁计数信息,通过调度步骤进行调度决策。与现有的调度方案相比,本发明主要有如下特点:
(1)准确性:本发明采用动态方式直接对自旋锁操作进行计数,为调度步骤提供相关信息,与采用其他的间接方式来判断当前VCPU上是否可能持有自旋锁的方式相比,提高了调度算法的准确性与精度。
(2)灵活性与可扩展性:锁持有抢占问题也可以通过gang调度来避免。在gang调度中,同一虚拟机上所有的VCPU都以一个相等时间片被同时调度,不管VCPU上是否有任务在执行,gang调度都给它时间片,这就导致了PCPU利用率低下。此外,gang调度排除了其他调度算法的使用,灵活性与可扩展性不强。本发明不需要同一虚拟机上所有的VCPU都被同时调度,相比而言,PCPU利用率高,并可以与虚拟机监视器中常用的调度算法相结合,具有较高的灵活性与可扩展性。
(3)高效性:本发明采用开销较小的计数方法和通信手段,来避免锁持有者抢占问题,极大地提高了多处理机上虚拟机的性能。
(4)公平性:本发明采用的调度方法,考虑到了VCPU调度的公平性,保证了调度时各个VCPU的运行时间与原本应分配给它们的运行时间相一致。
附图说明
图1为本方法的整体架构示意图;
图2为监测步骤流程示意图;
图3为共享内存页的原理示意图;
图4为调度步骤的流程示意图;
图5为调度步骤中的调度算法原理示意图。
具体实施方式
下面结合附图对本发明进一步说明。
如图1所示,本发明包括监测步骤,信息收集步骤和调度步骤。
图2为监测步骤的流程示意图。
如图3所示,信息收集步骤通过共享内存页完成虚拟机监视器和虚拟机的数据交互。考虑到并发读写的同步问题,使用读写锁对共享内存页中的信息进行保护,即,允许多个内核线程同时读取共享内存页中的信息,但是不允许在读操作的同时另一个线程对其进行写操作,或在写操作的同时另一个线程对其进行读操作。
调度步骤的流程如图4所示。
如图5所示,在第n轮调度中,在所分配VCPU时间片实际结束时刻En附近设置一个窗口,其长度w=1.0ms,该窗口在Sn时刻启动,抢占点Pn是在窗口中可以抢占虚拟机的时刻(即最后一个自旋锁被释放的时刻)。如果在窗口结束之前一直没有抢占点Pn出现,虚拟机监视器将强制调度该VCPU。
实施例:
为了验证本发明的可行性和有效性,本发明的步骤可编写为计算机程序,加载到Xen系统,并和一个没有采用本发明的原始Xen系统进行比较。
本实施例共采用两台硬件配置相同的计算机,其中计算机PC1安装了具有本发明步骤的Xen系统,计算机PC2安装原始的Xen系统。
表1:实验配置环境
在计算机PC1和计算机PC2上,分别启动虚拟机VM1和虚拟机VM2,在VM1和VM2上分别运行同样的Apache Web服务负载,运行结果如表2所示。
在VM1和VM2上分别运行同样的一个常用的性能评测工具:斯坦福共享内存的并行应用负载splash(Stanford Parallel Applications for SharedMemory),运行结果如表3所示。
表2:Apache Web服务负载运行结果
表3 splash负载运行结果
Claims (2)
1.一种虚拟CPU调度方法,用于多处理机虚拟化环境,包括监测步骤,信息收集步骤和调度步骤,其特征在于:
一.监测步骤:
实时监控各虚拟机的Linux操作系统中的自旋锁操作命令,针对每台虚拟机的每个VCPU都设置一个自旋锁计数器,在Linux操作系统每个自旋锁加锁语句处,判断是否成功加锁,是则将该自旋锁加锁语句所对应的VCPU的自旋锁计数器加1,否则不进行操作;在每个自旋锁解锁语句处,将该自旋锁解锁语句所对应的VCPU的自旋锁计数器减1;所述自旋锁计数器加减操作均为原子操作,所述原子操作,是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何上下文切换;
二.信息收集步骤:
提取监测步骤所得到的每台虚拟机上各个VCPU上的自旋锁数目,并将其与每台虚拟机对应,构成每台虚拟机自旋锁计数信息;将所述每台虚拟机自旋锁计数信息写入虚拟机监视器共享内存页;
三.调度步骤:运行于各个PCPU上,虚拟机监视器按照周期T,循环执行如下子步骤:
(3.2)在Sn时刻启动窗口,窗口长度w=0.5~1.5ms;
(3.3)从虚拟机监视器共享内存页提取当前正在运行的VCPU上的自旋锁数目,并据其判断当前正在运行的VCPU是否持有锁,是则转子步骤(3.5);否则转子步骤(3.4);
(3.4)调度该VCPU,转子步骤(3.6);
(3.5)检查窗口是否已经到达结束点,是则转子步骤(3.4);否则转子步骤(3.3);
(3.6)结束本轮调度,当周期T届满时,转子步骤(3.1)。
2.如权利要求1所述的虚拟CPU调度方法,其特征在于:
所述信息收集步骤中,使用读写锁对共享内存页中的信息进行保护。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010607544 CN102053858B (zh) | 2010-12-28 | 2010-12-28 | 一种虚拟cpu调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010607544 CN102053858B (zh) | 2010-12-28 | 2010-12-28 | 一种虚拟cpu调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102053858A CN102053858A (zh) | 2011-05-11 |
CN102053858B true CN102053858B (zh) | 2013-05-22 |
Family
ID=43958212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010607544 Expired - Fee Related CN102053858B (zh) | 2010-12-28 | 2010-12-28 | 一种虚拟cpu调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102053858B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222014B (zh) * | 2011-06-16 | 2013-05-22 | 华中科技大学 | 基于内存热插拔的虚拟机动态内存管理方法 |
CN103473135B (zh) * | 2013-09-23 | 2016-08-24 | 中国科学技术大学苏州研究院 | 虚拟化环境下自旋锁lhp现象的处理方法 |
CN103729242B (zh) * | 2013-12-19 | 2017-02-08 | 华为技术有限公司 | 一种自旋锁抢占调度算法选择方法及装置 |
CN103777995B (zh) * | 2013-12-20 | 2017-02-01 | 华中科技大学 | 虚拟化环境下基于群调度的同步优化调度系统和调度方法 |
CN104951396B (zh) | 2014-03-31 | 2018-01-30 | 国际商业机器公司 | 基于虚拟机创建软件性能测试环境的方法和装置 |
CN105550036A (zh) * | 2015-12-09 | 2016-05-04 | 浪潮电子信息产业股份有限公司 | 一种基于云计算的准入控制算法 |
CN107341066B (zh) * | 2016-11-30 | 2020-07-07 | 杭州迪普科技股份有限公司 | 一种线程空转频率基准值的获取方法及装置 |
CN108959015A (zh) * | 2017-05-19 | 2018-12-07 | 北京京东尚科信息技术有限公司 | 判断系统或系统模块是否阻塞的方法和装置 |
CN108446181A (zh) * | 2018-03-26 | 2018-08-24 | 武汉斗鱼网络科技有限公司 | 对资源限制访问的方法、装置及终端设备 |
CN113886077A (zh) * | 2021-09-28 | 2022-01-04 | 北京威努特技术有限公司 | 一种针对cpu上下文切换的性能提升方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470635A (zh) * | 2007-12-24 | 2009-07-01 | 联想(北京)有限公司 | 一种多虚拟处理器同步调度的方法及计算机 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8201169B2 (en) * | 2009-06-15 | 2012-06-12 | Vmware, Inc. | Virtual machine fault tolerance |
-
2010
- 2010-12-28 CN CN 201010607544 patent/CN102053858B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101470635A (zh) * | 2007-12-24 | 2009-07-01 | 联想(北京)有限公司 | 一种多虚拟处理器同步调度的方法及计算机 |
Also Published As
Publication number | Publication date |
---|---|
CN102053858A (zh) | 2011-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102053858B (zh) | 一种虚拟cpu调度方法 | |
Gu et al. | {CertiKOS}: An extensible architecture for building certified concurrent {OS} kernels | |
Wu et al. | Flep: Enabling flexible and efficient preemption on gpus | |
Patel et al. | Embedded hypervisor xvisor: A comparative analysis | |
Song et al. | Schedule processes, not VCPUs | |
US10176014B2 (en) | System and method for multithreaded processing | |
Elteir et al. | Enhancing mapreduce via asynchronous data processing | |
Cheng et al. | vScale: Automatic and efficient processor scaling for SMP virtual machines | |
CN101788920A (zh) | 一种基于处理器分区技术的cpu虚拟化方法 | |
CN102073535B (zh) | 基于硬件计数器虚拟化的多虚拟机性能分析方法 | |
Ye et al. | Two optimization mechanisms to improve the isolation property of server consolidation in virtualized multi-core server | |
CN103617071B (zh) | 一种资源独占及排它的提升虚拟机计算能力的方法及装置 | |
Gottschlag et al. | Automatic core specialization for AVX-512 applications | |
Miao et al. | FlexCore: Dynamic virtual machine scheduling using VCPU ballooning | |
Ma et al. | Performance Tuning Towards a KVM-based Embedded Real-Time Virtualization System. | |
Garg et al. | Share-a-GPU: Providing simple and effective time-sharing on GPUs | |
Chen et al. | Smcompactor: a workload-aware fine-grained resource management framework for gpgpus | |
US7895581B2 (en) | Profiling collector for computer system | |
US9836323B1 (en) | Scalable hypervisor scheduling of polling tasks | |
Teabe et al. | (no) compromis: Paging virtualization is not a fatality | |
Deng et al. | Symbiotic scheduling for virtual machines on SMT processors | |
Zhang et al. | ANOLE: A profiling-driven adaptive lock waiter detection scheme for efficient MP-guest scheduling | |
CN111459620A (zh) | 安全容器操作系统到虚拟机监控器的信息调度方法 | |
Peng et al. | Towards efficient work-stealing in virtualized environments | |
An et al. | Providing scalable single‐operating‐system NUMA abstraction of physically discrete resources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130522 Termination date: 20151228 |
|
EXPY | Termination of patent right or utility model |