CN109213561A - 基于容器的虚拟桌面的设备调度方法及装置 - Google Patents
基于容器的虚拟桌面的设备调度方法及装置 Download PDFInfo
- Publication number
- CN109213561A CN109213561A CN201811072741.5A CN201811072741A CN109213561A CN 109213561 A CN109213561 A CN 109213561A CN 201811072741 A CN201811072741 A CN 201811072741A CN 109213561 A CN109213561 A CN 109213561A
- Authority
- CN
- China
- Prior art keywords
- hardware resource
- queue
- request
- container
- hardware
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于容器的虚拟桌面的设备调度方法,包括:创建硬件资源请求的主请求队列和快速请求队列,并由容器引擎初始化主请求队列和快速请求队列;接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量;获取当前主请求队列内全体硬件资源请求调用的硬件资源数量,若当前主请求队列内全体硬件资源请求调用的硬件资源数量大于预设的主请求队列阈值,且硬件资源请求执行时调用的硬件资源数量小于预设的硬件资源阈值时,所述硬件资源请求***到快速请求队列的队尾,否则所述硬件资源请求***到主请求队列的队尾;以及按照次序分别从主请求队列的队头和快速请求队列的队头获取硬件资源请求。本申请还公开对应的设备调度装置。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于容器的虚拟桌面的设备调度方法及装置。
背景技术
操作***虚拟化通过对真实的计算机硬件设备进行模拟,使得多名用户可以分别通过虚拟化后的操作***共享使用硬件资源,从而可以高效率地利用硬件资源。具体地,当上述多项硬件资源被虚拟化后,不同类型的硬件资源分别构成各种硬件资源池(例如用于存储数据的硬盘池),并通过多个虚拟化的操作***实现共同计算及共享资源,从而实现各类计算资源的灵活分配和高效利用。由于操作***虚拟化使得各应用程序及其关联性被隔离,从而每位用户如同在个人计算机上操作独立的操作***。
例如,作为操作***虚拟化的典型例子,虚拟机通常运行在诸如服务器等底层硬件的主机设备上,并通过虚拟机管理程序分配内存和CPU等硬件资源到多台虚拟机上。因此,可以根据当前各台虚拟机所请求的计算机硬件资源,动态地进行分配。然而,为了给各位用户提供一个完整独立的应用程序运行环境,虚拟机需要同时包含完整的虚拟硬件堆栈(包括虚拟的网络适配器、存储以及CPU等)。这意味着其自身也拥有完整的操作***,并针对硬件资源抽象化而进行隔离,从而需要将部分由主机设备提供的共享资源占据为自身的专用资源而降低主机设备的总体性能。
相反,作为操作***虚拟化的另一个例子,容器是一种轻量级的操作***虚拟化技术。各个容器通过共享主机设备上的***内核以实现自身的轻量化,并利用进程访问控制隔离技术和进程组管理控制技术等方式隔离各自的用户空间,从而使得多套容器能够并行地运行在同一主机设备上。可是,在现有的技术方案中,由于多个容器之间共享同一套***内核,使得可以通过将硬件资源的相关驱动程序安装在主机设备上的***,从而方便地供各个容器使用。因此,容器间的隔离只是通过路径的转换或者访问权限控制策略等方式实现,并没有真正地相互隔离,从而使得容器之间的相互隔离非常薄弱。于是,多个容器无序地创建大量的硬件资源请求共享使用底层的硬件资源时,硬件资源的调度管理需要在需满足容器之间的安全性要求的前提下,兼顾不同硬件资源请求的公平和高效的原则,以避免某个应用程序运行时占用硬件资源的比例过大时,导致其他应用程序启动时间过长或无法运行。
发明内容
本发明的目的是解决现有技术的不足,提供一种用于基于容器的虚拟桌面的设备调度方法及装置,能够获得保证容器之间安全性前提下,整体加快各容器应用程序响应时间的效果。
为了实现上述目的,本发明采用以下的技术方案。
首先,本申请提出一种用于基于容器的虚拟桌面的设备调度方法。该调度方法适用于在服务器内建立的多个彼此隔离的容器。其中,多个容器中的每一个分别创建一个独立的虚拟桌面实例,并通过每个容器的虚拟桌面实例为对应的容器配置独立的文件管理结构。上述方法包括以下步骤:
S100)创建硬件资源请求的主请求队列和快速请求队列,并由容器引擎初始化主请求队列和快速请求队列;
S200)接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量;
S300)获取当前主请求队列内全体硬件资源请求调用的硬件资源数量,若当前主请求队列内全体硬件资源请求调用的硬件资源数量大于预设的主请求队列阈值,且硬件资源请求执行时调用的硬件资源数量小于预设的硬件资源阈值时,所述硬件资源请求***到快速请求队列的队尾,否则所述硬件资源请求***到主请求队列的队尾;
S400)以及按照次序分别从主请求队列的队头和快速请求队列的队头获取硬件资源请求。
进一步地,在本申请的上述方法中,接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量还包括以下预处理步骤:搜索硬件资源表,当硬件资源表中存在相应空闲的硬件资源时,容器中运行的应用程序直接访问硬件资源池中对应的硬件资源,否则创建并向容器引擎发送相应的硬件资源请求。其中,硬件资源表由各个所述容器创建并维护,且所述硬件资源表中记录已分配给所述容器的硬件资源。
进一步地,在本申请的上述方法中,当主请求队列的占用硬件资源数量的总量大于预设的主请求队列阈值时,主请求队列中硬件资源请求执行时占用的硬件资源数量小于硬件资源阈值的任务被提出并***到快速请求队列的队尾。
进一步地,在本申请的上述方法中,当快速请求队列的长度大于预设的快速请求队列阈值且主请求队列的全体硬件资源请求所占用的硬件资源数量小于主请求队列阈值时,位于快速请求队列的队尾且超出预设的快速请求队列阈值部分的硬件资源请求被提出并***到主请求队列的队尾。
进一步地,在本申请的上述方法中,当硬件资源请求***到快速请求队列的队尾后,快速请求队列根据硬件资源请求执行时占用的资源数量排序。
进一步地,在本申请的上述方法中,当快速请求队列的长度大于预设的快速请求队列阈值时,提高主请求队列阈值和/或降低硬件资源阈值。
再进一步地,在本申请的上述方法中,硬件资源请求执行时占用的硬件资源数量是硬件资源的使用频率。
可替代地,在本申请的上述方法中,硬件资源请求执行时占用的硬件资源数量是硬件资源请求占用硬件资源的时间片长度。
其次,本申请还提出一种用于基于容器的虚拟桌面的设备调度装置。该设备调度装置适用于在服务器内建立的多个彼此隔离的容器。其中,多个容器中的每一个分别创建一个独立的虚拟桌面实例,并通过每个容器的虚拟桌面实例为对应的容器配置独立的文件管理结构。上述设备调度装置包括以下模块:初始化模块,用于创建硬件资源请求的主请求队列和快速请求队列,并由容器引擎初始化主请求队列和快速请求队列;预估模块,用于接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量;入队模块,用于获取当前主请求队列内全体硬件资源请求调用的硬件资源数量,若当前主请求队列内全体硬件资源请求调用的硬件资源数量大于预设的主请求队列阈值,且硬件资源请求执行时调用的硬件资源数量小于预设的资源阈值时,所述硬件资源请求***到快速请求队列的队尾,否则所述硬件资源请求***到主请求队列的队尾;以及出队模块,用于按照次序分别从主请求队列的队头和快速请求队列的队头获取硬件资源请求。
进一步地,在本申请的上述装置中,预估模块还包括以下预处理步骤:搜索模块,用于搜索硬件资源表,当硬件资源表中存在相应空闲的硬件资源时,容器中运行的应用程序直接访问硬件资源池中对应的硬件资源,否则创建并向容器引擎发送相应的硬件资源请求。其中,硬件资源表由各个所述容器创建并维护,且所述硬件资源表中记录已分配给所述容器的硬件资源。
进一步地,在本申请的上述装置中,当主请求队列的占用硬件资源数量的总量大于预设的主请求队列阈值时,主请求队列中硬件资源请求执行时占用的硬件资源数量小于硬件资源阈值的任务被提出并***到快速请求队列的队尾。
进一步地,在本申请的上述装置中,当快速请求队列的长度大于预设的快速请求队列阈值且主请求队列的全体硬件资源请求所占用的硬件资源数量小于主请求队列阈值时,位于快速请求队列的队尾且超出预设的快速请求队列阈值部分的硬件资源请求被提出并***到主请求队列的队尾。
进一步地,在本申请的上述装置中,当硬件资源请求***到快速请求队列的队尾后,快速请求队列根据硬件资源请求执行时占用的资源数量排序。
进一步地,在本申请的上述装置中,当快速请求队列的长度大于预设的快速请求队列阈值时,提高主请求队列阈值和/或降低硬件资源阈值。
再进一步地,在本申请的上述装置中,硬件资源请求执行时占用的硬件资源数量是硬件资源的使用频率。
可替代地,在本申请的上述装置中,硬件资源请求执行时占用的硬件资源数量是硬件资源请求占用硬件资源的时间片长度。
最后,本申请还提出一种计算机可读存储介质,其上存储有计算机指令。该计算机指令所执行方法适用于在服务器内建立的多个彼此隔离的容器。其中,多个容器中的每一个分别创建一个独立的虚拟桌面实例,并通过每个容器的虚拟桌面实例为对应的容器配置独立的文件管理结构。该指令被处理器执行时实现以下方法的步骤:
S100)创建硬件资源请求的主请求队列和快速请求队列,并由容器引擎初始化主请求队列和快速请求队列;
S200)接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量;
S300)获取当前主请求队列内全体硬件资源请求调用的硬件资源数量,若当前主请求队列内全体硬件资源请求调用的硬件资源数量大于预设的主请求队列阈值,且硬件资源请求执行时调用的硬件资源数量小于预设的硬件资源阈值时,所述硬件资源请求***到快速请求队列的队尾,否则所述硬件资源请求***到主请求队列的队尾;
S400)以及按照次序分别从主请求队列的队头和快速请求队列的队头获取硬件资源请求。
进一步地,在本申请的上述指令被处理执行的过程中,接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量还包括以下预处理步骤:搜索硬件资源表,当硬件资源表中存在相应空闲的硬件资源时,容器中运行的应用程序直接访问硬件资源池中对应的硬件资源,否则创建并向容器引擎发送相应的硬件资源请求。其中,硬件资源表由各个所述容器创建并维护,且所述硬件资源表中记录已分配给所述容器的硬件资源。
进一步地,在本申请的上述指令被处理执行的过程中,当主请求队列的占用硬件资源数量的总量大于预设的主请求队列阈值时,主请求队列中硬件资源请求执行时占用的硬件资源数量小于硬件资源阈值的任务被提出并***到快速请求队列的队尾。
进一步地,在本申请的上述指令被处理执行的过程中,当快速请求队列的长度大于预设的快速请求队列阈值且主请求队列的全体硬件资源请求所占用的硬件资源数量小于主请求队列阈值时,位于快速请求队列的队尾且超出预设的快速请求队列阈值部分的硬件资源请求被提出并***到主请求队列的队尾。
进一步地,在本申请的上述指令被处理执行的过程中,当硬件资源请求***到快速请求队列的队尾后,快速请求队列根据硬件资源请求执行时占用的资源数量排序。
进一步地,在本申请的上述指令被处理执行的过程中,当快速请求队列的长度大于预设的快速请求队列阈值时,提高主请求队列阈值和/或降低硬件资源阈值。
再进一步地,在本申请的上述指令被处理执行的过程中,硬件资源请求执行时占用的硬件资源数量是硬件资源的使用频率。
可替代地,在本申请的上述指令被处理执行的过程中,硬件资源请求执行时占用的硬件资源数量是硬件资源请求占用硬件资源的时间片长度。
本申请的有益效果为:通过对分配到各容器的硬件资源隔离以及分别构造并维护请求的主请求队列和快速请求队列,使得执行时调用的硬件资源数量较少的硬件资源请求可以被尽快响应,从而缩短整体请求的响应时间。
附图说明
图1所示为现有的虚拟机和容器结构示意图;
图2所示为本申请所公开实施例中基于容器的虚拟桌面的架构示意图;
图3所示为本申请所公开实施例中基于容器的虚拟桌面的用例图;
图4所示为本申请所公开的用于基于容器的虚拟桌面的设备调度方法的流程图;
图5所示为本申请所公开的第一实施例中访问硬件资源的子方法流程图;
图6所示为图5所示实施例中访问硬件资源过程的示意图;
图7所示为本申请所公开的第二实施例中硬件资源调度的状态变化示意图;
图8所示为本申请所公开的第三实施例中硬件资源调度的子方法流程图;
图9所示为图8所示子方法的主请求队列和快速请求队列状态变化的示意图;
图10所示为本申请所公开的第三实施例中硬件资源请求***快速请求队列的示意图;
图11所示为本申请所公开的第四实施例中硬件资源阈值自适应调整的方法流程图;
图12所示为本申请所公开的用于基于容器的虚拟桌面的设备调度装置的结构图。
具体实施方式
以下将结合实施例和附图对本申请的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本申请的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。附图中各处使用的相同的附图标记指示相同或相似的部分。
参考图1所示的现有的虚拟机和容器结构示意图。作为虚拟化技术的两个典型例子,虚拟机和容器包含应用程序及运行该应用程序的所必需的组件(例如***的二进制文件及库),并分别通过运行在物理计算机上的虚拟机监控器(Hypervisor)和容器引擎(Docker Engine)申请位于***底层的计算机硬件资源。对于虚拟机和容器,底层的单个计算机硬件资源(例如服务器、存储设备、中央处理器、I/O端口和网络端口等)由于被虚拟化而可以充当多个可被共享的逻辑资源。同时,主机操作***(Operation System,OS)亦可以为上述虚拟机监控器和容器引擎与底层计算机硬件资源的交互提供进一步优化。例如,主机OS可支持多个空间上相互隔离的用户通过虚拟机或容器共享底层的计算机硬件资源。其中主机OS的一些示例可以是和然而,正如前文所指出,虚拟机由于其自身操作***需要专门占用更多的资源并包含更多的处理开销,从而降低了主机设备的总体性能。虽然容器通过共享主机OS的内核而实现自身的轻量化,但是容器之间的并没有实现真正的隔离,从而为用户留下安全隐患。
因此,为了充分利用容器的轻量化优势,在提升容器之间的隔离程度,避免不同容器之间的硬件资源被错误调用的前提下加快容器的整体应用程序的响应时间,本申请提出了一种用于基于容器的虚拟桌面的设备调度方法。该方法适用于如图2所示的基于容器的虚拟桌面。在该基于容器的虚拟桌面中,服务器内建立的多个彼此隔离的容器。其中,多个容器中的每一个分别创建一个独立的虚拟桌面实例,并通过每个容器的虚拟桌面实例为对应的容器配置独立的文件管理结构。在每个容器内运行的应用程序通过容器引擎由主机的硬件资源管理器从计算机硬件资源池中获取相应的计算机硬件资源。在向对应的容器发出文件操作请求时,应用程序通过虚拟桌面实例调用文件管理结构对该文件操作请求涉及的文件进行操作。对于容器的各位用户,基于容器所提供的虚拟桌面实例就像一个独立的个人操作***,而不仅仅是从主机操作***中划分出来的,作为主机操作***一部分而隔离出来的操作执行环境。进一步地,参照图3所示的用例图,本地服务器通过容器引擎为每个容器配置相应的***环境、个人文件以及虚拟界面的配置文件,并利用容器的DockerClient形成虚拟桌面实例。对于容器的各位用户,容器就像一个独立的个人操作***,而不仅仅是从主机操作***中划分出来的,作为主机操作***一部分而隔离出来的操作执行环境。进一步地,上述配置文件可进一步地设置针对主机OS的内核的差异文件,并在各个容器上形成个性化的虚拟操作***环境,而实现对主机OS的内核重定向。此外,对于容器内的应用程序,其运行时所必需的计算机硬件资源都是通过容器引擎申请。因此,一方面相对于虚拟机所必需占用专用资源以供虚拟机自身的操作***运行,上述技术方案中的容器更为轻量,从而可以在同一服务器上为更多的用户创建容器;另一方面,由于应用程序需要通过容器引擎共享底层的计算机硬件资源,并且当其发出文件操作请求时,必需通过虚拟桌面实例调用容器的文件管理结构以对所述文件操作请求涉及的文件进行操作,从而保证了容器之间隔离程度,提高了容器的安全水平。进一步地,容器的客户端可以设置在异地。如图3所示,用户的客户端与本地服务器之间设置有交换盒,该交换盒上设置有嵌入式***以执行相关的图像生成和文件传输协议,从而在用户端上形成相应的图形操作界面。此外,本领域技术人员应理解到,附图中的显示元件的数量和形状仅作为示例性的参考,不作为对本申请的限制。
具体地,参照图4所示的方法流程图,上述设备调度方法包括如下步骤:
S100)创建硬件资源请求的主请求队列和快速请求队列,并由容器引擎初始化主请求队列和快速请求队列;
S200)接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量;
S300)获取当前主请求队列内全体硬件资源请求调用的硬件资源数量,若当前主请求队列内全体硬件资源请求调用的硬件资源数量大于预设的主请求队列阈值,且硬件资源请求执行时调用的硬件资源数量小于预设的硬件资源阈值时,所述硬件资源请求***到快速请求队列的队尾,否则所述硬件资源请求***到主请求队列的队尾;
S400)以及按照次序分别从主请求队列的队头和快速请求队列的队头获取硬件资源请求。例如,主请求队列阈值可初始化为500ms,即主请求队列中的硬件资源请求占用硬件资源的时间片为500ms。此时,可参考图4中虚线方框内部所示的子方法流程,当主请求队列中的全体硬件资源请求预估占用硬件资源的时间片小于500ms时,容器发出的新硬件资源请求将直接***到主请求队列的队尾。主请求队列中的所有硬件资源请求按照先进先出的顺序依次获取。当主请求队列中的全体硬件资源请求预估占用硬件资源的时间片等于或大于500ms时,容器发出的新硬件资源请求将先被容器引擎预估其执行时调用的硬件资源数量。如果所述硬件资源请求执行时调用的硬件资源数量小于硬件资源阈值(例如20ms,即所述硬件资源请求执行时占用硬件资源的时间片大小小于20ms)时,则被***到快速请求队列的队尾优先处理;否则***到主请求队列的队尾,按照正常次序处理。由于调用的硬件资源数量较少的硬件资源请求与调用硬件资源数量较大的硬件资源请求不是在同一个队列内,因此缩短整体硬件资源请求的响应时间。
参照图5所示的方法流程图及图6所示的相应示意图,在本申请的一个或多个实施例中,接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量还包括以下预处理步骤:搜索硬件资源表,当硬件资源表中存在相应空闲的硬件资源时,容器中运行的应用程序直接访问硬件资源池中对应的硬件资源,否则创建并向容器引擎发送相应的硬件资源请求。其中硬件资源表由各个所述容器创建并维护,且所述硬件资源表中记录已分配给所述容器的硬件资源。具体地,每个容器的虚拟桌面实例中都维护有一份硬件资源表。当每一项硬件资源配置被容器引擎分配到该容器或从该容器回收到硬件资源池时,容器的硬件资源表都必需同步更新。容器中的应用程序(例如图2中在容器1内部运行的应用程序A1和应用程序A2)通过该硬件资源表向容器引擎申请相应的硬件资源。
参照图7所示为硬件资源调度的状态变化示意图,在本申请的一个或多个实施例中,当主请求队列的占用硬件资源数量的总量大于预设的主请求队列阈值时,主请求队列中硬件资源请求执行时占用的硬件资源数量小于硬件资源阈值的任务被提出并***到快速请求队列的队尾。图中硬件资源请求右侧方格内的数值是该请求执行时调用的资源数量(例如,A硬件资源请求的“10ms”表示硬件资源请求执行时占用的硬件资源的时间片大小是10ms)。若此时主请求队列阈值为250ms,而主请求队列的占用资源总量为259ms。若预设的硬件资源阈值是20ms,则主请求队列中占用硬件资源数量小于阈值的硬件资源请求(即图中“硬件资源请求A”、“硬件资源请求C”和“硬件资源请求H”对应的硬件资源请求)将从主请求队列中提取出来,***到快速请求队列的队尾,使得主请求队列中执行时占用的硬件资源数量较少的硬件资源请求可以被及时执行。
相反,参照图8所示的硬件资源调度的子方法流程图及图9所示的主请求队列和快速请求队列状态变化的示意图,当快速请求队列的长度大于预设的快速请求队列阈值且主请求队列的全体硬件资源请求所占用的硬件资源数量小于主请求队列阈值时,位于快速请求队列的队尾且超出预设的快速请求队列阈值部分的硬件资源请求被提出,并***到主请求队列的队尾。具体地,为了提高请求的整体执行效率,参照图9所示的示意图,可将位于快速请求队列的队尾且超出预设的快速请求队列阈值部分的请求(即图9中的“硬件资源请求f”和“硬件资源请求g”)提出并***到主请求队列的队尾,从而保证开销较小的硬件资源请求能被尽快处理。
参照图10所示的硬件资源请求***快速访问请求队列的示意图,在本申请的一个或多个实施例中,当硬件资源请求被***到快速请求队列的队尾后,快速请求队列根据请求执行时占用的硬件资源数量排序。图中硬件资源请求右侧方格内的数值是硬件资源请求执行时需要占用硬件资源的时间片大小(例如,d硬件资源请求的“10ms”表示该硬件资源请求被执行时占用硬件资源的时间片大小是10ms)。如图中所示,新硬件资源请求f执行时占用硬件资源的时间片大小是7ms。此时若主请求队列内全体请求调用的资源数量大于主请求队列阈值,f请求将先被***到快速请求队列的队尾,然后再对快速请求队列排序。因为执行时调用的硬件资源数量的硬件资源请求被排在快速请求队列的前方,所以这些硬件资源请求可以尽快响应。此外,由于快速请求队列是被维护成有序的,所以新的硬件资源请求可以较短的时间***到快速请求队列的正确位置(事实上,该操作的时间复杂度是当前队列长度的对数)。
此外,在本申请的一个或多个实施例中,当快速请求队列的占用硬件资源数量的总量大于预设的快速请求队列阈值时,此时快速请求队列内的硬件资源请求执行效率将下降,甚至等于或低于主请求队列。为了保证分配到快速请求队列内的硬件资源请求能被优先执行,需要提高***到快速请求队列的门槛。如图11中所示硬件资源阈值自适应调整的方法流程图,可提高主请求队列阈值(可提高至当前主请求队列内全体硬件资源请求所调用的硬件资源数量或更高),减少分配到快速请求队列的硬件资源请求。可替代地,***到快速请求队列的门槛也可以通过降低硬件资源阈值的方式提高(例如硬件资源阈值设置为当前值的80%),使得硬件资源请求较难分配到快速请求队列。
相反,当***到快速请求队列的门槛被上述方式提高后,由于外部原因(例如单位时间内需要执行的硬件资源请求数量减少)或内部原因(例如***到快速请求队列的门槛被过分提高),使得快速请求队列在预设的时间段内(例如10分钟)为空队列时,***到快速请求队列的门槛应恰当降低以适应当前的实际运行状况。因此,在本申请的上述一个或多个实施例中,类似地当在预设时间段内快速请求队列为空队列时,降低主请求队列阈值(例如主请求队列阈值设置为当前值的80%)和/或提高硬件资源阈值(例如可提高至当前值的2倍)。
在本申请的一个或多个实施例中,用于衡量进程执行时调用的资源数量是请求执行时占用硬件资源的时间片长度。因为该数值可以方便地预估,且预估值与实际值差异较少,所以该数值常用于衡量硬件资源请求执行时所花费的成本。可替代地,另一种可用于衡量硬件资源请求执行时调用的资源数量是硬件资源的使用频率。一般情况下,如果该容器内的存在多个需要访问同一类型硬件资源的进程,则其使用该硬件资源的频率较高,为避免硬件资源的频繁分配回收,往往需要等上述多个进程执行完毕后才将相关的硬件资源返回到硬件资源池。因此,前述几个实施例也可相应地采用硬件资源的使用频率衡量硬件资源请求。
相应地,本申请还提出了一种用于基于容器的虚拟桌面的设备调度装置。该设备调度装置适用于如图2和图3所示的基于容器的虚拟桌面。在该基于容器的虚拟桌面中,服务器内建立的多个彼此隔离的容器。其中,多个容器中的每一个分别创建一个独立的虚拟桌面实例,并通过每个容器的虚拟桌面实例为对应的容器配置独立的文件管理结构。具体地,参照图12所示的模块结构图,上述设备调度装置包括如下模块:初始化模块,用于创建硬件资源请求的主请求队列和快速请求队列,并由容器引擎初始化主请求队列和快速请求队列;预估模块,用于接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量;入队模块,用于获取当前主请求队列内全体硬件资源请求调用的硬件资源数量,若当前主请求队列内全体硬件资源请求调用的硬件资源数量大于预设的主请求队列阈值,且硬件资源请求执行时调用的硬件资源数量小于预设的资源阈值时,所述硬件资源请求***到快速请求队列的队尾,否则所述硬件资源请求***到主请求队列的队尾;以及出队模块,用于按照次序分别从主请求队列的队头和快速请求队列的队头获取硬件资源请求。例如,主请求队列阈值可初始化为500ms,即主请求队列中的硬件资源请求占用硬件资源的时间片为500ms。此时,当主请求队列中的全体硬件资源请求预估占用硬件资源的时间片小于500ms时,容器发出的新硬件资源请求将直接***到主请求队列的队尾。主请求队列中的所有硬件资源请求按照先进先出的顺序依次获取。当主请求队列中的全体硬件资源请求预估占用硬件资源的时间片等于或大于500ms时,容器发出的新硬件资源请求将先被容器引擎预估其执行时调用的硬件资源数量。如果所述硬件资源请求执行时调用的硬件资源数量小于硬件资源阈值(例如20ms,即所述硬件资源请求执行时占用硬件资源的时间片大小小于20ms)时,则被***到快速请求队列的队尾优先处理;否则***到主请求队列的队尾,按照正常次序处理。由于调用的硬件资源数量较少的硬件资源请求与调用硬件资源数量较大的硬件资源请求不是在同一个队列内,因此缩短整体硬件资源请求的响应时间。
参照图6所示的实施例示意图,在本申请的一个或多个实施例中,预估模块还包括以下预处理模块:搜索模块,用于搜索硬件资源表,当硬件资源表中存在相应空闲的硬件资源时,容器中运行的应用程序直接访问硬件资源池中对应的硬件资源,否则创建并向容器引擎发送相应的硬件资源请求。其中硬件资源表由各个所述容器创建并维护,且所述硬件资源表中记录已分配给所述容器的硬件资源。具体地,每个容器的虚拟桌面实例中都维护有一份硬件资源表。当每一项硬件资源配置被容器引擎分配到该容器或从该容器回收到硬件资源池时,容器的硬件资源表都必需同步更新。容器中的应用程序(例如图2中在容器1内部运行的应用程序A1和应用程序A2)通过该硬件资源表向容器引擎申请相应的硬件资源。
参照图7所示为硬件资源调度的状态变化示意图,在本申请的一个或多个实施例中,当主请求队列的占用硬件资源数量的总量大于预设的主请求队列阈值时,主请求队列中硬件资源请求执行时占用的硬件资源数量小于硬件资源阈值的任务被提出并***到快速请求队列的队尾。图中硬件资源请求右侧方格内的数值是该请求执行时调用的资源数量(例如,A硬件资源请求的“10ms”表示硬件资源请求执行时占用的硬件资源的时间片大小是10ms)。若此时主请求队列阈值为250ms,而主请求队列的占用资源总量为259ms。若预设的硬件资源阈值是20ms,则主请求队列中占用硬件资源数量小于阈值的硬件资源请求(即图中“硬件资源请求A”、“硬件资源请求C”和“硬件资源请求H”对应的硬件资源请求)将从主请求队列中提取出来,***到快速请求队列的队尾,使得主请求队列中执行时占用的硬件资源数量较少的硬件资源请求可以被及时执行。
相反,参照图9所示的主请求队列和快速请求队列状态变化的示意图,当快速请求队列的长度大于预设的快速请求队列阈值且主请求队列的全体硬件资源请求所占用的硬件资源数量小于主请求队列阈值时,位于快速请求队列的队尾且超出预设的快速请求队列阈值部分的硬件资源请求被提出,并***到主请求队列的队尾。具体地,为了提高请求的整体执行效率,参照图9所示的示意图,可将位于快速请求队列的队尾且超出预设的快速请求队列阈值部分的请求(即图9中的“硬件资源请求f”和“硬件资源请求g”)提出并***到主请求队列的队尾,从而保证开销较小的硬件资源请求能被尽快处理。
参照图10所示的硬件资源请求***快速访问请求队列的示意图,在本申请的一个或多个实施例中,当硬件资源请求被***到快速请求队列的队尾后,快速请求队列根据请求执行时占用的硬件资源数量排序。图中硬件资源请求右侧方格内的数值是硬件资源请求执行时需要占用硬件资源的时间片大小(例如,d硬件资源请求的“10ms”表示该硬件资源请求被执行时占用硬件资源的时间片大小是10ms)。如图中所示,新硬件资源请求f执行时占用硬件资源的时间片大小是7ms。此时若主请求队列内全体请求调用的资源数量大于主请求队列阈值,f请求将先被***到快速请求队列的队尾,然后再对快速请求队列排序。因为执行时调用的硬件资源数量的硬件资源请求被排在快速请求队列的前方,所以这些硬件资源请求可以尽快响应。此外,由于快速请求队列是被维护成有序的,所以新的硬件资源请求可以较短的时间***到快速请求队列的正确位置(事实上,该操作的时间复杂度是当前队列长度的对数)。
此外,在本申请的一个或多个实施例中,当快速请求队列的占用硬件资源数量的总量大于预设的快速请求队列阈值时,此时快速请求队列内的硬件资源请求执行效率将下降,甚至等于或低于主请求队列。为了保证分配到快速请求队列内的硬件资源请求能被优先执行,需要提高***到快速请求队列的门槛。可提高主请求队列阈值(可提高至当前主请求队列内全体硬件资源请求所调用的硬件资源数量或更高),减少分配到快速请求队列的硬件资源请求。可替代地,***到快速请求队列的门槛也可以通过降低硬件资源阈值的方式提高(例如硬件资源阈值设置为当前值的80%),使得硬件资源请求较难分配到快速请求队列。
相反,当***到快速请求队列的门槛被上述方式提高后,由于外部原因(例如单位时间内需要执行的硬件资源请求数量减少)或内部原因(例如***到快速请求队列的门槛被过分提高),使得快速请求队列在预设的时间段内(例如10分钟)为空队列时,***到快速请求队列的门槛应恰当降低以适应当前的实际运行状况。因此,在本申请的上述一个或多个实施例中,类似地当在预设时间段内快速请求队列为空队列时,降低主请求队列阈值(例如主请求队列阈值设置为当前值的80%)和/或提高硬件资源阈值(例如可提高至当前值的2倍)。
应当认识到,本申请的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。该方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作-根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机***通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
进一步地,该方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本申请的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文该步骤的指令或程序时,本文所述的申请包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本申请所述的方法和技术编程时,本申请还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本申请优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
因此,应以说明性意义而不是限制性意义来理解本说明书和附图。然而,将明显的是:在不脱离如权利要求书中阐述的本申请的更宽广精神和范围的情况下,可以对本申请做出各种修改和改变。
其他变型在本申请的精神内。因此,尽管所公开的技术可容许各种修改和替代构造,但在附图中已示出并且在上文中详细描述所示的其某些实施例。然而,应当理解,并不意图将本申请局限于所公开的一种或多种具体形式;相反,其意图涵盖如所附权利要求书中所限定落在本申请的精神和范围内的所有修改、替代构造和等效物。
Claims (10)
1.一种用于基于容器的虚拟桌面的设备调度方法,适用于在服务器内建立的多个彼此隔离的容器,其中多个所述容器中的每一个分别创建一个独立的虚拟桌面实例,并通过每个容器的虚拟桌面实例为对应的容器配置独立的文件管理结构,所述方法包括以下步骤:
S100)创建硬件资源请求的主请求队列和快速请求队列,并由容器引擎初始化主请求队列和快速请求队列;
S200)接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量;
S300)获取当前主请求队列内全体硬件资源请求调用的硬件资源数量,若当前主请求队列内全体硬件资源请求调用的硬件资源数量大于预设的主请求队列阈值,且硬件资源请求执行时调用的硬件资源数量小于预设的硬件资源阈值时,所述硬件资源请求***到快速请求队列的队尾,否则所述硬件资源请求***到主请求队列的队尾;以及
S400)按照次序分别从主请求队列的队头和快速请求队列的队头获取硬件资源请求。
2.根据权利要求1所述的设备调度方法,其特征在于,接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量还包括以下预处理步骤:
搜索硬件资源表,当硬件资源表中存在相应空闲的硬件资源时,容器中运行的应用程序直接访问硬件资源池中对应的硬件资源,否则创建并向容器引擎发送相应的硬件资源请求;
其中硬件资源表由各个所述容器创建并维护,且所述硬件资源表中记录已分配给所述容器的硬件资源。
3.根据权利要求1所述的设备调度方法,其特征在于,当主请求队列的占用硬件资源数量的总量大于预设的主请求队列阈值时,主请求队列中硬件资源请求执行时占用的硬件资源数量小于硬件资源阈值的任务被提出并***到快速请求队列的队尾。
4.根据权利要求1所述的设备调度方法,其特征在于,当快速请求队列的长度大于预设的快速请求队列阈值且主请求队列的全体硬件资源请求所占用的硬件资源数量小于主请求队列阈值时,位于快速请求队列的队尾且超出预设的快速请求队列阈值部分的硬件资源请求被提出并***到主请求队列的队尾。
5.根据权利要求1所述的设备调度方法,其特征在于,当硬件资源请求***到快速请求队列的队尾后,快速请求队列根据硬件资源请求执行时占用的资源数量排序。
6.根据权利要求1所述的设备调度方法,其特征在于,当快速请求队列的长度大于预设的快速请求队列阈值时,提高主请求队列阈值和/或降低硬件资源阈值。
7.根据权利要求1至6中任一所述的设备调度方法,其特征在于,硬件资源请求执行时占用的硬件资源数量是硬件资源的使用频率。
8.根据权利要求1至6中任一所述的设备调度方法,其特征在于,硬件资源请求执行时占用的硬件资源数量是硬件资源请求占用硬件资源的时间片长度。
9.一种用于基于容器的虚拟桌面的设备调度装置,适用于在服务器内建立的多个彼此隔离的容器,其中多个所述容器中的每一个分别创建一个独立的虚拟桌面实例,并通过每个容器的虚拟桌面实例为对应的容器配置独立的文件管理结构,所述装置包括以下模块:
初始化模块,用于创建硬件资源请求的主请求队列和快速请求队列,并由容器引擎初始化主请求队列和快速请求队列;
预估模块,用于接收各容器发出的硬件资源请求,并预估所述硬件资源请求执行时调用的硬件资源数量;
入队模块,用于获取当前主请求队列内全体硬件资源请求调用的硬件资源数量,若当前主请求队列内全体硬件资源请求调用的硬件资源数量大于预设的主请求队列阈值,且硬件资源请求执行时调用的硬件资源数量小于预设的资源阈值时,所述硬件资源请求***到快速请求队列的队尾,否则所述硬件资源请求***到主请求队列的队尾;以及
出队模块,用于按照次序分别从主请求队列的队头和快速请求队列的队头获取硬件资源请求。
10.一种计算机可读存储介质,其上存储有计算机指令,该指令所执行方法适用于在服务器内建立的多个彼此隔离的容器,其中多个所述容器中的每一个分别创建一个独立的虚拟桌面实例,并通过每个容器的虚拟桌面实例为对应的容器配置独立的文件管理结构,其特征在于该指令被处理器执行时实现如权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811072741.5A CN109213561A (zh) | 2018-09-14 | 2018-09-14 | 基于容器的虚拟桌面的设备调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811072741.5A CN109213561A (zh) | 2018-09-14 | 2018-09-14 | 基于容器的虚拟桌面的设备调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109213561A true CN109213561A (zh) | 2019-01-15 |
Family
ID=64984351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811072741.5A Pending CN109213561A (zh) | 2018-09-14 | 2018-09-14 | 基于容器的虚拟桌面的设备调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109213561A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110764873A (zh) * | 2019-10-21 | 2020-02-07 | 深圳金蝶账无忧网络科技有限公司 | 一种虚拟机资源管理方法、***及相关设备 |
CN114780168A (zh) * | 2022-03-30 | 2022-07-22 | 全球能源互联网研究院有限公司南京分公司 | 智能终端容器安全策略动态变更的方法、装置及电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100135241A1 (en) * | 2007-12-14 | 2010-06-03 | Huawei Technologies Co., Ltd. | Method and system for using logical resources |
CN102761469A (zh) * | 2011-04-27 | 2012-10-31 | 阿里巴巴集团控股有限公司 | 一种资源池的分配方法和装置 |
WO2015109593A1 (zh) * | 2014-01-27 | 2015-07-30 | 华为技术有限公司 | 虚拟化方法和装置及计算机设备 |
CN107515785A (zh) * | 2016-06-16 | 2017-12-26 | 大唐移动通信设备有限公司 | 一种内存管理方法及装置 |
KR101848450B1 (ko) * | 2017-02-06 | 2018-04-12 | 국민대학교산학협력단 | 도커 기반의 매니코어 관리 방법 및 이를 수행하는 도커 기반의 매니코어 관리 장치 |
CN108196939A (zh) * | 2017-12-29 | 2018-06-22 | 珠海国芯云科技有限公司 | 用于云计算的虚拟机智能管理方法及装置 |
CN108279967A (zh) * | 2017-10-25 | 2018-07-13 | 国云科技股份有限公司 | 一种虚拟机与容器混合调度方法 |
CN108304254A (zh) * | 2017-12-29 | 2018-07-20 | 珠海国芯云科技有限公司 | 快速虚拟机进程调度控制方法及装置 |
CN108388460A (zh) * | 2018-02-05 | 2018-08-10 | 中国人民解放军战略支援部队航天工程大学 | 基于图形集群的远程实时渲染平台构建方法 |
-
2018
- 2018-09-14 CN CN201811072741.5A patent/CN109213561A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100135241A1 (en) * | 2007-12-14 | 2010-06-03 | Huawei Technologies Co., Ltd. | Method and system for using logical resources |
CN102761469A (zh) * | 2011-04-27 | 2012-10-31 | 阿里巴巴集团控股有限公司 | 一种资源池的分配方法和装置 |
WO2015109593A1 (zh) * | 2014-01-27 | 2015-07-30 | 华为技术有限公司 | 虚拟化方法和装置及计算机设备 |
CN107515785A (zh) * | 2016-06-16 | 2017-12-26 | 大唐移动通信设备有限公司 | 一种内存管理方法及装置 |
KR101848450B1 (ko) * | 2017-02-06 | 2018-04-12 | 국민대학교산학협력단 | 도커 기반의 매니코어 관리 방법 및 이를 수행하는 도커 기반의 매니코어 관리 장치 |
CN108279967A (zh) * | 2017-10-25 | 2018-07-13 | 国云科技股份有限公司 | 一种虚拟机与容器混合调度方法 |
CN108196939A (zh) * | 2017-12-29 | 2018-06-22 | 珠海国芯云科技有限公司 | 用于云计算的虚拟机智能管理方法及装置 |
CN108304254A (zh) * | 2017-12-29 | 2018-07-20 | 珠海国芯云科技有限公司 | 快速虚拟机进程调度控制方法及装置 |
CN108388460A (zh) * | 2018-02-05 | 2018-08-10 | 中国人民解放军战略支援部队航天工程大学 | 基于图形集群的远程实时渲染平台构建方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110764873A (zh) * | 2019-10-21 | 2020-02-07 | 深圳金蝶账无忧网络科技有限公司 | 一种虚拟机资源管理方法、***及相关设备 |
CN114780168A (zh) * | 2022-03-30 | 2022-07-22 | 全球能源互联网研究院有限公司南京分公司 | 智能终端容器安全策略动态变更的方法、装置及电子设备 |
CN114780168B (zh) * | 2022-03-30 | 2023-04-28 | 全球能源互联网研究院有限公司南京分公司 | 智能终端容器安全策略动态变更的方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10606654B2 (en) | Data processing method and apparatus | |
CN109213573A (zh) | 基于容器的虚拟桌面的设备隔离方法及装置 | |
CN109388454A (zh) | 基于容器的虚拟桌面方法及*** | |
CN110389816B (zh) | 用于资源调度的方法、装置以及计算机可读介质 | |
CN104412240B (zh) | 用于存储器管理的***和方法 | |
CN108701046A (zh) | 用于避免虚拟机之间的物理cpu争用的虚拟cpu合并 | |
US10372479B2 (en) | Scheduling framework for tightly coupled jobs | |
DE112015007188T5 (de) | Batch-Migration virtueller Maschinen während des aktiven Bertriebs | |
CN109614238A (zh) | 一种目标对象识别方法、装置、***及可读存储介质 | |
CN110427256A (zh) | 基于优先级的作业调度优化方法、设备、存储介质及装置 | |
CN103503412B (zh) | 用于调度资源的方法及装置 | |
CN115543577B (zh) | 基于协变量的Kubernetes资源调度优化方法、存储介质及设备 | |
CN111738488A (zh) | 一种任务调度方法及其装置 | |
CN105868389A (zh) | 一种基于mongoDB的数据沙盒实现方法及*** | |
CN110162407A (zh) | 一种资源管理方法及装置 | |
CN107436810A (zh) | 一种计算机***资源调度方法及装置 | |
CN110347602A (zh) | 多任务脚本执行方法及装置、电子设备及可读存储介质 | |
CN112764893B (zh) | 数据处理方法和数据处理*** | |
CN103262035A (zh) | 组合式cpu/gpu体系结构***中的装置发现和拓扑报告 | |
CN109213561A (zh) | 基于容器的虚拟桌面的设备调度方法及装置 | |
CN113255165A (zh) | 一种基于动态任务分配的实验方案并行推演*** | |
CN104794000B (zh) | 一种作业调度方法及*** | |
US20220051116A1 (en) | Parallelized scoring for ensemble model | |
CN112149139A (zh) | 权限管理方法及装置 | |
US11669369B2 (en) | Cluster resource management using adaptive memory demand |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190115 |