具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
本申请实施例提供的方案可应用于任何具有资源配置能力的系统,例如包括有多个虚拟机的计算系统等等。图1b为本申请实施例提供的资源配置方案的应用场景示意图,图1b所示的场景仅仅是本申请的技术方案的原理的示例之一。
随着虚拟化计算技术发展,使得人们能够使用有限的物理计算资源执行更加灵活的各种计算任务。例如,在主流虚拟化场景(如KVM)下,用户态负责创建并管理虚拟机,每个虚拟机在Linux系统中以进程的形式存在,该虚拟机可以具有多个vCPU(virtual centralprocessing unit,虚拟中央处理单元),每一个vCPU可以在虚拟机进程中的一个线程上运行,称为vCPU线程。用户态的vCPU线程在运行时,进入处理器非根模式运行虚拟机代码,当虚拟机执行特权指令时,会退出非根模式进行处理或模拟。对于广泛使用的独享型虚拟机实例来说,每个vCPU线程会独占一个专用的计算核去运行。
在该情况下,通常会根据当前计算任务的需要或者虚拟机规划的需要而创建虚拟机,例如,如图1a中所示,图1a是根据现有技术中的资源配置方案的原理示意图,虚拟机A是之前根据某个或多个计算需求的执行而创建的,其可以具有四个vCPU并且每个vCPU都可以分别运行在一个vCPU线程上,并且每个vCPU线程都与实际的物理计算资源,例如,图1a中所示的计算核进行绑定,从而虚拟机A,或者说其四个vCPU看就可以通过各自的vCPU线程而运行在四个计算核上。之后,随着计算任务的执行,会出现当前已经创建的虚拟机A的规格,即四个vCPU的使用率不饱和,因此,就可以从已有的虚拟机A中切分计算资源,即一部分CPU计算资源以供其他系统(比如构建一个新的虚拟机)使用,在该情况下,通常是由虚拟机A内部下线一部分CPU,以让出物理计算核资源以供目标系统运行使用。
例如,在如图1a中所示的现有技术的原理示意图中,当需要虚拟机A让出在vCPU-x和vCPU-y这两个线程对应的计算核x和y时,也就是说,在该情况下,虚拟机A的运行在vCPU-x和vCPU-y这两个线程上的两个vCPU暂时没有计算任务,因此,可以将其临时从虚拟机A卸下来创建一个新的虚拟机B,以便于提高计算核x和y的利用率。为此,在如图1a中所示的现有技术中,虚拟机A可以先将vCPU-x和vCPU-y这两个虚拟机下线,例如标记为不可用,同时使得vCPU-x线程和vCPU-y线程这两个线程进入睡眠状态,从而将这两个线程与物理计算核x和y解绑。这样,原本运行虚拟机A的vCPU-x和vCPU-y上的计算任务的计算核就脱离了虚拟机A的管理,变为可自由分配的计算资源,例如,可以用于创建新的虚拟机B。
这时,虚拟机B就可以创建自己的线程来使用空余出来的计算核x和y。在创建线程时,通常需要虚拟机为该线程与对应的计算核之间的绑定关系进行设置。但是由于虚拟机B是直接使用的虚拟机A下线的计算核,因此,例如,虚拟机B可以直接复用虚拟机A的vCPU-x线程和vCPU-y线程与对应的计算核x和计算核y的绑定设置来设置为其创建的vCPU-x’线程和vCPU-y’线程。
但是在该情况下,由于在创建虚拟机B的上述过程中,为虚拟机B创建了新的vCPU-x’线程和vCPU-y’线程,而增加了资源开销。其次,由于在创建新的vCPU-x’线程和vCPU-y’线程时复用了原虚拟机A的已下线vCPU线程与相应计算核的绑定设置,即这两个计算核x和y仍然复用了虚拟机A对于核心和线程的设置,因此使得后期调整原虚拟机A的绑定设置时,这两个已经借给虚拟机B使用的核心x和y也需要由虚拟机B负责进行同步调整以适应虚拟机A的新的设置,即,虚拟机A需要将调整后的设置转发给虚拟机B,并且虚拟机B需要根据其vCPU-x’线程和vCPU-y’线程当前执行的计算任务而例如等待当前循环结束之后才能够更改其线程与核心的绑定设置,因此增加了管控的复杂度。此外,在如图1a中所示的现有技术中,由于虚拟机A的在将计算资源转移给虚拟机B时,仅将vCPU-x线程和vCPU-y线程进入睡眠状态而不是彻底杀掉,因此,例如在虚拟机A遭受恶意攻击而直接将这两个已进入休眠状态的vCPU-x线程和vCPU-y线程强制上线,即,在没有B将计算核x和y完成归还操作的情况下,甚至是在虚拟机B仍然在使用计算核x和y时就直接让虚拟机A的vCPU-x线程和vCPU-y线程上线,即又绑定到了计算核x和计算核y上,因此,在该情况下,计算核x和y上同时绑定了虚拟机A和虚拟机B的线程,即,虚拟机A和虚拟机B的vCPU线程共享运行于相同计算核,从而恶意攻击虚拟机A的攻击方就可以利用侧信道攻击来窥探虚拟机B的隐私。
为此,本申请实施例提出了一种资源配置方法,例如,如图1b中所示,在本申请实施例的资源配置方案中,当虚拟机A需要释放出计算核x和计算核y以将其切换给虚拟机B使用时,虚拟机A仍然是可以将vCPU-x和vCPU-y这两个虚拟处理器下线,例如标记为不可用,之后,与现有技术中不同的是,根据本申请实施例,虚拟机A没有使vCPU-x线程和vCPU-y线程这两个线程进入睡眠状态,而是将这两个线程直接分配给虚拟机B使用,同时保持与物理计算核x和y的绑定关系。因此,原本运行虚拟机A的vCPU-x和vCPU-y上的计算任务的计算核就脱离了虚拟机A的管理,变为由虚拟机B使用,例如由虚拟机B的两个虚拟处理器使用。因此,在该情况下,由于直接将虚拟机A的vCPU-x线程(对应于计算核x)和vCPU-y线程(对应于计算核y)切换给虚拟机B使用,因此,完全省去了现有技术中切换之后的线程和计算核之间的绑定设置的复用。
此外,根据本申请实施例,在将虚拟机A的vCPU-x线程和vCPU-y线程这两个线程切换给虚拟机B使用之后,可以额外为每个线程配置运行标志符,以标识该线程当前正在运行哪个虚拟机。例如,在如图1b中所示,在切换之后,可以在当前已经切换给虚拟机B使用的vCPU-x线程和vCPU-y线程这两个线程上分别设置运行标志符来标识这两个线程当前运行的虚拟机是虚拟机B。因此,在虚拟机B在每个计算循环结束之后可以先检查每个线程上的该运行标志符以确定应该运行哪个虚拟机,例如,在切换给虚拟机B之后,vCPU-x线程和vCPU-y线程这两个线程的每个线程上的运行标志符可以设置为B,以标识当前正在运行虚拟机B,并且当虚拟机B执行完当前的计算循环之后,在执行下一次计算循环之前可以先例如进入用户态以检查该运行标志符,并且如果该运行标志符还是标识虚拟机B,则虚拟机B可以继续使用vCPU-x线程和vCPU-y线程这两个线程来执行下一次计算循环。但是,如果在虚拟机B执行当前计算循环时虚拟机A需要使用这两个线程,则可以根据虚拟机A的使用请求来相应地修改这两个线程的运行标志符。例如,如图1b中所示,当虚拟机A需要回收这两个线程时,可以在虚拟机B执行当前计算循环期间就将这两个线程的运行标志符修改为标识虚拟机A,从而当虚拟机B执行完当前计算循环之后,通过检查这两个线程上的运行标志符而确认需要将这两个线程归还给虚拟机A,则可以终止虚拟机B的下一次计算循环而停止在这两个线程上运行虚拟机B。此外,当虚拟机A只是需要暂时使用这两个线程,例如,需要进行同步操作等等,则可以仅将虚拟机B所使用的的这两个线程停止运行虚拟机B,并且将这两个线程重新与虚拟机A匹配,从而虚拟机A可以使用这两个线程进行所需操作,并且在执行完所需操作之后可以将这两个线程在重新归还给虚拟机B。但是在该过程中,由于虚拟机A只是临时使用这两个线程,因此vCPU-x线程和vCPU-y线程这两个线程上的运行标志符保持不变,因此,在虚拟机A使用完这两个线程而将这两个线程释放出来之后,虚拟机B可以通过检查这两个线程上的运行标志符而再次确定这两个线程是由自己使用,因此就可以在下一次计算循环中将这两个线程切换给虚拟机B使用。
本申请实施例提供的资源配置方案,通过根据计算资源切换指令和第一虚拟机的计算资源来将在待切换给第二虚拟机使用的计算核的其上运行的线程切换为运行第二虚拟机,从而在第一虚拟机和第二虚拟机之间切换计算资源时,保留了计算核与线程之间的绑定关系,解决了现有技术中由于原虚拟机的绑定核设置的调整带来的两个虚拟机的设置同步的问题,大大降低了管控的复杂度,并且由于在两个虚拟机的资源切换过程中没有创建新的线程,这样实现了两个虚拟机分别占用同一个线程中实现互斥运行,从而实现了隐私隔离。
根据本申请实施例的资源配置方案由于其不仅能够降低管控复杂度而且还能够实现虚拟机切换过程中的隐私隔离,因此可以应用于例如电商平台来提高管理效率同时避免客户信息泄露。例如,本申请的资源配置方案可以应用于搭建电商平台的虚拟机系统中。例如,在虚拟机系统的虚拟机A可以用于运行租户A的电商平台,并且当租户B也使用该虚拟机系统来执行其自己的任务时,虚拟机系统的管理模块根据虚拟机A的运行状况发现租户A当时的任务量不多,其虚拟机A所占用的四个计算核还有空余,即计算核x闲置,因此,使用根据本申请实施例的资源配置方案的虚拟机系统就可以如上所述地将虚拟机A从计算核x对应的线程x下线,并且将该计算核x的线程x分配给租户B使用,例如为租户B使用该线程x创建一个虚拟机或者将该线程x加入到租户B的原有虚拟机资源中来运行租户B的任务。因此,由于根据本申请实施例的资源配置方案在切换线程给不同虚拟机时是以互斥的方式进行的,即,在将计算核x的线程x切换给租户B使用时已经将租户A原本运行在该计算核x的线程x上的电商平台下线了,因此在该线程x上也不会再存在该租户A的电商平台的数据,因此,租户B在使用该线程x时也不会由于数据的残留而看到租户A的电商平台的数据。特别地,在本申请实施例中,如果租户A由于其运营的电商平台的任务量剧增而需要要回该线程x时,由于本申请实施例的资源配置方案只允许线程以互斥的方式运行虚拟机,因此,当租户A需要要回线程x时,虚拟机系统的管理模块可以中断租户B的执行任务,并且将租户B的任务从线程x下线,从而租户B的数据也从线程x中消失,因此当线程x再次运行租户A的电商平台时,租户A的电商平台也无法获取到线程x中之前运行的租户B的数据。因此,根据本申请实施例的资源配置方案能够帮助运行电商平台的虚拟机系统实现资源的灵活管控,而且还能够确保电商平台上的数据在虚拟机资源切换的安全性。
根据本申请实施例的资源配置方案由于其不仅能够降低管控复杂度而且还能够实现虚拟机切换过程中的隐私隔离,因此可以应用于例如电信事务来提高管理效率同时避免客户信息泄露。例如,本申请的资源配置方案可以应用于执行电信事务的虚拟机系统中。例如,在虚拟机系统的虚拟机A可以用于运行租户A的电信事务,并且当租户B也使用该虚拟机系统来执行其自己的任务时,虚拟机系统的管理模块根据虚拟机A的运行状况发现租户A当时的任务量不多,其虚拟机A所占用的四个计算核还有空余,即计算核x闲置,因此,使用根据本申请实施例的资源配置方案的虚拟机系统就可以如上所述地将虚拟机A从计算核x对应的线程x下线,并且将该计算核x的线程x分配给租户B使用,例如为租户B使用该线程x创建一个虚拟机或者将该线程x加入到租户B的原有虚拟机资源中。因此,由于根据本申请实施例的资源配置方案在切换线程给不同虚拟机时是以互斥的方式进行的,即,在将计算核x的线程x切换给租户B使用时已经将租户A原本运行在该计算核x的线程x上的电信事务下线了,因此在该线程x上也不会再存在该租户A之前运行的电信事务,特别是用户的数据,因此,租户B在使用该线程x时也不会由于数据的残留而看到租户A的电信事务的数据。特别地,在本申请实施例中,如果租户A由于其运营的电信事务的任务量剧增而需要要回该线程x时,由于本申请实施例的资源配置方案只允许线程以互斥的方式运行虚拟机,因此,当租户A需要要回线程x时,虚拟机系统的管理模块可以中断租户B的执行任务,并且将租户B的任务从线程x下线,从而租户B的数据也从线程x中消失,因此当线程x再次运行租户A的电信事务时,租户A也无法获取到线程x中之前运行的租户B的数据。因此,根据本申请实施例的资源配置方案能够帮助运行电信事务的虚拟机系统实现资源的灵活管控,而且还能够确保电信事务相关的数据在虚拟机资源切换的安全性。
根据本申请实施例的资源配置方案由于其能够降低管控复杂度,因此可以应用于例如音视频处理来提高处理效率。例如,本申请的资源配置方案可以应用于执行音视频处理的虚拟机系统中。例如,在虚拟机系统的虚拟机A可以用于为租户A处理音视频文件,例如点播或流媒体等,并且当租户B也使用该虚拟机系统来执行其自己的任务时,虚拟机系统的管理模块根据虚拟机A的运行状况发现租户A当前需要处理的音视频数据不多,其虚拟机A所占用的四个计算核还有空余,例如计算核x闲置,因此,使用根据本申请实施例的资源配置方案的虚拟机系统就可以如上所述地将虚拟机A从计算核x对应的线程x下线,并且将该计算核x的线程x分配给租户B使用,例如为租户B使用该线程x创建一个虚拟机或者将该线程x加入到租户B的原有虚拟机资源中。因此,租户A从切换时刻开始实际上仅使用了虚拟机系统的三个计算核,因此在为租户A计费时可以相应地减少租户A的资源使用费用,并且甚至可以在租户A与租户B达成协议的情况下,租户A将自己的计算核x出租给租户B临时使用。这样不仅提高了虚拟机系统中计算资源的利用率,而且由于根据本申请实施例的资源配置方案在切换线程给不同虚拟机时保持了计算核与线程之间的绑定关系,因此对于租户A来说,释放线程给租户B以及在自己任务量增加的情况下要回该线程继续使用都是极为方便的,无需进行特别的设置和管理,因此提高了计算资源在租户之间,即虚拟机之间转换的管理效率。
根据本申请实施例的资源配置方案由于其能够降低管控复杂度,因此可以应用于例如人工智能计算来提高处理效率。人工智能计算通常需要大量的计算资源,因此,本申请的资源配置方案可以应用于执行人工智能处理的虚拟机系统中。例如,在虚拟机系统的虚拟机A可以用于为租户A执行人工智能任务,例如模型训练等,并且当租户B也使用该虚拟机系统来执行其自己的任务时,虚拟机系统的管理模块根据虚拟机A的运行状况发现租户A当前的人工智能计算任务不多,其虚拟机A所占用的四个计算核还有空余,例如计算核x闲置,因此,使用根据本申请实施例的资源配置方案的虚拟机系统就可以如上所述地将虚拟机A从计算核x对应的线程x下线,并且将该计算核x的线程x分配给租户B使用,例如为租户B使用该线程x创建一个虚拟机或者将该线程x加入到租户B的原有虚拟机资源中。因此,租户A从切换时刻开始实际上仅使用了虚拟机系统的三个计算核,因此在为租户A计费时可以相应地减少租户A的资源使用费用,并且甚至可以在租户A与租户B达成协议的情况下,租户A将自己的计算核x出租给租户B临时使用。这样不仅提高了虚拟机系统中计算资源的利用率,而且由于根据本申请实施例的资源配置方案在切换线程给不同虚拟机时保持了计算核与线程之间的绑定关系,因此对于租户A来说,释放线程给租户B以及在自己任务量增加的情况下要回该线程继续使用都是极为方便的,无需进行特别的设置和管理,因此提高了计算资源在租户之间,即虚拟机之间转换的管理效率。
根据本申请实施例的资源配置方案由于其能够降低管控复杂度,因此可以应用于例如在线售票平台来提高处理效率。特别地,在线售票的任务繁忙程度在很大程度上依赖于要出售的票对应的演出或时机,例如节假日等等。因此本申请的资源配置方案可以应用于运行在线售票平台的虚拟机系统中。例如,在虚拟机系统的虚拟机A可以用于为租户A运行在线售票平台等,并且当租户B也使用该虚拟机系统来执行其自己的任务,当当天为节假日的售票开始日或者当天出售的票是热门节目的票时,虚拟机A发现当前的计算资源不足以处理剧增的用户购票请求。因此,虚拟机系统的管理模块可以根据虚拟机A的请求,为虚拟机A从虚拟机B划拨一个或多个计算核来给虚拟机A使用。例如,使用根据本申请实施例的资源配置方案的虚拟机系统就可以如上所述地将虚拟机B从要临时分配给虚拟机A使用的计算核x和计算核y对应的线程x和线程y下线,并且将该计算核x的线程x和计算核y的线程y分配给租户A使用,即将该线程x和线程y直接加入到租户B的原有虚拟机资源中。因此,通过本申请的资源配置方案,由于在虚拟机A需要临时线程时,仅需要将对应的虚拟机从该线程下线,并下线之后将线程直接运行虚拟机A,这样不仅提高了虚拟机系统中计算资源的利用率,而且由于根据本申请实施例的资源配置方案在切换线程给不同虚拟机时保持了计算核与线程之间的绑定关系,因此提高了切换效率,能够很好地处理在线售票平台的任务突然剧增需要大量的临时计算资源的问题。
上述实施例是对本申请实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本申请实施例具体技术方案进行详细描述。
实施例二
图2为本申请提供的资源配置方法一个实施例的流程图,该方法的执行主体可以为具有资源配置能力的各种终端或服务器设备,也可以为集成在这些设备上的装置或芯片。如图2所示,该资源配置方法包括如下步骤:
S201,获取第一虚拟机的第一计算资源。
在本申请实施例中,可以在当前正在运行的第一虚拟机运行期间获取该虚拟机的计算资源。特别地,本申请涉及对于虚拟机所使用的计算资源在两个或多个虚拟机之间的配置,例如,如图1b中所示,在当前已经正在运行的虚拟机A与新创建的虚拟机B之间进行资源配置。为此,在步骤S201可以先获取第一虚拟机的第一计算资源,该第一计算资源可以包括第一虚拟机当前正在使用的计算核和计算核上运行的第一线程。例如,如图1b中所示,当前运行的第一虚拟机可以是虚拟机A,并且该第一计算资源可以是运行虚拟机A的四个CPU的四个线程以及与线程一一绑定的四个物理计算核。这些计算资源就可以构成将来在虚拟机A与虚拟机B之间的资源配置的配置基础。
S202,接收计算资源切换指令。
当在虚拟机A运行期间,由于例如虚拟机A的计算任务的变化使得虚拟机A的计算资源的一部分可出让给其他的虚拟机,例如如图1b中所示的虚拟机B。为此,在步骤S202中可以接收针对当前虚拟机A的出让资源的计算资源切换指令。例如,在步骤S202中接收到的计算资源切换指令可以指示将例如图1b中所示的虚拟机A的第一虚拟机的至少一个计算核切换给例如虚拟机B的第二虚拟机使用。
S203,根据计算资源切换指令以及第一计算资源确定第一计算资源中待切换的计算核以及对应的第一线程。
当在步骤S202中接收到计算资源切换指令之后,可以在步骤S203中根据该计算资源切换指令和步骤S201中获取到的第一计算资源来确定在例如虚拟机A的第一虚拟机的第一计算资源中需要切换给第二虚拟机的计算核。例如,在步骤S202中接收到的计算资源切换指令可以是将虚拟机A所使用的的四个线程及其对应的四个计算核中的两个切换给虚拟机B,并且根据步骤S201中获取的第一计算资源中的线程以及计算核的状态而确定vCPU-x线程和vCPU-y线程目前处于空闲状态是属于可出让的计算资源。因此,在步骤S203中可以确认将vCPU-x线程和vCPU-y线程切换给虚拟机B使用。
S204,将第一线程切换为运行第二虚拟机。
在步骤S203中确定了将vCPU-x线程和vCPU-y线程切换给虚拟机B使用之后,在步骤S204中可以将步骤S203中所述确定的第一线程,例如,vCPU-x线程和vCPU-y线程与第一虚拟机解除使用关系,并且在这两个线程上运行第二虚拟机,例如虚拟机B。
本申请实施例提供的资源配置方法,通过根据计算资源切换指令和第一虚拟机的计算资源来将在待切换给第二虚拟机使用的计算核的其上运行的线程切换为运行第二虚拟机,从而在第一虚拟机和第二虚拟机之间切换计算资源时,保留了计算核与线程之间的绑定关系,解决了现有技术中由于原虚拟机的绑定核设置的调整带来的两个虚拟机的设置同步的问题,大大降低了管控的复杂度,并且由于在两个虚拟机的资源切换过程中没有创建新的线程,这样实现了两个虚拟机分别占用同一个线程中实现互斥运行,从而实现了隐私隔离。
实施例三
图3为本申请提供的资源配置方法另一个实施例的流程图,该方法的执行主体可以为具有资源配置能力的各种终端或服务器设备,也可以为集成在这些设备上的装置或芯片。如图3所示,该资源配置法包括如下步骤:
S301,获取第一虚拟机的第一计算资源。
在本申请实施例中,可以在当前正在运行的第一虚拟机运行期间获取该虚拟机的计算资源。特别地,本申请涉及对于虚拟机所使用的计算资源在两个或多个虚拟机之间的配置,例如,如图1b中所示,在当前已经正在运行的虚拟机A与新创建的虚拟机B之间进行资源配置。为此,在步骤S301可以先获取第一虚拟机的第一计算资源,该第一计算资源可以包括第一虚拟机当前正在使用的计算核和计算核上运行的第一线程。例如,如图1b中所示,当前运行的第一虚拟机可以是虚拟机A,并且该第一计算资源可以是运行虚拟机A的四个CPU的四个线程以及与线程一一绑定的四个物理计算核。这些计算资源就可以构成将来在虚拟机A与虚拟机B之间的资源配置的配置基础。
S302,接收计算资源切换指令。
当在虚拟机A运行期间,由于例如虚拟机A的计算任务的变化使得虚拟机A的计算资源的一部分可出让给其他的虚拟机,例如如图1b中所示的虚拟机B。为此,在步骤S302中可以接收针对当前虚拟机A的出让资源的计算资源切换指令。例如,在步骤S302中接收到的计算资源切换指令可以指示将例如图1b中所示的虚拟机A的第一虚拟机的至少一个计算核切换给例如虚拟机B的第二虚拟机使用。
S303,根据计算资源切换指令以及第一计算资源确定第一计算资源中待切换的计算核以及对应的第一线程。
当在步骤S302中接收到计算资源切换指令之后,可以在步骤S303中根据该计算资源切换指令和步骤S301中获取到的第一计算资源来确定在例如虚拟机A的第一虚拟机的第一计算资源中需要切换给第二虚拟机的计算核。例如,在步骤S302中接收到的计算资源切换指令可以是将虚拟机A所使用的的四个线程及其对应的四个计算核中的两个切换给虚拟机B,并且根据步骤S301中获取的第一计算资源中的线程以及计算核的状态而确定vCPU-x线程和vCPU-y线程目前处于空闲状态是属于可出让的计算资源。因此,在步骤S303中可以确认将vCPU-x线程和vCPU-y线程切换给虚拟机B使用。
S304,将第一线程切换为运行第二虚拟机并且保持第一线程与计算核的绑定关系不变。
在步骤S303中确定了将vCPU-x线程和vCPU-y线程切换给虚拟机B使用之后,在步骤S304中可以将步骤S203中所述确定的第一线程,例如,vCPU-x线程和vCPU-y线程与第一虚拟机解除使用关系,并且在这两个线程上运行第二虚拟机,例如虚拟机B,并且同时保持这些vCPU-x线程和vCPU-y与对应的计算核x和y之间的绑定关系,从而第二虚拟机B可以在无需进行任何线程与计算核的绑定设置的情况下直接运行其计算任务,例如其vCPU-x’和vCPU-y’。
在步骤S304将第一虚拟机A的vCPU-x线程和vCPU-y线程这两个线程切换给第二虚拟机B使用的情况下,为了在循环中识别当前线程所运行的虚拟机,可以进一步为切换的这两个线程中的每个线程配置运行标志符,以标识该线程当前正在运行哪个虚拟机。因此,本申请实施例的资源配置方法可以进一步包括:
S305,将运行标志符修改为标识第二虚拟机。
在每个线程设置有运行标志符来指示线程当前运行的虚拟机的情况下,在上述虚拟机A将vCPU-x线程和vCPU-y线程配置给虚拟机B使用时,可以将线程上设置的运行标志符从A修改为B,以指示该两个线程已经被切换给第二虚拟机B使用了。从而,在虚拟机A或B执行完当前计算循环之后开始下一个计算循环之前可以先检查该运行标志符,以确定线程应由哪个虚拟机使用,或者更具体地,可以确定线程应该由哪个虚拟机的哪个虚拟处理器使用。
例如,在步骤S304将vCPU-x线程和vCPU-y线程切换给虚拟机B使用并且在步骤S305将运行标志符修改为指示当前运行虚拟机B,则当虚拟机B执行完当前的计算循环之后,在执行下一次计算循环之前可以先例如进入用户态以检查该运行标志符,并且如果该运行标志符还是标识虚拟机B,则表示在虚拟机B执行上一个计算循环期间,没有额外的指令要求这两个线程由其他虚拟机使用,因此虚拟机B可以继续使用vCPU-x线程和vCPU-y线程这两个线程来执行下一次计算循环。但是,如果在虚拟机B执行当前计算循环时虚拟机A需要使用这两个线程,则可以根据虚拟机A的使用请求来相应地修改这两个线程的运行标志符。例如,本申请实施例的资源配置方法可以进一步包括:
S306,接收来自第一虚拟机的第一退出指令。
在步骤S304中虚拟机A将vCPU-x线程和vCPU-y线程切换给虚拟机B使用,从而虚拟机B在使用这两个线程执行其计算任务期间,可以在步骤S306接收来自第一虚拟机A的指令,以便于在使用从虚拟机A切换来的线程期间添加对虚拟机A的指令的响应。例如,虚拟机A可以向虚拟机B发送第一退出指令,该第一退出指令可以指示第一虚拟机A对于第一线程的临时占用。即,虚拟机A需要临时占用这两个切换给虚拟机B使用的线程。
S3061,将第一线程切换为运行第一虚拟机。
S3062,在临时占用结束时将第一线程切换为运行第二虚拟机。
因此,虚拟机B在执行完当前的计算循环之后,可以根据步骤S306中接收到的该退出指令而退出这两个线程,并且在步骤S3061中切换给第一虚拟机A使用,特别地,由于虚拟机A是临时占用,因此,在该情况下,不需要将这两个线程上的运行标志符进行修改,例如修改为指示虚拟机A,而是可以仍然保持为指示虚拟机B,从而在虚拟机A执行完该临时占用的计算任务之后,可以再次在步骤S3062中将这两个线程切换为运行第二虚拟机B。
S307,接收来自第一虚拟机的第二退出指令。
此外,当虚拟机A需要回收这两个线程时,就可以向虚拟机B发送第二退出指令,并且从而可以在步骤S307中接收该第二退出指令,该第二退出指令例如可以指示第一虚拟机对于第一线程的回收。
S308,将第一线程切换为运行第一虚拟机。
因此,虚拟机B就可以在运行期间根据虚拟机A的指示线程回收的指令而将线程归还给虚拟机A来使用。特别地,在线程上设置有运行标志符的情况下,
步骤S308可以进一步包括:
S3081,将第一线程的运行标志符修改为标识第一虚拟机。
S3082,判断第一线程对应的计算核的当前循环是否结束。
S3083,当当前循环结束时,根据运行标志符将第一线程切换为运行第一虚拟机。
例如,在虚拟机A需要回收这两个线程时,可以在虚拟机B执行当前计算循环期间就将这两个线程的运行标志符修改为标识虚拟机A,从而当虚拟机B执行完当前计算循环之后,通过检查这两个线程上的运行标志符而确认需要将这两个线程归还给虚拟机A,则可以终止虚拟机B的下一次计算循环而停止在这两个线程上运行虚拟机B。
本申请实施例提供的资源配置方法,通过根据计算资源切换指令和第一虚拟机的计算资源来将在待切换给第二虚拟机使用的计算核的其上运行的线程切换为运行第二虚拟机,从而在第一虚拟机和第二虚拟机之间切换计算资源时,保留了计算核与线程之间的绑定关系,解决了现有技术中由于原虚拟机的绑定核设置的调整带来的两个虚拟机的设置同步的问题,大大降低了管控的复杂度,并且由于在两个虚拟机的资源切换过程中没有创建新的线程,这样实现了两个虚拟机分别占用同一个线程中实现互斥运行,从而实现了隐私隔离。
实施例四
图4为本申请提供的资源配置装置实施例的结构示意图,可用于执行如图2和图3所示的方法步骤。如图4所示,该资源配置装置可以包括:获取模块41、接收模块42、确定模块43和切换模块44。
获取模块41可以用于获取第一虚拟机的第一计算资源。
在本申请实施例中,可以在当前正在运行的第一虚拟机运行期间获取该虚拟机的计算资源。特别地,本申请涉及对于虚拟机所使用的计算资源在两个或多个虚拟机之间的配置,例如,如图1b中所示,在当前已经正在运行的虚拟机A与新创建的虚拟机B之间进行资源配置。为此,获取模块41可以先获取第一虚拟机的第一计算资源,该第一计算资源可以包括第一虚拟机当前正在使用的计算核和计算核上运行的第一线程。例如,如图1b中所示,当前运行的第一虚拟机可以是虚拟机A,并且该第一计算资源可以是运行虚拟机A的四个CPU的四个线程以及与线程一一绑定的四个物理计算核。这些计算资源就可以构成将来在虚拟机A与虚拟机B之间的资源配置的配置基础。
接收模块42可以用于接收计算资源切换指令。
当在虚拟机A运行期间,由于例如虚拟机A的计算任务的变化使得虚拟机A的计算资源的一部分可出让给其他的虚拟机,例如如图1b中所示的虚拟机B。为此,接收模块42可以接收针对当前虚拟机A的出让资源的计算资源切换指令。例如,接收模块42接收到的计算资源切换指令可以指示将例如图1b中所示的虚拟机A的第一虚拟机的至少一个计算核切换给例如虚拟机B的第二虚拟机使用。
确定模块43可以用于根据计算资源切换指令以及第一计算资源确定第一计算资源中待切换的计算核以及对应的第一线程。
当接收模块42接收到计算资源切换指令之后,确定模块43可以根据该计算资源切换指令和获取模块41获取到的第一计算资源来确定在例如虚拟机A的第一虚拟机的第一计算资源中需要切换给第二虚拟机的计算核。例如,接收模块42接收到的计算资源切换指令可以是将虚拟机A所使用的的四个线程及其对应的四个计算核中的两个切换给虚拟机B,并且根据获取模块41获取的第一计算资源中的线程以及计算核的状态而确定vCPU-x线程和vCPU-y线程目前处于空闲状态是属于可出让的计算资源。因此,确定模块43可以确认将vCPU-x线程和vCPU-y线程切换给虚拟机B使用。
切换模块44可以用于将第一线程切换为运行第二虚拟机。
确定模块43确定了将vCPU-x线程和vCPU-y线程切换给虚拟机B使用之后,切换模块44可以将确定模块43所述确定的第一线程,例如,vCPU-x线程和vCPU-y线程与第一虚拟机解除使用关系,并且在这两个线程上运行第二虚拟机,例如虚拟机B,并且同时保持这些vCPU-x线程和vCPU-y与对应的计算核x和y之间的绑定关系,从而第二虚拟机B可以在无需进行任何线程与计算核的绑定设置的情况下直接运行其计算任务,例如其vCPU-x’和vCPU-y’。
切换模块44将第一虚拟机A的vCPU-x线程和vCPU-y线程这两个线程切换给第二虚拟机B使用的情况下,为了在循环中识别当前线程所运行的虚拟机,可以进一步为切换的这两个线程中的每个线程配置运行标志符,以标识该线程当前正在运行哪个虚拟机。因此,本申请实施例的资源配置装置可以进一步包括:修改模块45,其可以用于将运行标志符修改为标识第二虚拟机。
在每个线程设置有运行标志符来指示线程当前运行的虚拟机的情况下,在上述虚拟机A将vCPU-x线程和vCPU-y线程配置给虚拟机B使用时,修改模块45可以将线程上设置的运行标志符从A修改为B,以指示该两个线程已经被切换给第二虚拟机B使用了。从而,在虚拟机A或B执行完当前计算循环之后开始下一个计算循环之前可以先检查该运行标志符,以确定线程应由哪个虚拟机使用,或者更具体地,可以确定线程应该由哪个虚拟机的哪个虚拟处理器使用。
例如,切换模块44将vCPU-x线程和vCPU-y线程切换给虚拟机B使用并且修改模块45将运行标志符修改为指示当前运行虚拟机B,则当虚拟机B执行完当前的计算循环之后,在执行下一次计算循环之前可以先例如进入用户态以检查该运行标志符,并且如果该运行标志符还是标识虚拟机B,则表示在虚拟机B执行上一个计算循环期间,没有额外的指令要求这两个线程由其他虚拟机使用,因此虚拟机B可以继续使用vCPU-x线程和vCPU-y线程这两个线程来执行下一次计算循环。但是,如果在虚拟机B执行当前计算循环时虚拟机A需要使用这两个线程,则可以根据虚拟机A的使用请求来相应地修改这两个线程的运行标志符。例如,本申请实施例的接收模块42可以进一步用于:检测来自第一虚拟机的第一退出指令。
切换模块44虚拟机A将vCPU-x线程和vCPU-y线程切换给虚拟机B使用,从而虚拟机B在使用这两个线程执行其计算任务期间,接收模块42可以接收来自第一虚拟机A的指令,以便于在使用从虚拟机A切换来的线程期间添加对虚拟机A的指令的响应。例如,虚拟机A可以向虚拟机B发送第一退出指令,该第一退出指令可以指示第一虚拟机A对于第一线程的临时占用。即,虚拟机A需要临时占用这两个切换给虚拟机B使用的线程。
因此,切换模块44可以进一步用于:将第一线程切换为运行第一虚拟机,并且在临时占用结束时将第一线程切换为运行第二虚拟机。
因此,虚拟机B在执行完当前的计算循环之后,切换模块44可以根据接收模块42接收到的该退出指令而将这两个线程切换给第一虚拟机A使用,特别地,由于虚拟机A是临时占用,因此,在该情况下,不需要修改模块45将这两个线程上的运行标志符进行修改,例如修改为指示虚拟机A,而是可以仍然保持为指示虚拟机B,从而在虚拟机A执行完该临时占用的计算任务之后,可以再次通过切换模块44将这两个线程切换为运行第二虚拟机B。
接收模块42可以进一步用于接收来自第一虚拟机的第二退出指令。
此外,当虚拟机A需要回收这两个线程时,就可以向虚拟机B发送第二退出指令,并且从而接收模块42可以接收该第二退出指令,该第二退出指令例如可以指示第一虚拟机对于第一线程的回收。
切换模块44可以进一步用于将第一线程切换为运行第一虚拟机。
因此,虚拟机B就可以在运行期间根据虚拟机A的指示线程回收的指令而将线程归还给虚拟机A来使用。特别地,在线程上设置有运行标志符的情况下,
修改模块45可以进一步用于:将第一线程的运行标志符修改为标识第一虚拟机。
切换模块44可以进一步用于:判断第一线程对应的计算核的当前循环是否结束。
当当前循环结束时,根据运行标志符将第一线程切换为运行第一虚拟机。
例如,在虚拟机A需要回收这两个线程时,可以在虚拟机B执行当前计算循环期间就由修改模块45将这两个线程的运行标志符修改为标识虚拟机A,从而当虚拟机B执行完当前计算循环之后,通过检查这两个线程上的运行标志符而确认需要将这两个线程归还给虚拟机A,则可以终止虚拟机B的下一次计算循环而停止在这两个线程上运行虚拟机B。
本申请实施例提供的资源配置装置,通过根据计算资源切换指令和第一虚拟机的计算资源来将在待切换给第二虚拟机使用的计算核的其上运行的线程切换为运行第二虚拟机,从而在第一虚拟机和第二虚拟机之间切换计算资源时,保留了计算核与线程之间的绑定关系,解决了现有技术中由于原虚拟机的绑定核设置的调整带来的两个虚拟机的设置同步的问题,大大降低了管控的复杂度,并且由于在两个虚拟机的资源切换过程中没有创建新的线程,这样实现了两个虚拟机分别占用同一个线程中实现互斥运行,从而实现了隐私隔离。
实施例五
以上描述了资源配置装置的内部功能和结构,该装置可实现为一种电子设备。图5为本申请提供的电子设备实施例的结构示意图。如图5所示,该电子设备包括存储器51和处理器52。
存储器51,用于存储程序。除上述程序之外,存储器51还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器51可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器52,不仅仅局限于中央处理器(CPU),还可能为图形处理器(GPU)、现场可编辑门阵列(FPGA)、嵌入式神经网络处理器(NPU)或人工智能(AI)芯片等处理芯片。处理器52,与存储器51耦合,执行存储器51所存储的程序,该程序运行时执行上述实施例二和三的资源配置方法。
进一步,如图5所示,电子设备还可以包括:通信组件53、电源组件54、音频组件55、显示器56等其它组件。图5中仅示意性给出部分组件,并不意味着电子设备只包括图5所示组件。
通信组件53被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,3G、4G或5G,或它们的组合。在一个示例性实施例中,通信组件53经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件53还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件54,为电子设备的各种组件提供电力。电源组件54可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件55被配置为输出和/或输入音频信号。例如,音频组件55包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器51或经由通信组件53发送。在一些实施例中,音频组件55还包括一个扬声器,用于输出音频信号。
显示器56包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。