CN102053858B - 一种虚拟cpu调度方法 - Google Patents

一种虚拟cpu调度方法 Download PDF

Info

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
Application number
CN 201010607544
Other languages
English (en)
Other versions
CN102053858A (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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN 201010607544 priority Critical patent/CN102053858B/zh
Publication of CN102053858A publication Critical patent/CN102053858A/zh
Application granted granted Critical
Publication of CN102053858B publication Critical patent/CN102053858B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

一种虚拟CPU调度方法,属于计算系统虚拟化技术领域,解决锁持有者抢占问题,以提高多处理机系统中虚拟机的性能。本发明用于多处理机虚拟化环境,包括监测步骤,信息收集步骤和调度步骤,监测步骤实时监控各虚拟机操作系统中的自旋锁操作命令;信息收集步骤提取监测步骤所得到的自旋锁数目,并将其构成自旋锁计数信息;调度步骤根据从信息收集步骤提取的自旋锁计数信息,采用公平高效的调度方法对VCPU进行调度。与现有技术相比,本发明对是否处于可调度状态的检测更为精确,提高了PCPU的利用率,调度策略具有灵活性与可扩展性,兼具公平性,有效解决了锁持有者抢占问题,极大地提高了多处理机系统中虚拟机的性能。

Description

一种虚拟CPU调度方法
技术领域
本发明属于计算系统虚拟化技术领域,具体涉及一种虚拟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.1)计算窗口启动时间Sn
Figure GDA00002626933100031
式中,Sn为本轮调度窗口启动时间,En是本轮调度对各个VCPU所分配时间片的结束时刻,Pi为第i轮调度抢占点,Si为第i轮调度窗口启动时间;
(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。
本发明目的是选择一个窗口启动时间Sn,使得抢占点Pn的平均值与所分配VCPU时间片实际结束时刻En保持一致(即使得
Figure GDA00002626933100051
)。这样就可以保证VCPU调度的公平性。
设On为Sn与En间的偏移量,可以推导出,在第n轮调度中,Sn和Pn之间的平均距离等于一个偏移量On,即
Figure GDA00002626933100052
而在第n+1轮调度中,偏移量
Figure GDA00002626933100061
所以可得On+1=On+Pn-Sn。由图5可知,Sn+1=En+1-On+1,即所以,在第n轮调度中,在En时刻之前发生的抢占,将导致第n+1轮调度中,窗口向右滑动,这样就减少了提前抢占的发生(见图5的下半部分)。相反的,在En时刻之前发生的抢占将导致第n+1轮调度中,窗口向左滑动,造成更多的提前抢占的机会。
实施例:
为了验证本发明的可行性和有效性,本发明的步骤可编写为计算机程序,加载到Xen系统,并和一个没有采用本发明的原始Xen系统进行比较。
本实施例共采用两台硬件配置相同的计算机,其中计算机PC1安装了具有本发明步骤的Xen系统,计算机PC2安装原始的Xen系统。
表1:实验配置环境
Figure GDA00002626933100063
在计算机PC1和计算机PC2上,分别启动虚拟机VM1和虚拟机VM2,在VM1和VM2上分别运行同样的Apache Web服务负载,运行结果如表2所示。
在VM1和VM2上分别运行同样的一个常用的性能评测工具:斯坦福共享内存的并行应用负载splash(Stanford Parallel Applications for SharedMemory),运行结果如表3所示。
表2:Apache Web服务负载运行结果
Figure GDA00002626933100071
表3 splash负载运行结果
Figure GDA00002626933100072

Claims (2)

1.一种虚拟CPU调度方法,用于多处理机虚拟化环境,包括监测步骤,信息收集步骤和调度步骤,其特征在于:
一.监测步骤:
实时监控各虚拟机的Linux操作系统中的自旋锁操作命令,针对每台虚拟机的每个VCPU都设置一个自旋锁计数器,在Linux操作系统每个自旋锁加锁语句处,判断是否成功加锁,是则将该自旋锁加锁语句所对应的VCPU的自旋锁计数器加1,否则不进行操作;在每个自旋锁解锁语句处,将该自旋锁解锁语句所对应的VCPU的自旋锁计数器减1;所述自旋锁计数器加减操作均为原子操作,所述原子操作,是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何上下文切换;
二.信息收集步骤:
提取监测步骤所得到的每台虚拟机上各个VCPU上的自旋锁数目,并将其与每台虚拟机对应,构成每台虚拟机自旋锁计数信息;将所述每台虚拟机自旋锁计数信息写入虚拟机监视器共享内存页;
三.调度步骤:运行于各个PCPU上,虚拟机监视器按照周期T,循环执行如下子步骤:
(3.1)计算窗口启动时间Sn
Figure FDA00002626933000011
式中,Sn为本轮调度窗口启动时间,En是本轮调度对各个VCPU所分配时间片的结束时刻,Pi为第i轮调度抢占点,Si为第i轮调度窗口启动时间;
(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调度方法,其特征在于:
所述信息收集步骤中,使用读写锁对共享内存页中的信息进行保护。
CN 201010607544 2010-12-28 2010-12-28 一种虚拟cpu调度方法 Expired - Fee Related CN102053858B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101470635A (zh) * 2007-12-24 2009-07-01 联想(北京)有限公司 一种多虚拟处理器同步调度的方法及计算机

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8201169B2 (en) * 2009-06-15 2012-06-12 Vmware, Inc. Virtual machine fault tolerance

Patent Citations (1)

* Cited by examiner, † Cited by third party
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