CN105912403A - Docker容器的资源管理方法及装置 - Google Patents

Docker容器的资源管理方法及装置 Download PDF

Info

Publication number
CN105912403A
CN105912403A CN201610230504.1A CN201610230504A CN105912403A CN 105912403 A CN105912403 A CN 105912403A CN 201610230504 A CN201610230504 A CN 201610230504A CN 105912403 A CN105912403 A CN 105912403A
Authority
CN
China
Prior art keywords
docker container
resource
docker
container
resources
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
CN201610230504.1A
Other languages
English (en)
Other versions
CN105912403B (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.)
Poly Polytron Technologies Inc
Original Assignee
Qingdao Hisense Media Network Technology Co 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 Qingdao Hisense Media Network Technology Co Ltd filed Critical Qingdao Hisense Media Network Technology Co Ltd
Priority to CN201610230504.1A priority Critical patent/CN105912403B/zh
Publication of CN105912403A publication Critical patent/CN105912403A/zh
Application granted granted Critical
Publication of CN105912403B publication Critical patent/CN105912403B/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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种Docker容器的资源管理方法及装置,该方法包括:获取各所述Docker容器在第一预设时长内的资源使用率;根据各所述资源使用率,在所述多个Docker容器中确定资源使用率大于预设最大资源使用率的第一Docker容器;在所述终端设备的备用资源中,和/或所述多个Docker容器中除所述第一Docker容器之外的其他Docker容器的剩余资源中,确定可用资源,并根据所述可用资源为所述第一Docker容器分配资源。用于提高Docker容器的可靠性。

Description

Docker容器的资源管理方法及装置
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种Docker容器的资源管理方法及装置。
背景技术
Docker容器是一种开源的应用容器引擎,可以将多个应用程序集成在一个Docker容器中,并通过该Docker容器将多个应用程序发布到终端设备上。
目前,一个终端设备中可以运行多个Docker容器,各Docker容器可以共用终端设备中的资源(例如CPU资源、内存资源和硬盘资源);在现有技术中,为了使得Docker容器中的各个应用程序可以正常运行,在创建Docker容器时,根据Docker容器中的应用程序对资源的平均需求,为Docker容器分配固定的资源,且在使用过程中,Docker容器中的应用程序根据分配的资源进行运行。然而,在实际应用过程中,在Docker容器中的应用程序集中运行、或者应用程序的用户量增加等情况下,Docker容器的资源无法满足应用程序的需求,使得Docker容器中的应用程序无法正常运行,导致Docker容器的可靠性较低。
发明内容
本发明实施例提供一种Docker容器的资源管理方法及装置,用于提高Docker容器的可靠性。
第一方面,本发明实施例提供一种Docker容器的资源管理方法,应用于包括多个Docker容器的终端设备,所述方法包括:
获取各所述Docker容器在第一预设时长内的资源使用率;
根据各所述资源使用率,在所述多个Docker容器中确定资源使用率大于预设最大资源使用率的第一Docker容器;
在所述终端设备的备用资源中,和/或所述多个Docker容器中除所述第一Docker容器之外的其他Docker容器的剩余资源中,确定可用资源,并根据所述可用资源为所述第一Docker容器分配资源。
如上所述的方法,所述在所述终端设备的备用资源中,和/或所述多个Docker容器中除所述第一Docker容器之外的其他Docker容器的剩余资源中,确定可用资源,包括:
根据所述第一Docker容器的资源使用率、所述第一Docker容器的当前资源量、以及预设平均资源使用率,获取所述第一Docker容器的待分配资源量;
根据所述待分配资源量和所述备用资源的资源量,将所述备用资源确定为所述可用资源,并判断所述备用资源的资源量是否小于所述待分配资源量;
若判断结果为是,则根据各所述资源使用率,在所述多个Docker容器中确定资源使用率小于预设最小资源使用率的第二Docker容器,并在所述第二Docker容器中的剩余资源中确定可用资源。
如上所述的方法,根据所述第一Docker容器的资源使用率、所述第一Docker容器的当前资源量、以及预设平均资源使用率,获取所述第一Docker容器的待分配资源量,包括:
根据公式(1),获取所述第一Docker容器的待分配资源量:
N = M × q n o w q a v i - M - - - ( 1 ) ;
其中,所述N为待分配资源量,所述M为所述第一Docker容器的当前资源量,所述qnow为第一Docker容器的资源使用率,所述qavi为所述预设平均资源使用率。
如上所述的方法,所述在所述第二Docker容器中的剩余资源中确定可用资源,包括:
根据所述第二Docker容器的当前资源量、所述第二Docker容器的资源使用率、以及所述预设平均内存使用率,确定所述第二Docker容器的剩余资源量;
根据所述第一Docker容器的待分配资源量、所述备用资源的资源量、以及所述第二Docker容器的剩余资源量,确定供需比值;
根据所述第二Docker容器的剩余资源量、以及所述供需比值,在所述第二Docker容器中的剩余资源中确定可用资源。
如上所述的方法,根据所述第二Docker容器的当前资源量、所述第二Docker容器的资源使用率、以及所述预设平均内存使用率,确定所述第二Docker容器的剩余资源量,包括:
根据如下公式(2)确定所述第二Docker容器的剩余资源量;
A = M - M × q n o w q a v i - - - ( 2 ) ;
其中,所述A为所述第二Docker容器的剩余资源量,所述M为所述第二Docker容器的当前资源量,所述qnow为所述第二Docker容器的资源使用率,所述qavi为所述预设平均内存使用率。
如上所述的方法,所述根据所述可用资源为所述第一Docker容器分配资源,包括:
获取所述第一Docker容器的资源配置表、以及所述可用资源的属性信息;
根据所述分配资源的属性信息,对所述第一Docker容器的资源配置表进行修改。
如上所述的方法,针对所述多个Docker容器中的任意一个,所述获取各所述Docker容器在第一预设时长内的资源使用率之前,还包括:
在预设资源分配时刻,获取所述Docker容器的资源分配表,所述资源分配表中包括多个分配时段、以及各所述分配时段对应的资源数;
根据当前时刻和所述资源分配表,为所述Docker容器分配资源。
如上所述的方法,在所述获取Docker容器的资源分配表之前,还包括:
获取所述Docker容器在第二预设时长内各时刻的使用的资源量;
根据所述Docker容器在所述第二预设时长内各时刻的使用的资源量,生成所述资源分配表。
第二方面,本发明实施例提供一种Docker容器的资源管理装置,应用于包括多个Docker容器的终端设备,所述装置包括:
第一获取模块,用于获取各所述Docker容器在第一预设时长内的资源使用率;
第一确定模块,用于根据各所述资源使用率,在所述多个Docker容器中确定资源使用率大于预设最大资源使用率的第一Docker容器;
第二确定模块,用于在所述终端设备的备用资源中,和/或所述多个Docker容器中除所述第一Docker容器之外的其他Docker容器的剩余资源中,确定可用资源;
分配模块,用于根据所述可用资源为所述第一Docker容器分配资源。
如上所述的装置,所述第二确定模块包括获取单元、第一确定单元、判断单元、以及第二确定单元,其中,
所述获取单元用于,根据所述第一Docker容器的资源使用率、所述第一Docker容器的当前资源量、以及预设平均资源使用率,获取所述第一Docker容器的待分配资源量;
所述第一确定单元用于,根据所述待分配资源量和所述备用资源的资源量,将所述备用资源确定为所述可用资源;
所述判断单元用于,判断所述备用资源的资源量是否小于所述待分配资源量;
所述第二确定单元用于,在所述判断单元判断所述备用资源的资源量是否小于所述待分配资源量时,根据各所述资源使用率,在所述多个Docker容器中确定资源使用率小于预设最小资源使用率的第二Docker容器;
所述第一确定单元还用于,在所述第二Docker容器中的剩余资源中确定可用资源。
如上所述的装置,所述获取单元具体用于:
根据公式(1),获取所述第一Docker容器的待分配资源量:
N = M × q n o w q a v i - M - - - ( 1 ) ;
其中,所述N为待分配资源量,所述M为所述第一Docker容器的当前资源量,所述qnow为第一Docker容器的资源使用率,所述qavi为所述预设平均资源使用率。
如上所述的装置,所述第一确定单元具体用于:
根据所述第二Docker容器的当前资源量、所述第二Docker容器的资源使用率、以及所述预设平均内存使用率,确定所述第二Docker容器的剩余资源量;可选的,
根据所述第一Docker容器的待分配资源量、所述备用资源的资源量、以及所述第二Docker容器的剩余资源量,确定供需比值;
根据所述第二Docker容器的剩余资源量、以及所述供需比值,在所述第二Docker容器中的剩余资源中确定可用资源。
可选的,所述第一确定单元可以根据如下公式(2)确定所述第二Docker容器的剩余资源量;
A = M - M × q n o w q a v i - - - ( 2 ) ;
其中,所述A为所述第二Docker容器的剩余资源量,所述M为所述第二Docker容器的当前资源量,所述qnow为所述第二Docker容器的资源使用率,所述qavi为所述预设平均内存使用率。
如上所述的装置,所述分配模块具体用于:
获取所述第一Docker容器的资源配置表、以及所述可用资源的属性信息;
根据所述分配资源的属性信息,对所述第一Docker容器的资源配置表进行修改。
如上所述的装置,所述装置还包括第二获取模块,其中,
所述第二获取模块用于,在所述第一获取模块获取各所述Docker容器在第一预设时长内的资源使用率之前,在预设资源分配时刻,获取所述Docker容器的资源分配表,所述资源分配表中包括多个分配时段、以及各所述分配时段对应的资源数;
所述分配模块具体用于,根据当前时刻和所述资源分配表,为所述Docker容器分配资源。
如上所述的装置,所述装置还包括第三获取模块和生成模块,其中,
所述第三获取模块用于,在所述第二获取模块获取Docker容器的资源分配表之前,获取所述Docker容器在第二预设时长内各时刻的使用的资源量;
所述生成模块用于,根据所述Docker容器在所述第二预设时长内各时刻的使用的资源量,生成所述资源分配表。
本发明实施例提供的Docker容器的资源管理方法,在终端设备中各个Docker容器运行的过程中,资源管理装置获取各个Docker容器在第一预设时长内的资源使用率,根据各资源使用率,确定出资源使用率大于预设最大资源使用率的第一Docker容器,该第一Docker容器的资源无法满足第一Docker容器中应用程序的正常运行,在资源管理装置确定得到第一Docker容器之后,在备用资源、以及其他Docker容器的未使用的资源中确定可用资源,并将可用资源分配给该第一Docker容器,以使得该第一Docker容器可以分配到足够的资源,以供该第一Docker容器中的各个应用程序可以正常运行,避免了由于Docker容器的可用资源不足而导致Docker容器中的应用程序无法正常运行的问题,进而提高了Docker容器的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的Docker容器的资源管理方法的流程图;
图2为本发明提供的确定可用资源的方法流程示意图;
图3为本发明提供的Docker容器的资源管理装置的结构示意图一;
图4为本发明提供的Docker容器的资源管理装置的结构示意图二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中,在终端设备中可以运行多个Docker容器,该多个Docker容器可以共用终端设备中的资源,在终端设备中还设置有资源管理装置,该资源管理装置可以通过软件实现,在初始时,资源管理装置为各个Docker容器分配资源,在Docker容器运行过程中,资源管理装置可以实时根据各Docker容器的资源使用率,为Docker容器重新分配资源,以保证各个Docker容器均有足够的资源,进而避免由于Docker容器的可用资源不足而导致Docker容器中的应用程序无法正常运行的问题,下面,通过具体实施例,对本发明所示的Docker容器的资源管理方法及装置进行详细说明。
图1为本发明提供的Docker容器的资源管理方法的流程图,该方法的执行主体为资源管理装置,请参照图1,该方法可以包括:
S101、获取各Docker容器在第一预设时长内的资源使用率;
S102、根据各资源使用率,在多个Docker容器中确定资源使用率大于预设最大资源使用率的第一Docker容器;
S103、在终端设备的备用资源中,和/或多个Docker容器中除第一Docker容器之外的其他Docker容器的剩余资源中,确定可用资源,并根据可用资源为第一Docker容器分配资源。
在实际应用过程中,在终端设备中部署Docker容器时,根据Docker容器中运行的应用程序对资源的需求总量,为Docker容器分配资源,其中该资源包括CPU资源、内存资源、以及硬盘资源等,根据资源类型的不同,为Docker容器分配资源的过程也不同,具体的:
对于CPU资源,可以向不同的Docker容器分配不同数量的CPU、或者可以向不同的Docker容器分配CPU的使用上限,其中,不同的Docker容器可以使用相同的CPU,例如,假设终端设备中包括4个CPU,分别记为CPU1-CPU4,终端设备中包括3个Docker容器,分别记为Docker容器1-Docker容器3,则为各Docker容器分配的CPU可以如下:Docker容器使用CPU1和CPU2,Docker容器2使用CPU2和CPU3,Docker容器3使用CPU1、CPU3和CPU4。
对于内存资源,可以为不同的Docker容器设置内存使用上限,各个Docker容器的上限之和小于或等于终端设备的总内存,例如,终端设备中包括100G的内存,终端设备中包括3个Docker容器,分别记为Docker容器1-Docker容器3,则为各个Docker容器设置的内存使用上限可以如下:Docker容器1的内存上限为25G,Docker容器2的内存使用上限为40G,Docker容器3的内存使用上限为35G,在实际应用过程中,Docker容器1-Docker容器3共用终端设备的100G内存,但Docker容器1最多使用25G,Docker容器2最多使用40G,Docker容器3最多使用35G。
需要说明的是,对于硬盘资源的分配方式与内存的分配方式类似,此处不再进行赘述,当然,终端设备中还可以包括其它资源,本发明对此不作具体限定。
在为Docker容器分配资源时,优选的,可以在终端设备中设置备用资源,以便Docker容器的资源使用率过高时,方便的从备用资源中为该Docker容器分配新的资源,例如,假设终端设备中包括100G的内存资源,则在为Docker容器分配内存资源时,可以将各个Docker容器的上限之和设置为90G,将10G的内存设为备用内存。
在资源管理装置为终端设备的各个Docker容器分配完成资源之后,各个Docker容器中的应用程序可以启动运行,在Docker容器中的应用程序运行过程中,资源管理装置实时或者周期性的获取终端设备中各个Docker容器在第一预设时长内的资源使用率,可选的,该第一预设时长可以为5分钟,在实际应用过程中,可以根据实际需要设置该第一预设时长。
在资源管理装置获取得到各个Docker容器在第一预设时长内的资源使用率之后,分别判断各个Docker容器的资源使用率是否大于预设最大资源使用率,并将资源使用率大于预设最大资源使用率的Docker容器确定为第一Docker容器,其中,由于Docker容器的资源包括多种类型,每一种类型的资源均对应一种最大预设阈值,例如,CPU资源对应的预设最大资源使用率可以为80%,内存资源对应的预设最大资源使用率可以为90%,在实际应用过程中,只要Docker容器的一种资源的使用率大于该资源对应的预设最大资源使用率,就将该Docker容器确定为第一Docker容器。
在资源管理装置确定得到第一Docker容器之后,需要为该Docker容器分配更多的资源,以保证该Docker容器中的应用程序可以正常运行,资源管理装置可以将终端设备中的备用资源和/或为其他Docker容器分配的资源分配给该第一Docker容器,具体的,资源管理装置可以在备用资源、以及其他Docker容器的剩余资源中确定可用资源,并将可用资源分配给该第一Docker容器;可选的,可以根据如下方式为第一Docker容器分配资源,具体的:获取第一Docker容器的资源配置表、以及可用资源的属性信息,根据分配资源的属性信息,对第一Docker容器的资源配置表进行修改。
本发明实施例提供的Docker容器的资源管理方法,在终端设备中各个Docker容器运行的过程中,资源管理装置获取各个Docker容器在第一预设时长内的资源使用率,根据各资源使用率,确定出资源使用率大于预设最大资源使用率的第一Docker容器,该第一Docker容器的资源无法满足第一Docker容器中应用程序的正常运行,在资源管理装置确定得到第一Docker容器之后,在备用资源、以及其他Docker容器的未使用的资源中确定可用资源,并将可用资源分配给该第一Docker容器,以使得该第一Docker容器可以分配到足够的资源,以供该第一Docker容器中的各个应用程序可以正常运行,避免了由于Docker容器的可用资源不足而导致Docker容器中的应用程序无法正常运行的问题,进而提高了Docker容器的可靠性。
在图1所示实施例的基础上,资源管理装置可以通过如下可行的实现方式根据终端设备的备用资源和/或各Docker容器的资源使用率,确定可用资源(图1所示实施例中的S103),具体的,请参见图2所示实施例。
图2为本发明提供的确定可用资源的方法流程示意图,在图1所示实施例的基础上,请参见图2,该方法可以包括:
S201、根据第一Docker容器的资源使用率、第一Docker容器的当前资源量、以及预设平均资源使用率,获取第一Docker容器的待分配资源量;
S202、根据待分配资源量和备用资源的资源量,将备用资源确定为可用资源;
S203、判断备用资源的资源量是否小于待分配资源量;
S204、若判断结果为是,则根据各资源使用率,在多个Docker容器中确定资源使用率小于预设最小资源使用率的第二Docker容器;
S205、在第二Docker容器中的剩余资源中确定可用资源。
在实际应用过程中,当确定第一Docker容器的资源使用率大于预设最大资源使用率,需要为该第一Docker容器再次分配资源时,资源管理装置根据该第一Docker容器的资源使用率、该第一Docker容器的当前资源量、以及预设平均资源使用率,确定还需要为第一Docker容器分配的待分配资源量,其中,该预设平均资源使用率为Docker容器中的应用程序可以良好运行的最大资源使用率,即,当Docker容器的资源使用率小于或等于该预设平均资源使用率时,可以保证Docker容器中的应用程序能够良好运行。
可选的,可以根据如下公式(1),获取第一Docker容器的待分配资源量:
N = M × q n o w q a v i - M - - - ( 1 ) ;
其中,N为待分配资源量,M为第一Docker容器的当前资源量,qnow为第一Docker容器的资源使用率,qavi为预设平均资源使用率。
在资源管理装置获取得到第一Docker容器的待分配资源量后,资源管理装置根据待分配资源量和备用资源的资源量,先将终端设备中的备用资源确定为可分资源,然后判断该备用资源量是否大于待分配资源量,若是,则通过该备用资源即可完成对第一Docker容器的资源分配,若否,则根据各个Docker容器的资源使用率,在终端设备的多个Docker容器中确定资源使用率小于预设最小资源使用率的第二Docker容器。
在确定得到第二Docker容器之后,先根据第二Docker容器的当前资源量、第二Docker容器的资源使用率、以及预设平均内存使用率,确定第二Docker容器的剩余资源量;可选的,根据如下公式(2)确定第二Docker容器的剩余资源量;
A = M - M × q n o w q a v i - - - ( 2 ) ;
其中,A为第二Docker容器的剩余资源量,M为第二Docker容器的当前资源量,qnow为第二Docker容器的资源使用率,qavi为预设平均内存使用率。
然后,资源管理装置根据第一Docker容器的待分配资源量、备用资源的资源量、以及第二Docker容器的剩余资源量,确定供需比值,并根据第二Docker容器的剩余资源量、以及供需比值,在第二Docker容器中的剩余资源中确定可用资源。
需要说明的是,在实际应用过程中,终端设备中可能没有备用资源,当终端设备中没有备用资源时,资源管理装置还可以直接在第二Docker容器的剩余资源中确定可用资源。
在上述任意一个实施例的基础上,在实际应用过程中,各个Docker容器中的应用程序的运行高峰时段可能不同,使得各个Docker容器在不同时段对资源的需求量也不同,因此,可以根据各个Docker容器在不同时段对资源的需求,动态为各个Docker容器分配资源。
在实现动态为各个Docker容器分配资源之前,需要先对各Docker容器的资源使用情况进行统计以生成资源分配表,具体的:资源管理装置可以实时或周期性获取终端设备中各Docker容器在第二预设时长内各个时刻使用的资源量,并根据各Docker容器在第二预设时长内各个时刻使用的资源量,生成资源分配表,其中,该资源分配表中可以包括多个分配时段、以及各分配时段对应的资源数,可选的,该第二预设可以为一天,进一步的,在实际应用过程中,还可以实时或者周期性的对资源分配表进行更新。
在确定得到资源分配表之后,还可以根据资源分配表设置多个预设资源分配时刻,在Docker容器运行的过程中,在预设资源分配时刻,获取Docker容器的资源分配表,根据当前时刻和资源分配表,为Docker容器分配资源。
在该种实现方式中,由于资源分配表是根据各个Docker容器的实际资源使用情况统计得来的,资源分配表可以真实的体现各个Docker容器在不同时段内的实际资源使用情况,因此,在预设资源分配时刻,根据资源分配表为终端设备中的各个Docker容器分配资源,可以有效减少Docker容器出现资源不足的情况。
下面,以资源为内存资源为例,通过具体示例,对上述实施例所示的方法进行详细说明。
示例性的,假设终端设备中设置有4个Docker容器,分别记为Docker容器1-Docker容器4,再假设终端设备中包括200G内存,其中,终端设备中的备用内存为10G,假设根据Docker容器1-Docker容器4在一天内的内存使用量生成的资源分配表如表1所示:
表1
根据表1所示的资源分配表,可以得到3个资源分配时刻,分别为:08:00、12:00、18:00,在08:00时,根据08:00-12:00时段对应的内存,为Docker容器1-Docker容器4分配内存,在12:00时,根据12:00-18:00时段对应的内存,为Docker容器1-Docker容器4分配内存,在18:00时,根据18:00-24:00时段对应的内存,为Docker容器1-Docker容器4分配内存。
进一步的,在各个资源分配时刻为各个Docker容器分配完成内存之后,还需要实时或周期性的检测各个Docker容器的实际内存使用情况,在Docker容器的实际内存使用率大于预设最大内存使用率时,重新为Docker容器分配内存;下面,以08:00-12:00时段为例,对实时或周期性的对Docker容器1-Docker容器4的内存进行管理的过程进行详细说明。
假设预设最大内存使用率为90%,预设平均内存使用率为70%,预设最小内存使用率为50%,在08:00-12:00时段内,资源管理装置实时获取各个Docker容器在当前时刻之前5分钟内(第一预设时长内)的内存使用率,假设获取得到的各个Docker容器的内存使用率如表2所示:
表2
Docker容器 内存上限 内存使用量 内存使用率
Docker容器1 60G 18 30%
Docker容器2 50G 20 40%
Docker容器3 60G 57 95%
Docker容器4 20G 12 60%
根据预设最大资源使用率(90%)和各个Docker容器的内存使用率,将Docker容器3确定为第一Docker容器。
资源管理装置在确定得到第一Docker容器之后,根据Docker容器3的内存使用率(95%)、Docker容器3的当前内存量(60G)、以及预设平均内存使用率(70%),确定Docker容器3的待分配内存量,具体的,资源管理装置根据如下公式,确定Docker容器3的待分配内存量:
N = M × q n o w q a v i - M = 60 × 95 % 70 % - 60 = 21.5 G
在资源管理装置确定得到Docker容器3的待分配内存量后,资源管理装置获取终端设备的备用内存10G,并将备用内存确定为可用资源,判断该备用内存量(10G)小于待分配内存量(21.5G),则资源管理装置还需要为Docker容器3分配21.5-10=11.5G的内存。
资源管理装置在Docker容器1、Docker容器2、Docker容器4中确定第二Docker容器,由于Docker容器1的内存使用率(30%)和Docker容器2的内存使用率(40%)小于最小内存使用率(50%),因此,将Docker容器1和Docker容器2确定为第二Docker容器。
资源管理装置根据预设平均内存使用率(70%)将Docker容器1和Docker容器2的剩余内存中的一部分设置为可用资源,同时保证重新分配资源后的将Docker容器1和Docker容器2的内存使用率不低于预设平均内存使用率70%,具体的:
资源管理装置根据如下公式确定Docker容器1的剩余的内存量:
A = M - M × q n o w q a v i = 60 - 60 × 30 % 70 % = 34.3 G ;
根据如下公式确定Docker容器2的剩余内存量为:
A = M - M × q n o w q a v i = 50 - 50 × 40 % 70 % = 21.5 G ;
资源管理装置根据如下公式(3)确定出供需比值:
X = N - L Σ i = 1 k A i - - - ( 3 ) ;
其中,X为供需比值,N为第一Docker容器的待分配内存,L为终端设备的备用内存的内存量,K为第二Docker容器的个数,Ai为第i个Docker容器的剩余内存量。
资源管理装置根据如上公式(3)可以确定出供需比值为:
X = N - L Σ i = 1 k A i = 21.5 - 10 34.3 + 21.5 = 20.6 % ;
由上可知,Docker容器1的剩余内存量为34.3G,Docker容器2的剩余内存量为21.5G,供需比值为20.6%,则Docker容器1实际分出的内存量为:34.3*20.6%=7G,Docker容器2实际分出的内存量为:21.5*20.6%=4.5G。
综上可知,资源管理装置为Docker容器3分配的内存资源分别如下:备用内存10G、Docker容器1中的内存7G、Docker容器1中的内存4.5G,资源管理装置将上述可用资源分配给Docker容器3之后,各个Docker容器的内存、以及内存使用率如表3所示:
表3
Docker容器 内存 内存使用量 内存使用率
Docker容器1 60-7=53G 18 34%
Docker容器2 50-4.5=45.5G 20 44%
Docker容器3 60+21.5=81.5G 57 70%
Docker容器4 20G 12 60%
通过如上方法,可以使得Docker容器1-Docker容器4的内存使用率均小于预设平均内存使用率,使得Docker容器1-Docker容器4中均包括足够的内存,进而保证Docker容器1-Docker容器4中的应用程序均可以正常运行。
图3为本发明提供的Docker容器的资源管理装置的结构示意图一,该装置可以设置在终端设备中,请参照图3,该装置可以包括:
第一获取模块301,用于获取各Docker容器在第一预设时长内的资源使用率;
第一确定模块302,用于根据各资源使用率,在多个Docker容器中确定资源使用率大于预设最大资源使用率的第一Docker容器;
第二确定模块303,用于在终端设备的备用资源中,和/或多个Docker容器中除第一Docker容器之外的其他Docker容器的剩余资源中,确定可用资源;
分配模块304,用于根据可用资源为第一Docker容器分配资源。
图4为本发明提供的Docker容器的资源管理装置的结构示意图二,在图3所示实施例的基础上,请参照图4,第二确定模块303可以包括获取单元3031、第一确定单元3032、判断单元3033、以及第二确定单元3034,其中,
获取单元3031用于,根据第一Docker容器的资源使用率、第一Docker容器的当前资源量、以及预设平均资源使用率,获取第一Docker容器的待分配资源量;
第一确定单元3032用于,根据待分配资源量和备用资源的资源量,将备用资源确定为可用资源;
判断单元3033用于,判断备用资源的资源量是否小于待分配资源量;
第二确定单元3034用于,在判断单元3033判断备用资源的资源量是否小于待分配资源量时,根据各资源使用率,在多个Docker容器中确定资源使用率小于预设最小资源使用率的第二Docker容器;
第一确定单元还用于,在第二Docker容器中的剩余资源中确定可用资源。
可选的,获取单元3031具体可以用于:
根据公式(1),获取第一Docker容器的待分配资源量:
N = M × q n o w q a v i - M - - - ( 1 ) ;
其中,N为待分配资源量,M为第一Docker容器的当前资源量,qnow为第一Docker容器的资源使用率,qavi为预设平均资源使用率。
在实际应用过程汇总,可选的,第一确定单元3032具体可以用于:
根据第二Docker容器的当前资源量、第二Docker容器的资源使用率、以及预设平均内存使用率,确定第二Docker容器的剩余资源量;
根据第一Docker容器的待分配资源量、备用资源的资源量、以及第二Docker容器的剩余资源量,确定供需比值;
根据第二Docker容器的剩余资源量、以及供需比值,在第二Docker容器中的剩余资源中确定可用资源。
可选的,第一确定单元3032可以根据如下公式(2)确定第二Docker容器的剩余资源量;
A = M - M × q n o w q a v i - - - ( 2 ) ;
其中,A为第二Docker容器的剩余资源量,M为第二Docker容器的当前资源量,qnow为第二Docker容器的资源使用率,qavi为预设平均内存使用率。
在实际应用过程中,可选的,分配模块304具体可以用于:
获取第一Docker容器的资源配置表、以及可用资源的属性信息;
根据分配资源的属性信息,对第一Docker容器的资源配置表进行修改。
进一步的,该装置还可以包括第二获取模块305,其中,
第二获取模块305用于,在第一获取模块获取各Docker容器在第一预设时长内的资源使用率之前,在预设资源分配时刻,获取Docker容器的资源分配表,资源分配表中包括多个分配时段、以及各分配时段对应的资源数;
分配模块304具体可以用于,根据当前时刻和资源分配表,为Docker容器分配资源。
进一步的,该装置还可以包括第三获取模块306和生成模块307,其中,
第三获取模块306用于,在第二获取模块305获取Docker容器的资源分配表之前,获取Docker容器在第二预设时长内各时刻的使用的资源量;
生成模块307用于,根据Docker容器在第二预设时长内各时刻的使用的资源量,生成资源分配表。
本发明实施例所示的装置可以执行上述方法实施例所示的技术方案,其实现原理以及有益效果类似,此处不再进行赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种Docker容器的资源管理方法,其特征在于,应用于包括多个Docker容器的终端设备,所述方法包括:
获取各所述Docker容器在第一预设时长内的资源使用率;
根据各所述资源使用率,在所述多个Docker容器中确定资源使用率大于预设最大资源使用率的第一Docker容器;
在所述终端设备的备用资源中,和/或所述多个Docker容器中除所述第一Docker容器之外的其他Docker容器的剩余资源中,确定可用资源,并根据所述可用资源为所述第一Docker容器分配资源。
2.根据权利要求1所述的方法,其特征在于,所述在所述终端设备的备用资源中,和/或所述多个Docker容器中除所述第一Docker容器之外的其他Docker容器的剩余资源中,确定可用资源,包括:
根据所述第一Docker容器的资源使用率、所述第一Docker容器的当前资源量、以及预设平均资源使用率,获取所述第一Docker容器的待分配资源量;
根据所述待分配资源量和所述备用资源的资源量,将所述备用资源确定为所述可用资源,并判断所述备用资源的资源量是否小于所述待分配资源量;
若判断结果为是,则根据各所述资源使用率,在所述多个Docker容器中确定资源使用率小于预设最小资源使用率的第二Docker容器,并在所述第二Docker容器中的剩余资源中确定可用资源。
3.根据权利要求2所述的方法,其特征在于,根据所述第一Docker容器的资源使用率、所述第一Docker容器的当前资源量、以及预设平均资源使用率,获取所述第一Docker容器的待分配资源量,包括:
根据公式(1),获取所述第一Docker容器的待分配资源量:
N = M × q n o w q a v i - M - - - ( 1 ) ;
其中,所述N为所述待分配资源量,所述M为所述第一Docker容器的当前资源量,所述qnow为所述第一Docker容器的资源使用率,所述qavi为所述预设平均资源使用率。
4.根据权利要求2所述的方法,其特征在于,所述在所述第二Docker容器中的剩余资源中确定可用资源,包括:
根据所述第二Docker容器的当前资源量、所述第二Docker容器的资源使用率、以及所述预设平均内存使用率,确定所述第二Docker容器的剩余资源量;
根据所述第一Docker容器的待分配资源量、所述备用资源的资源量、以及所述第二Docker容器的剩余资源量,确定供需比值;
根据所述第二Docker容器的剩余资源量、以及所述供需比值,在所述第二Docker容器中的剩余资源中确定可用资源。
5.根据权利要求4所述的方法,其特征在于,根据所述第二Docker容器的当前资源量、所述第二Docker容器的资源使用率、以及所述预设平均内存使用率,确定所述第二Docker容器的剩余资源量,包括:
根据如下公式(2)确定所述第二Docker容器的剩余资源量;
A = M - H × q n o w q a v i - - - ( 2 ) ;
其中,所述A为所述第二Docker容器的剩余资源量,所述M为所述第二Docker容器的当前资源量,所述qnow为所述第二Docker容器的资源使用率,所述qavi为所述预设平均内存使用率。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据所述可用资源为所述第一Docker容器分配资源,包括:
获取所述第一Docker容器的资源配置表、以及所述可用资源的属性信息;
根据所述分配资源的属性信息,对所述第一Docker容器的资源配置表进行修改。
7.根据权利要求1-5任一项所述的方法,其特征在于,针对所述多个Docker容器中的任意一个,所述获取各所述Docker容器在第一预设时长内的资源使用率之前,还包括:
在预设资源分配时刻,获取所述Docker容器的资源分配表,所述资源分配表中包括多个分配时段、以及各所述分配时段对应的资源数;
根据当前时刻和所述资源分配表,为所述Docker容器分配资源。
8.根据权利要求7所述的方法,其特征在于,在所述获取Docker容器的资源分配表之前,还包括:
获取所述Docker容器在第二预设时长内各时刻的使用的资源量;
根据所述Docker容器在所述第二预设时长内各时刻的使用的资源量,生成所述资源分配表。
9.一种Docker容器的资源管理装置,其特征在于,应用于包括多个Docker容器的终端设备,所述装置包括:
第一获取模块,用于获取各所述Docker容器在第一预设时长内的资源使用率;
第一确定模块,用于根据各所述资源使用率,在所述多个Docker容器中确定资源使用率大于预设最大资源使用率的第一Docker容器;
第二确定模块,用于在所述终端设备的备用资源中,和/或所述多个Docker容器中除所述第一Docker容器之外的其他Docker容器的剩余资源中,确定可用资源;
分配模块,用于根据所述可用资源为所述第一Docker容器分配资源。
10.根据权利要求9所述的装置,其特征在于,所述第二确定模块包括获取单元、第一确定单元、判断单元、以及第二确定单元,其中,
所述获取单元用于,根据所述第一Docker容器的资源使用率、所述第一Docker容器的当前资源量、以及预设平均资源使用率,获取所述第一Docker容器的待分配资源量;
所述第一确定单元用于,根据所述待分配资源量和所述备用资源的资源量,将所述备用资源确定为所述可用资源;
所述判断单元用于,判断所述备用资源的资源量是否小于所述待分配资源量;
所述第二确定单元用于,在所述判断单元判断所述备用资源的资源量是否小于所述待分配资源量时,根据各所述资源使用率,在所述多个Docker容器中确定资源使用率小于预设最小资源使用率的第二Docker容器;
所述第一确定单元还用于,在所述第二Docker容器中的剩余资源中确定可用资源。
CN201610230504.1A 2016-04-14 2016-04-14 Docker容器的资源管理方法及装置 Active CN105912403B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610230504.1A CN105912403B (zh) 2016-04-14 2016-04-14 Docker容器的资源管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610230504.1A CN105912403B (zh) 2016-04-14 2016-04-14 Docker容器的资源管理方法及装置

Publications (2)

Publication Number Publication Date
CN105912403A true CN105912403A (zh) 2016-08-31
CN105912403B CN105912403B (zh) 2019-08-06

Family

ID=56746920

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610230504.1A Active CN105912403B (zh) 2016-04-14 2016-04-14 Docker容器的资源管理方法及装置

Country Status (1)

Country Link
CN (1) CN105912403B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484540A (zh) * 2016-10-20 2017-03-08 腾讯科技(深圳)有限公司 一种资源配置方法及装置
CN107391313A (zh) * 2017-07-31 2017-11-24 郑州云海信息技术有限公司 一种容器的运行方法及装置
CN108279979A (zh) * 2018-01-19 2018-07-13 聚好看科技股份有限公司 一种为应用程序容器绑定cpu的方法及装置
CN108415772A (zh) * 2018-02-12 2018-08-17 腾讯科技(深圳)有限公司 一种基于容器的资源调整方法、装置和介质
CN109117248A (zh) * 2018-07-19 2019-01-01 郑州云海信息技术有限公司 一种基于kubernetes平台的深度学习任务弹性伸缩系统及方法
CN109144727A (zh) * 2018-08-21 2019-01-04 郑州云海信息技术有限公司 云数据系统中资源的管理方法和装置
CN110442428A (zh) * 2019-08-02 2019-11-12 北京智芯微电子科技有限公司 Docker容器的协调方法
CN110874257A (zh) * 2018-08-31 2020-03-10 阿里巴巴集团控股有限公司 服务器上的容器配置方法和装置
WO2020063985A1 (zh) * 2018-09-29 2020-04-02 南京中兴软件有限责任公司 资源分配方法、装置、设备以及计算机可读存储介质
CN111273871A (zh) * 2020-01-19 2020-06-12 星辰天合(北京)数据科技有限公司 容器平台上动态分配存储资源的方法及装置
CN111459678A (zh) * 2020-04-02 2020-07-28 上海极链网络科技有限公司 一种资源调度方法、装置、存储介质及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593224A (zh) * 2012-08-13 2014-02-19 鸿富锦精密工业(深圳)有限公司 虚拟机资源配置系统及方法
CN103747107A (zh) * 2014-01-27 2014-04-23 西安雷迪维护系统设备有限公司 一种兼容式云操作平台及其实现方法
CN103873498A (zh) * 2012-12-11 2014-06-18 中国电信股份有限公司 云平台资源自适应预警方法与系统
CN104618269A (zh) * 2015-01-29 2015-05-13 南京理工大学 基于能耗要求的云系统利用率最大化资源分配方法
CN104714851A (zh) * 2015-03-30 2015-06-17 中国联合网络通信集团有限公司 一种实现资源分配的方法及装置
CN104881325A (zh) * 2015-05-05 2015-09-02 中国联合网络通信集团有限公司 一种资源调度方法和资源调度系统
US20150309828A1 (en) * 2014-04-24 2015-10-29 Unisys Corporation Hypervisor manager for virtual machine management
CN105068874A (zh) * 2015-08-12 2015-11-18 国家电网公司 一种结合Docker技术的资源按需动态分配方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103593224A (zh) * 2012-08-13 2014-02-19 鸿富锦精密工业(深圳)有限公司 虚拟机资源配置系统及方法
CN103873498A (zh) * 2012-12-11 2014-06-18 中国电信股份有限公司 云平台资源自适应预警方法与系统
CN103747107A (zh) * 2014-01-27 2014-04-23 西安雷迪维护系统设备有限公司 一种兼容式云操作平台及其实现方法
US20150309828A1 (en) * 2014-04-24 2015-10-29 Unisys Corporation Hypervisor manager for virtual machine management
CN104618269A (zh) * 2015-01-29 2015-05-13 南京理工大学 基于能耗要求的云系统利用率最大化资源分配方法
CN104714851A (zh) * 2015-03-30 2015-06-17 中国联合网络通信集团有限公司 一种实现资源分配的方法及装置
CN104881325A (zh) * 2015-05-05 2015-09-02 中国联合网络通信集团有限公司 一种资源调度方法和资源调度系统
CN105068874A (zh) * 2015-08-12 2015-11-18 国家电网公司 一种结合Docker技术的资源按需动态分配方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106484540B (zh) * 2016-10-20 2019-11-19 腾讯科技(深圳)有限公司 一种资源配置方法及装置
CN106484540A (zh) * 2016-10-20 2017-03-08 腾讯科技(深圳)有限公司 一种资源配置方法及装置
CN107391313A (zh) * 2017-07-31 2017-11-24 郑州云海信息技术有限公司 一种容器的运行方法及装置
CN108279979B (zh) * 2018-01-19 2021-02-19 聚好看科技股份有限公司 一种为应用程序容器绑定cpu的方法及装置
CN108279979A (zh) * 2018-01-19 2018-07-13 聚好看科技股份有限公司 一种为应用程序容器绑定cpu的方法及装置
CN108415772A (zh) * 2018-02-12 2018-08-17 腾讯科技(深圳)有限公司 一种基于容器的资源调整方法、装置和介质
CN108415772B (zh) * 2018-02-12 2022-02-18 腾讯科技(深圳)有限公司 一种基于容器的资源调整方法、装置和介质
CN109117248A (zh) * 2018-07-19 2019-01-01 郑州云海信息技术有限公司 一种基于kubernetes平台的深度学习任务弹性伸缩系统及方法
CN109144727A (zh) * 2018-08-21 2019-01-04 郑州云海信息技术有限公司 云数据系统中资源的管理方法和装置
CN110874257B (zh) * 2018-08-31 2024-04-02 阿里巴巴集团控股有限公司 服务器上的容器配置方法和装置
CN110874257A (zh) * 2018-08-31 2020-03-10 阿里巴巴集团控股有限公司 服务器上的容器配置方法和装置
WO2020063985A1 (zh) * 2018-09-29 2020-04-02 南京中兴软件有限责任公司 资源分配方法、装置、设备以及计算机可读存储介质
CN110442428A (zh) * 2019-08-02 2019-11-12 北京智芯微电子科技有限公司 Docker容器的协调方法
CN111273871A (zh) * 2020-01-19 2020-06-12 星辰天合(北京)数据科技有限公司 容器平台上动态分配存储资源的方法及装置
CN111459678A (zh) * 2020-04-02 2020-07-28 上海极链网络科技有限公司 一种资源调度方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN105912403B (zh) 2019-08-06

Similar Documents

Publication Publication Date Title
CN105912403A (zh) Docker容器的资源管理方法及装置
CN107292741B (zh) 一种资源分配方法和装置
CN107329837B (zh) 一种负载均衡的方法和单元、分布式NewSQL数据库系统
CN107291546A (zh) 一种资源调度方法及装置
CN108989238A (zh) 一种分配业务带宽的方法以及相关设备
CN107580023A (zh) 一种动态调整任务分配的流处理作业调度方法及系统
CN107135257A (zh) 一种节点集群中任务分配的方法、节点和系统
CN103970851B (zh) 海量凭证数据直接出具大型企业集团总部财务报表的方法
CN112068957B (zh) 资源分配方法、装置、计算机设备及存储介质
CN105468458B (zh) 计算机集群的资源调度方法及系统
US9063668B1 (en) Distributed memory allocation in multi-threaded programs
CN103902384B (zh) 为虚拟机分配物理机的方法及装置
CN103713955A (zh) 资源动态分配的管理方法和装置
CN103336722A (zh) 一种虚拟机cpu资源监控和动态分配方法
CN110138688A (zh) 动态调整业务接口的方法、装置、设备及可读存储介质
CN103581313A (zh) 一种处理设备与集群服务器建立连接的方法及处理设备
CN110580195A (zh) 一种基于内存热插拔的内存分配方法和装置
CN103559148A (zh) 面向多任务嵌入式系统的片上便笺式存储器管理方法
CN104077266B (zh) 多内核操作系统实现方法和实现装置及系统
CN107992351B (zh) 一种硬件资源分配方法及装置、电子设备
CN103325012A (zh) 一种适用于电网安全校核的并行计算动态任务分配方法
CN111815443A (zh) 区块链系统的奖励管理方法、电子设备和存储介质
CN106375372A (zh) 一种大数据资源分配方法和装置
CN106708624A (zh) 一种多工作域计算资源的自适应调整方法
CN107623711A (zh) 一种集群中主节点及从节点的分配方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20170105

Address after: 266100 Shandong Province, Qingdao city Laoshan District Songling Road No. 399

Applicant after: Poly Polytron Technologies Inc

Address before: 266061 Laoshan, Qingdao province Hongkong District No. East Road, room 248, room 131

Applicant before: Hisense Media Networks Co., Ltd.

GR01 Patent grant
GR01 Patent grant