CN108897627A - 针对典型容器的Docker动态调度算法 - Google Patents

针对典型容器的Docker动态调度算法 Download PDF

Info

Publication number
CN108897627A
CN108897627A CN201810810904.9A CN201810810904A CN108897627A CN 108897627 A CN108897627 A CN 108897627A CN 201810810904 A CN201810810904 A CN 201810810904A CN 108897627 A CN108897627 A CN 108897627A
Authority
CN
China
Prior art keywords
container
resource
application
application container
cpu
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
CN201810810904.9A
Other languages
English (en)
Other versions
CN108897627B (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.)
Nanjing Jia Jia Mdt Infotech Ltd
Original Assignee
Nanjing Jia Jia Mdt Infotech 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 Nanjing Jia Jia Mdt Infotech Ltd filed Critical Nanjing Jia Jia Mdt Infotech Ltd
Priority to CN201810810904.9A priority Critical patent/CN108897627B/zh
Publication of CN108897627A publication Critical patent/CN108897627A/zh
Application granted granted Critical
Publication of CN108897627B publication Critical patent/CN108897627B/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/505Allocation 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 load

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)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种针对典型容器的Docker动态调度算法,包括如下步骤:S1:典型应用容器的场景包括CPU密集型/批处理型、内存密集型/批处理型、I/O密集型/批处理型和CPU密集型/实时型,其分别选取对应的应用容器,分析各应用容器在Docker环境下单独运行和多个并发运行时的资源使用及性能情况;S2:调度算法包括容器静态调度方式和基于运行时监控的容器动态调度方式;根据用户使用需求,分情况采用容器静态调度方式和容器动态调度方式。本发明的有益效果为:动态调度算法在不影响应用容器运行性能的同时,可起到提高系统资源利用率的作用。

Description

针对典型容器的Docker动态调度算法
技术领域
本发明涉及计算机应用技术领域,具体涉及一种针对典型容器的Docker动态调度算法。
背景技术
容器技术作为虚拟机的一种轻量级替代方案,在保证容器之间资源隔离的同时,其处理能力、内存和网络吞吐率都接近物理机原始性能。作为容器的应用引擎,Docker能够高效部署、执行和管理容器。然而现有的Docker资源管理机制较为简单,为用户提供了默认资源配置和通过参数手动配置容器实例资源这两种方式。但是并没有区分应用容器实例类型,对于每种容器实例的资源分配比较平均。当物理机上同时运行实时型应用容器和批处理型应用容器时,很难根据实时型应用容器的服务强度变化来快速动态调整容器实例的资源配置,因此无法保证实时型应用容器的服务性能。
目前Docker现有的资源管理策略,不会根据当前物理机上整体资源使用情况进行资源限制检查,不限制容器实例增加。当同时运行偏重资源类型相同或相似的多个应用容器时,容器使用资源类型比较单一,容易造成其他系统资源的利用率低;同时由于资源竞争导致无法满足应用容器的资源需求,从而造成容器运行性能比较差。另外,运行的容器实例使用的总内存资源达到系统内存限制时,可能会导致由于当前内存不足,系统杀掉正常运行的容器。
容器实例在创建时和运行中,Docker为用户提供了对CPU份额和磁盘I/O权重的设置方式,但是用户在使用过程中,若不清楚测试应用的资源使用特征,便很难确定偏重资源类型及相应参数值的大小。
因此多个容器实例运行时,需要针对应用容器运行状态以及系统资源使用状态,来实时动态调整容器的资源配置。确保每个应用容器的运行性能满足SLA协议要求,同时在有限的资源情况下,最大化系统整体资源利用率。
发明内容
本发明的目的在于提供一种针对典型容器的Docker动态调度算法,其在能保证应用容器的运行性能的同时,提高系统资源利用率。
为实现上述目的,本发明的技术方案是:
一种针对典型容器的Docker动态调度算法,包括如下步骤:
S1:典型应用容器的场景包括CPU密集型/批处理型、内存密集型/批处理型、I/O密集型/批处理型和CPU密集型/实时型,其分别选取对应的应用容器,分析各应用容器在Docker环境下单独运行和多个并发运行时的资源使用及性能情况;
S2:调度算法包括容器静态调度算法和基于运行时监控的容器动态调度算法;根据用户使用需求,分情况采用容器静态调度方式和容器动态调度方式;运行多个同种应用容器时,采用容器静态调度方式,根据应用容器特点和SLA协议要求,最大化节点上运行的容器实例数量;异构并发应用容器时,采用容器动态调度方式,优先保证实时型应用容器服务,其次保证批处理型应用容器的运行性能,并根据节点运行现状,推荐最优实例类型,从而在减少与现有运行时应用容器的资源竞争的同时,最大化系统资源利用率。
优选地,步骤S1中,具体包括如下子步骤:
S1.1:典型应用容器的场景CPU密集型/批处理型、内存密集型/批处理型、I/O密集型/批处理型和CPU密集型/实时型分别选取对应的应用容器为:Memcached、Parsec、Speccpu2006和Filebench;
S1.2:对于每种应用容器,在应用容器环境下进行单个运行,获得在无竞争情况下每个单个应用容器的运行特征;
S1.3:对于每种应用容器,多个同时在容器环境下运行,获得其同时运行时的资源使用限制及应用容器的性能表现。
优选地,步骤S2具体包括如下子步骤:
S2.1:根据用户需求来增加应用容器,根据是否仅运行同一种应用容器,来选择使用容器静态调度方式还是容器动态调度方式,当仅运行同种应用容器时,进入步骤S2.2;若否,进入步骤S2.3;
S2.2:采用容器静态调度方式;
S2.3:采用容器动态调度方式;
S2.4:将用户请求处理结果反馈给用户;
优选地,步骤S2.2具体包括如下子步骤:
S2.2.1:当用户提交请求需要运行的应用名称及数量时,首先从数据表中读取指定应用的实例个数限制值,当请求运行的容器实例数量小于或等于该值时,则可以完成容器实例增加。否则,不允许增加请求的容器实例数;
S2.2.2:反馈处理结果。
优选地,步骤S2.3具体包括如下子步骤:
S2.3.1:首先根据指定应用,查询应用容器运行特征表,得到该应用容器的限制运行实例数,判断当前节点上运行的该应用容器实例数是否已经达到限制,若是,则无法完成新增容器操作;若否,则进入步骤S2.3.2;
S2.3.2:查询该应用容器的类型、最小CPU需求和最大内存需求;先判断当前物理机上可用内存资源是否能够满足新增应用容器的最大内存需求;若不能满足,则无法完成新增应用容器操作,选择其他资源充足的物理机来完成新增操作;若可以满足,则进入步骤S2.3.3;
S2.3.3:判断当前可用CPU资源是否能够满足新增应用容器的最小CPU需求;若不能满足,则无法完成新增应用容器操作,选择其他资源充足的物理机来完成新增操作;若可以满足,则进入步骤S2.3.4;
S2.3.4:用户在创建容器实例时,若采用默认设置方式设置优先级,则进入步骤S2.3.5;若采用手动指定值方式设置优先级,则进入步骤S2.3.6;
S2.3.5:批处理型应用容器的优先级设置为1,而实时型应用容器的优先级设置为2,完成新增应用容器操作;
S2.3.6:手动设置优先级时,用户通过系统提供接口,查看到当前节点上所有应用容器实例的优先级设置情况,然后在新增容器时为实例指定优先级;另外,用户在容器实例运行过程中,根据需求来更改指定容器的优先级;优先级设置值越大,则优先级越高,容器实例可使用的偏重资源数越多;在手动设置优先级方式下,依然优先满足实时型应用的资源需求,将实时型应用容器的优先级设置为指定值的两倍,完成新增容器操作;
S2.3.7:每3秒获取一次所有运行中的批处理型应用容器的CPU利用率,并查询其在无竞争状态下运行时的平均CPU利用率,对比两个值,如果其差值超过100%,则认为可能出现了资源竞争情况,接下来每秒监测一次实时CPU利用率值,总共监测3次,如果每次差值都超过100%,则确定处于资源竞争状态;
S2.3.8:当运行实时型应用容器后,以10秒作为一个时间阶段获取实时型应用容器的平均响应时间,设置调控梯度为6毫秒,8.5毫秒,9.5毫秒,13毫秒四级;处于6毫秒和8.5毫秒调控梯度时,CPU份额的调控粒度为512,处于9.5毫秒调控梯度时,CPU份额的调控粒度为1024,处于13毫秒调控梯度时,CPU份额的首次调控粒度为2048,第二次为1024,当处于6毫秒梯度时减少CPU份额,其他梯度时都增大CPU份额;每次调整CPU份额,都即时更新容器实例状态表中指定容器的CPU份额值;
S2.3.9:当用户提交推荐应用容器请求时,根据当前节点资源使用情况,推荐可运行的应用容器,减少与现有运行时容器的资源竞争的同时,充分利用空闲资源,提高整体资源利用率;针对CPU资源,通过此时系统是否处于资源竞争状态来判断资源使用状态,当系统处于资源竞争状态时,认为CPU资源已经处于竞争状态;内存资源和I/O资源都认为是空闲资源;查询应用容器运行特征表,找到偏重使用空闲资源,且竞争资源需求小的应用,并经过增加容器实例算法判断可以增加后,向用户推荐运行该应用容器。
本发明的工作原理为:
本发明提供的这种针对典型应用的动态调度算法,简化优先级设计,针对应用容器运行状态以及系统资源使用状态,来实时动态调整容器的资源配置。确保每个应用容器的运行性能满足SLA协议要求,同时在有限的资源情况下,最大化系统整体资源利用率。
在运行多个同种应用容器时,采用静态调度算法;在多个异种应用容器并发时,采用动态调度算法。当同时运行实时型和批处理型应用容器时,根据实时型应用容器的服务强度变化,来及时调整资源配置,在优先保证实时型应用的服务性能满足SLA协议要求的同时,保障批处理型应用容器性能。此外,动态调度算法还可以根据节点资源使用现状,推荐可增加的应用容器,从而减少与现有运行时容器资源竞争,使节点的资源利用率最大化。
本发明的有益效果为:动态调度算法在不影响应用容器运行性能的同时,可起到提高系统资源利用率的作用。
附图说明
图1是本发明针对典型应用的Docker动态调度算法的整体流程图;
图2是本发明增加应用容器的流程图;
图3是本发明资源竞争调度的流程图;
图4是本发明服务强度调度的流程图。
具体实施方式
下面结合附图1-4和实施例,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明具体实施的技术方案是:
为便于理解,将在本发明中涉及的术语解释说明如下:
容器:是为应用程序提供的一个资源隔离的运行环境,并且可以将运行应用程序的完整组件打包成镜像,便于重复使用。
Docker:是一个部署、执行和管理容器的工具,使用官方的Docker hub所提供的标准镜像可以快速构建容器,实现秒级启动,同时在版本保存上也更加轻便和低成本。
Memcached:是一个开源的针对分布式内存对象的高性能缓存系统,旨在通过减轻数据库负载压力,来加速动态web应用程序。
Speccpu2006:是SPEC的标准化测试集,用于系统处理器,内存子系统和编译器测试。
Filebench:是一款自动化测试应用,通过快速模拟真实环境中应用服务器的负载,来对文件系统的性能进行测试。
Parsec:是一个由多线程应用程序组成的测试程序集。
本发明提供了一种针对典型容器的Docker动态调度算法,主要利用运行时监控的方式,根据系统资源使用状态及应用容器运行状态来进行实时调度,其具体流程如图1所示,包括如下步骤:
一种针对典型容器的Docker动态调度算法,包括如下步骤:
S1:典型应用容器的场景包括CPU密集型/批处理型、内存密集型/批处理型、I/O密集型/批处理型和CPU密集型/实时型,其分别选取对应的应用容器,分析各应用容器在Docker环境下单独运行和多个并发运行时的资源使用及性能情况;
S2:调度算法包括容器静态调度算法和基于运行时监控的容器动态调度算法;根据用户使用需求,分情况采用容器静态调度方式和容器动态调度方式;运行多个同种应用容器时,采用容器静态调度方式,根据应用容器特点和SLA协议要求,最大化节点上运行的容器实例数量;异构并发应用容器时,采用容器动态调度方式,优先保证实时型应用容器服务,其次保证批处理型应用容器的运行性能,并根据节点运行现状,推荐最优实例类型,从而在减少与现有运行时应用容器的资源竞争的同时,最大化系统资源利用率。
优选地,步骤S1中,具体包括如下子步骤:
S1.1:典型应用容器的场景CPU密集型/批处理型、内存密集型/批处理型、I/O密集型/批处理型和CPU密集型/实时型分别选取对应的应用容器为:Memcached、Parsec、Speccpu2006和Filebench;
S1.2:对于每种应用容器,在应用容器环境下进行单个运行,获得在无竞争情况下每个单个应用容器的运行特征;
S1.3:对于每种应用容器,多个同时在容器环境下运行,获得其同时运行时的资源使用限制及应用容器的性能表现。
步骤S2具体包括如下子步骤:
S2.1:根据用户需求来增加应用容器,根据是否仅运行同一种应用容器,来选择使用容器静态调度方式还是容器动态调度方式,当仅运行同种应用容器时,进入步骤S2.2;若否,进入步骤S2.3;
S2.2:采用容器静态调度方式;
S2.3:采用容器动态调度方式;
S2.4:将用户请求处理结果反馈给用户;
步骤S2.2具体包括如下子步骤:
S2.2.1:当用户提交请求需要运行的应用名称及数量时,首先从数据表中读取指定应用的实例个数限制值,当请求运行的容器实例数量小于或等于该值时,则可以完成容器实例增加。否则,不允许增加请求的容器实例数;
S2.2.2:反馈处理结果。
步骤S2.3具体包括如下子步骤:
S2.3.1:首先根据指定应用,查询应用容器运行特征表,得到该应用容器的限制运行实例数,判断当前节点上运行的该应用容器实例数是否已经达到限制,若是,则无法完成新增容器操作;若否,则进入步骤S2.3.2;
S2.3.2:查询该应用容器的类型、最小CPU需求和最大内存需求;先判断当前物理机上可用内存资源是否能够满足新增应用容器的最大内存需求;若不能满足,则无法完成新增应用容器操作,选择其他资源充足的物理机来完成新增操作;若可以满足,则进入步骤S2.3.3;
S2.3.3:判断当前可用CPU资源是否能够满足新增应用容器的最小CPU需求;若不能满足,则无法完成新增应用容器操作,选择其他资源充足的物理机来完成新增操作;若可以满足,则进入步骤S2.3.4;
S2.3.4:用户在创建容器实例时,若采用默认设置方式设置优先级,则进入步骤S2.3.5;若采用手动指定值方式设置优先级,则进入步骤S2.3.6;
S2.3.5:批处理型应用容器的优先级设置为1,而实时型应用容器的优先级设置为2,完成新增应用容器操作;
S2.3.6:手动设置优先级时,用户通过系统提供接口,查看到当前节点上所有应用容器实例的优先级设置情况,然后在新增容器时为实例指定优先级;另外,用户在容器实例运行过程中,根据需求来更改指定容器的优先级;优先级设置值越大,则优先级越高,容器实例可使用的偏重资源数越多;在手动设置优先级方式下,依然优先满足实时型应用的资源需求,将实时型应用容器的优先级设置为指定值的两倍,完成新增容器操作;
S2.3.7:每3秒获取一次所有运行中的批处理型应用容器的CPU利用率,并查询其在无竞争状态下运行时的平均CPU利用率,对比两个值,如果其差值超过100%,则认为可能出现了资源竞争情况,接下来每秒监测一次实时CPU利用率值,总共监测3次,如果每次差值都超过100%,则确定处于资源竞争状态;
S2.3.8:当运行实时型应用容器后,以10秒作为一个时间阶段获取实时型应用容器的平均响应时间,设置调控梯度为6毫秒,8.5毫秒,9.5毫秒,13毫秒四级;处于6毫秒和8.5毫秒调控梯度时,CPU份额的调控粒度为512,处于9.5毫秒调控梯度时,CPU份额的调控粒度为1024,处于13毫秒调控梯度时,CPU份额的首次调控粒度为2048,第二次为1024,当处于6毫秒梯度时减少CPU份额,其他梯度时都增大CPU份额;每次调整CPU份额,都即时更新容器实例状态表中指定容器的CPU份额值;
S2.3.9:当用户提交推荐应用容器请求时,根据当前节点资源使用情况,推荐可运行的应用容器,减少与现有运行时容器的资源竞争的同时,充分利用空闲资源,提高整体资源利用率;针对CPU资源,通过此时系统是否处于资源竞争状态来判断资源使用状态,当系统处于资源竞争状态时,认为CPU资源已经处于竞争状态;内存资源和I/O资源都认为是空闲资源;查询应用容器运行特征表,找到偏重使用空闲资源,且竞争资源需求小的应用,并经过增加容器实例算法判断可以增加后,向用户推荐运行该应用容器。
以下结合具体实施例阐述本发明提供的针对典型应用的Docker动态调度算法;实例中采用的是动态调度方式;其中,系统内存大小为16GB,CPU为8核16线程。
如图2所示,是实施例中采用动态调度方式下增加应用容器算法的示例图;其中,用户需要新增的应用容器为一个Memcached容器,采用默认优先级方式;
本实施例提供的动态调度方式下的增加应用容器算法,具体如下:
(1)实施例中,用户需要增加的应用容器为Memcached容器,依次判断系统剩余资源是否满足需要增加的应用容器需求;
(2)首先从数据表中读取指定应用的实例个数限制值,例如此时Memcached容器的限制数为4,而当前系统上正在运行的Memcached容器数小于4,则可以进行下一步增加检查;
(3)查询该应用容器的类型、最小CPU需求、和最大内存需求。判断当前物理机上可用内存资源是否能够满足新增应用容器的最大内存需求;例如此时Memcached容器的类型为实时型应用容器,最小CPU需求为400%,最大内存需求为2GB,而此时系统的可用CPU资源为1600%,可用内存资源为16GB,因此系统可用资源能够满足容器需求,则可以进行优先级设置;设置优先级,例如此时用户请求中采用默认优先级设置方式,而Memcached容器为实时型应用容器,则设置优先级为2;
上述步骤(1)(2)(3)对应图2中所指示的流程;
(4)重复步骤(1)~(3),直到处理完成用户全部的增加容器请求,依次完成增加Memcached容器、和两个Parsec容器;
(5)获取一次中所有运行的批处理型应用容器的CPU利用率,并查询其在无竞争状态下运行时的平均CPU利用率,对比两个值,如果其差值超过100%,则认为可能出现了资源竞争情况,进入步骤(6),否则每隔3秒执行一次步骤(5);
(6)每秒监测一次实时CPU利用率值,总共监测3次,如果每次差值都超过100%,则确定处于资源竞争状态,否则,重新执行步骤(5);
上述步骤(5)(6)对应图3中所指示的流程;
(7)当运行实时型应用容器后,一次获取10秒的实时型应用容器平均响应时间;
(8)平均响应时间小于6毫秒的次数大于3时,将容器的CPU份额减少512,当大于5时,将容器的CPU份额再减少512;平均响应时间大于8.5毫秒且小于9.5毫秒的次数大于3时,将容器的CPU份额增加512,当大于5时,将容器的CPU份额再增加512;平均响应时间大于9.5毫秒且小于13毫秒的次数大于3时,将容器的CPU份额增加1024,当大于5时,将容器的CPU份额再增加1024;平均响应时间大于13毫秒的次数大于3时,将容器的CPU份额增加2048,当大于5时,将容器的CPU份额再增加1024;
(9)每次调整CPU份额,都即时更新容器实例状态表中,重新进入步骤(8);
上述步骤(7)~(9)对应图4中所指示的流程;
实施例中,采用动态调度算法,相比于一般的Docker资源管理策略,可以针对应用容器运行状态以及系统资源使用状态,来实时动态调整容器的资源配置。确保每个应用容器的运行性能满足SLA协议要求,同时在有限的资源情况下,最大化系统整体资源利用率。当同时运行实时型和批处理型应用容器时,根据实时型应用容器的服务强度变化,来及时调整资源配置,在优先保证实时型应用的服务性能满足SLA协议要求的同时,保障批处理型应用容器性能。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (4)

1.一种针对典型容器的Docker动态调度算法,其特征在于,包括如下步骤:
S1:典型应用容器的场景包括CPU密集型/批处理型、内存密集型/批处理型、I/O密集型/批处理型和CPU密集型/实时型,其分别选取对应的应用容器,分析各应用容器在Docker环境下单独运行和多个并发运行时的资源使用及性能情况;
S2:调度算法包括容器静态调度方式和基于运行时监控的容器动态调度方式;根据用户使用需求,分情况采用容器静态调度方式和容器动态调度方式;运行多个同种应用容器时,采用容器静态调度方式,根据应用容器特点和SLA协议要求,最大化节点上运行的容器实例数量;异构并发应用容器时,采用容器动态调度方式,优先保证实时型应用容器服务,其次保证批处理型应用容器的运行性能,并根据节点运行现状,推荐最优实例类型,从而在减少与现有运行时应用容器的资源竞争的同时,最大化系统资源利用率。
2.根据权利要求1所述的针对典型容器的Docker动态调度算法,其特征在于,
步骤S1中,具体包括如下子步骤:
S1.1:典型应用容器的场景CPU密集型/批处理型、内存密集型/批处理型、I/O密集型/批处理型和CPU密集型/实时型分别选取对应的应用容器为:Memcached、Parsec、Speccpu2006和Filebench;
S1.2:对于每种应用容器,在应用容器环境下进行单个运行,获得在无竞争情况下每个单个应用容器的运行特征;
S1.3:对于每种应用容器,多个同时在容器环境下运行,获得其同时运行时的资源使用限制及应用容器的性能表现。
3.根据权利要求2所述的针对典型容器的Docker动态调度算法,其特征在于,
步骤S2具体包括如下子步骤:
S2.1:根据用户需求来增加应用容器,根据是否仅运行同一种应用容器,来选择使用容器静态调度方式还是容器动态调度方式,当仅运行同种应用容器时,进入步骤S2.2;若否,进入步骤S2.3;
S2.2:采用容器静态调度方式;
S2.3:采用容器动态调度方式;
S2.4:将用户请求处理结果反馈给用户;
根据权利要求3所述的针对典型容器的Docker动态调度算法,其特征在于,
步骤S2.2具体包括如下子步骤:
S2.2.1:当用户提交请求需要运行的应用名称及数量时,首先从数据表中读取指定应用的实例个数限制值,当请求运行的容器实例数量小于或等于该值时,则可以完成容器实例增加;否则,不允许增加请求的容器实例数;
S2.2.2:反馈处理结果。
4.根据权利要求3所述的针对典型容器的Docker动态调度算法,其特征在于,
步骤S2.3具体包括如下子步骤:
S2.3.1:首先根据指定应用,查询应用容器运行特征表,得到该应用容器的限制运行实例数,判断当前节点上运行的该应用容器实例数是否已经达到限制,若是,则无法完成新增容器操作;若否,则进入步骤S2.3.2;
S2.3.2:查询该应用容器的类型、最小CPU需求和最大内存需求;先判断当前物理机上可用内存资源是否能够满足新增应用容器的最大内存需求;若不能满足,则无法完成新增应用容器操作,选择其他资源充足的物理机来完成新增操作;若可以满足,则进入步骤S2.3.3;
S2.3.3:判断当前可用CPU资源是否能够满足新增应用容器的最小CPU需求;若不能满足,则无法完成新增应用容器操作,选择其他资源充足的物理机来完成新增操作;若可以满足,则进入步骤S2.3.4;
S2.3.4:用户在创建容器实例时,若采用默认设置方式设置优先级,则进入步骤S2.3.5;若采用手动指定值方式设置优先级,则进入步骤S2.3.6;
S2.3.5:批处理型应用容器的优先级设置为1,而实时型应用容器的优先级设置为2,完成新增应用容器操作;
S2.3.6:手动设置优先级时,用户通过系统提供接口,查看到当前节点上所有应用容器实例的优先级设置情况,然后在新增容器时为实例指定优先级;另外,用户在容器实例运行过程中,根据需求来更改指定容器的优先级;优先级设置值越大,则优先级越高,容器实例可使用的偏重资源数越多;在手动设置优先级方式下,依然优先满足实时型应用的资源需求,将实时型应用容器的优先级设置为指定值的两倍,完成新增容器操作;
S2.3.7:每3秒获取一次所有运行中的批处理型应用容器的CPU利用率,并查询其在无竞争状态下运行时的平均CPU利用率,对比两个值,如果其差值超过100%,则认为可能出现了资源竞争情况,接下来每秒监测一次实时CPU利用率值,总共监测3次,如果每次差值都超过100%,则确定处于资源竞争状态;
S2.3.8:当运行实时型应用容器后,以10秒作为一个时间阶段获取实时型应用容器的平均响应时间,设置调控梯度为6毫秒,8.5毫秒,9.5毫秒,13毫秒四级;处于6毫秒和8.5毫秒调控梯度时,CPU份额的调控粒度为512,处于9.5毫秒调控梯度时,CPU份额的调控粒度为1024,处于13毫秒调控梯度时,CPU份额的首次调控粒度为2048,第二次为1024,当处于6毫秒梯度时减少CPU份额,其他梯度时都增大CPU份额;每次调整CPU份额,都即时更新容器实例状态表中指定容器的CPU份额值;
S2.3.9:当用户提交推荐应用容器请求时,根据当前节点资源使用情况,推荐可运行的应用容器,减少与现有运行时容器的资源竞争的同时,充分利用空闲资源,提高整体资源利用率;针对CPU资源,通过此时系统是否处于资源竞争状态来判断资源使用状态,当系统处于资源竞争状态时,认为CPU资源已经处于竞争状态;内存资源和I/O资源都认为是空闲资源;查询应用容器运行特征表,找到偏重使用空闲资源,且竞争资源需求小的应用,并经过增加容器实例算法判断可以增加后,向用户推荐运行该应用容器。
CN201810810904.9A 2018-07-23 2018-07-23 针对典型容器的Docker动态调度方法 Active CN108897627B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810810904.9A CN108897627B (zh) 2018-07-23 2018-07-23 针对典型容器的Docker动态调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810810904.9A CN108897627B (zh) 2018-07-23 2018-07-23 针对典型容器的Docker动态调度方法

Publications (2)

Publication Number Publication Date
CN108897627A true CN108897627A (zh) 2018-11-27
CN108897627B CN108897627B (zh) 2021-11-09

Family

ID=64351382

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810810904.9A Active CN108897627B (zh) 2018-07-23 2018-07-23 针对典型容器的Docker动态调度方法

Country Status (1)

Country Link
CN (1) CN108897627B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110209495A (zh) * 2019-05-17 2019-09-06 上海新储集成电路有限公司 一种运行环境调整方法及系统
CN110457135A (zh) * 2019-08-09 2019-11-15 重庆紫光华山智安科技有限公司 一种资源调度方法、装置及共享gpu显存的方法
CN111274576A (zh) * 2020-01-17 2020-06-12 济南浪潮高新科技投资发展有限公司 智能合约运行环境的控制方法及系统、设备、介质
CN112187894A (zh) * 2020-09-17 2021-01-05 杭州谐云科技有限公司 一种基于负载相关性预测的容器动态调度方法
CN112559142A (zh) * 2019-09-26 2021-03-26 贵州白山云科技股份有限公司 容器的控制方法、装置、边缘计算系统、介质及设备
CN113051036A (zh) * 2021-03-31 2021-06-29 京东方科技集团股份有限公司 基于Docker容器的应用程序许可方法、装置、设备和介质
CN115426365A (zh) * 2022-08-17 2022-12-02 西安理工大学 一种基于泛容计算架构的集群调度方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866918A (zh) * 2012-07-26 2013-01-09 中国科学院信息工程研究所 面向分布式编程框架的资源管理系统
CN105068874A (zh) * 2015-08-12 2015-11-18 国家电网公司 一种结合Docker技术的资源按需动态分配方法
CN105610972A (zh) * 2016-02-01 2016-05-25 中博信息技术研究院有限公司 集群式的任务调派系统
CN106445675A (zh) * 2016-10-20 2017-02-22 焦点科技股份有限公司 一种b2b平台分布式应用调度与资源分配方法
CN106790726A (zh) * 2017-03-30 2017-05-31 电子科技大学 一种基于Docker云平台的优先级队列动态反馈负载均衡资源调度方法
CN106776005A (zh) * 2016-11-23 2017-05-31 华中科技大学 一种面向容器化应用的资源管理系统及方法
CN106874102A (zh) * 2015-12-18 2017-06-20 北京奇虎科技有限公司 基于容器工作性质的资源调度方法和装置
CN107045455A (zh) * 2017-06-19 2017-08-15 华中科技大学 一种基于负载预测的Docker Swarm集群资源调度优化方法
CN108228347A (zh) * 2017-12-21 2018-06-29 上海电机学院 一种任务感知的Docker自适应调度系统
US20180203742A1 (en) * 2015-06-19 2018-07-19 Vmware, Inc. Resource management for containers in a virtualized environment

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102866918A (zh) * 2012-07-26 2013-01-09 中国科学院信息工程研究所 面向分布式编程框架的资源管理系统
US20180203742A1 (en) * 2015-06-19 2018-07-19 Vmware, Inc. Resource management for containers in a virtualized environment
CN105068874A (zh) * 2015-08-12 2015-11-18 国家电网公司 一种结合Docker技术的资源按需动态分配方法
CN106874102A (zh) * 2015-12-18 2017-06-20 北京奇虎科技有限公司 基于容器工作性质的资源调度方法和装置
CN105610972A (zh) * 2016-02-01 2016-05-25 中博信息技术研究院有限公司 集群式的任务调派系统
CN106445675A (zh) * 2016-10-20 2017-02-22 焦点科技股份有限公司 一种b2b平台分布式应用调度与资源分配方法
CN106776005A (zh) * 2016-11-23 2017-05-31 华中科技大学 一种面向容器化应用的资源管理系统及方法
CN106790726A (zh) * 2017-03-30 2017-05-31 电子科技大学 一种基于Docker云平台的优先级队列动态反馈负载均衡资源调度方法
CN107045455A (zh) * 2017-06-19 2017-08-15 华中科技大学 一种基于负载预测的Docker Swarm集群资源调度优化方法
CN108228347A (zh) * 2017-12-21 2018-06-29 上海电机学院 一种任务感知的Docker自适应调度系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HAORAN CAI等: "Montgolfier: Latency-Aware Power Management System for Heterogeneous Servers", 《IEEE》 *
樊明璐: "流式大数据处理平台中资源动态调度技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110209495A (zh) * 2019-05-17 2019-09-06 上海新储集成电路有限公司 一种运行环境调整方法及系统
CN110209495B (zh) * 2019-05-17 2023-08-18 上海新储集成电路有限公司 一种运行环境调整方法及系统
CN110457135A (zh) * 2019-08-09 2019-11-15 重庆紫光华山智安科技有限公司 一种资源调度方法、装置及共享gpu显存的方法
CN112559142A (zh) * 2019-09-26 2021-03-26 贵州白山云科技股份有限公司 容器的控制方法、装置、边缘计算系统、介质及设备
CN112559142B (zh) * 2019-09-26 2023-12-19 贵州白山云科技股份有限公司 容器的控制方法、装置、边缘计算系统、介质及设备
CN111274576A (zh) * 2020-01-17 2020-06-12 济南浪潮高新科技投资发展有限公司 智能合约运行环境的控制方法及系统、设备、介质
CN112187894A (zh) * 2020-09-17 2021-01-05 杭州谐云科技有限公司 一种基于负载相关性预测的容器动态调度方法
CN112187894B (zh) * 2020-09-17 2022-06-10 杭州谐云科技有限公司 一种基于负载相关性预测的容器动态调度方法
CN113051036A (zh) * 2021-03-31 2021-06-29 京东方科技集团股份有限公司 基于Docker容器的应用程序许可方法、装置、设备和介质
CN115426365A (zh) * 2022-08-17 2022-12-02 西安理工大学 一种基于泛容计算架构的集群调度方法

Also Published As

Publication number Publication date
CN108897627B (zh) 2021-11-09

Similar Documents

Publication Publication Date Title
CN108897627A (zh) 针对典型容器的Docker动态调度算法
Hung et al. Wide-area analytics with multiple resources
Jalaparti et al. Network-aware scheduling for data-parallel jobs: Plan when you can
Yu et al. The design of qos broker algorithms for qos-capable web services
CN104050042B (zh) Etl作业的资源分配方法及装置
CN109120715A (zh) 一种云环境下动态负载均衡方法
US7877755B2 (en) Dynamic application placement with allocation restrictions and even load distribution
US8332873B2 (en) Dynamic application instance placement in data center environments
Chung et al. Automated cluster-based web service performance tuning
CN105045871B (zh) 数据聚合查询方法及装置
US20080092140A1 (en) Systems and methods for executing a computer program in a multi-processor environment
US11838384B2 (en) Intelligent scheduling apparatus and method
CN107066332A (zh) 分布式系统及其调度方法和调度装置
CN110245003A (zh) 一种机器学习单机算法编排系统及方法
CN107346264A (zh) 一种虚拟机负载均衡调度的方法、装置和服务器设备
CN104503832B (zh) 一种公平和效率均衡的虚拟机调度系统及方法
CN106681834A (zh) 分布式计算方法、管理装置及系统
CN105786603B (zh) 一种基于分布式的高并发业务处理系统及方法
Tang et al. Dynamic memory-aware scheduling in spark computing environment
CN109960591A (zh) 一种面向租户资源侵占的云应用资源动态调度的方法
CN112698952A (zh) 计算资源统一管理方法、装置、计算机设备及存储介质
CN109739634A (zh) 一种原子任务执行方法及装置
CN114389955A (zh) 嵌入式平台异构资源池化管理方法
CN109408230A (zh) 基于能耗优化的Docker容器部署方法及系统
CN107370783A (zh) 一种云计算集群资源的调度方法及装置

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
GR01 Patent grant
GR01 Patent grant