CN108845882B - 基于转码任务调度实现cpu负载均衡的方法和装置 - Google Patents

基于转码任务调度实现cpu负载均衡的方法和装置 Download PDF

Info

Publication number
CN108845882B
CN108845882B CN201810579998.3A CN201810579998A CN108845882B CN 108845882 B CN108845882 B CN 108845882B CN 201810579998 A CN201810579998 A CN 201810579998A CN 108845882 B CN108845882 B CN 108845882B
Authority
CN
China
Prior art keywords
transcoding
cpu
utilization rate
thread
cpu utilization
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.)
Active
Application number
CN201810579998.3A
Other languages
English (en)
Other versions
CN108845882A (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.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and 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 Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN201810579998.3A priority Critical patent/CN108845882B/zh
Publication of CN108845882A publication Critical patent/CN108845882A/zh
Application granted granted Critical
Publication of CN108845882B publication Critical patent/CN108845882B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/504Resource capping

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)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于转码任务调度实现CPU负载均衡的方法和装置,属于互联网流媒体技术领域。所述方法包括:周期性获取所述转码服务器的平均CPU使用率;逐一判断所有转码进程中每个转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率;如果大于、且两者差值大于预设阈值,则将所述转码线程迁移至所述转码服务器上的其他CPU。本发明可以提高转码质量和转码服务器稳定性。

Description

基于转码任务调度实现CPU负载均衡的方法和装置
技术领域
本发明涉及互联网流媒体技术领域,尤其涉及一种基于转码任务调度实现CPU负载均衡的方法和装置。
背景技术
伴随着互联网技术的发展以及宽带的不断提速,互联网与人们的生活联系的日益密切,越来越多的人们热衷于在互联网中获取音频和视频来丰富生活,为了适应不同的网络带宽、不同的终端处理能力和不同的用户需求,往往需要对音频或视频进行转码。
当需要进行视频(音频)转码的时,视频(音频)源与流媒体服务器建立连接,流媒体服务器向转码服务器发送转码任务创建请求,转码服务器收到转码任务创建请求后,根据自身CPU负载水平,选择是否创建转码任务。如果转码服务器的CPU负载处于较低水平,转码服务器创建转码任务,启动相应的转码进程,对视频(音频)进行转码,并向流媒体服务器反馈转码任务创建成功消息;如果转码服务器的CPU负载处于较高水平,转码服务器拒绝创建转码任务,并向流媒体服务器反馈转码任务创建失败消息。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
转码服务器只能在根据CPU总负载水平选择是否创建转码任务,而转码服务器内部由于具有多个CPU,各CPU之间也会有负载不均的状况发生,如果某个CPU负载过高,会出现转码错误、转码速度减慢等问题,进而导致整个转码服务器卡顿,影响转码质量和转码服务器稳定性。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种基于转码任务调度实现CPU负载均衡的方法和装置。所述技术方案如下:
第一方面,提供了一种基于转码任务调度实现CPU负载均衡的方法,所述方法包括:
周期性获取所述转码服务器的平均CPU使用率;
逐一判断所有转码进程中每个转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率;
如果大于、且两者差值大于预设阈值,则将所述转码线程迁移至所述转码服务器上的其他CPU。
进一步的,所述周期性获取所述转码服务器的平均CPU使用率之前,还包括:
当接收到目标转码任务的创建请求时,启动所述目标转码任务的转码进程,并在预设的转码进程表中添加所述转码进程对应的进程号和所述转码进程包含的所有转码线程对应的线程号;
当接收到目标转码任务的删除请求时,结束所述目标转码任务的转码进程,并在预设的转码进程表中删除所述转码进程对应的进程号和所述转码进程包含的所有转码线程对应的线程号。
进一步的,所述逐一判断所有转码进程中每个转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率,包括:
根据所述转码进程表逐一确定所述转码服务器上的转码进程;
对于所述转码进程中每个转码线程,逐一获取所述转码线程所在CPU的CPU使用率;
判断所述转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率。
进一步的,所述如果大于、且两者差值大于预设阈值,则将所述转码线程迁移至所述转码服务器上的其他CPU,包括:
如果大于,且两者差值大于预设阈值,则确定所述转码服务器上CPU使用率最低的目标CPU,以及所述转码线程的CPU使用率;
如果所述转码线程的CPU使用率与所述目标CPU的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,则将所述转码线程迁移至所述目标CPU。
进一步的、且两者差值大于预设阈值,则将所述转码线程迁移至所述转码服务器上的其他CPU,包括:
如果大于,且两者差值大于预设阈值,则确定所述转码线程的CPU使用率;
确定所述转码服务器上CPU使用率与所述转码线程的CPU使用率之和最接近平均CPU使用率的目标CPU;
如果所述转码线程的CPU使用率与所述目标CPU的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,则将所述转码线程迁移至所述目标CPU。
第二方面,提供了一种基于转码任务调度实现CPU负载均衡的装置,所述装置包括:
使用率获取模块,用于周期性获取所述转码服务器的平均CPU使用率;
判断模块,用于逐一判断所有转码进程中每个转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率;
迁移模块,用于如果大于、且两者差值大于预设阈值,则将所述转码线程迁移至所述转码服务器上的其他CPU。
进一步的,所述装置还包括:
添加模块,用于当接收到目标转码任务的创建请求时,启动所述目标转码任务的转码进程,并在预设的转码进程表中添加所述转码进程对应的进程号和所述转码进程包含的所有转码线程对应的线程号;
删除模块,用于当接收到目标转码任务的删除请求时,结束所述目标转码任务的转码进程,并在预设的转码进程表中删除所述转码进程对应的进程号和所述转码进程包含的所有转码线程对应的线程号。
进一步的,所述判断模块,具体用于:
根据所述转码进程表逐一确定所述转码服务器上的转码进程;
对于所述转码进程中每个转码线程,逐一获取所述转码线程所在CPU的CPU使用率;
判断所述转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率。
进一步的,所述迁移模块,具体用于:
如果大于,且两者差值大于预设阈值,则确定所述转码服务器上CPU使用率最低的目标CPU,以及所述转码线程的CPU使用率;
如果所述转码线程的CPU使用率与所述目标CPU的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,则将所述转码线程迁移至所述目标CPU。
进一步的,所述迁移模块,具体用于:
如果大于,且两者差值大于预设阈值,则确定所述转码线程的CPU使用率;
确定所述转码服务器上CPU使用率与所述转码线程的CPU使用率之和最接近平均CPU使用率的目标CPU;
如果所述转码线程的CPU使用率与所述目标CPU的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,则将所述转码线程迁移至所述目标CPU。
第三方面,提供了一种转码服务器,所述转码服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的基于转码任务调度实现CPU负载均衡的方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如第一方面所述的基于转码任务调度实现CPU负载均衡的方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,周期性获取所述转码服务器的平均CPU使用率;逐一判断所有转码进程中每个转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率;如果大于、且两者差值大于预设阈值,则将所述转码线程迁移至所述转码服务器上的其他CPU。这样,可以通过迁移转码线程,调节CPU负载,使转码服务器上各CPU的CPU使用率控制在一定范围内,避免单个CPU负载过高的情况发生,进而提高转码质量和转码服务器稳定性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种基于转码任务调度实现CPU负载均衡的方法流程图;
图2是本发明实施例提供的一种基于转码任务调度实现CPU负载均衡的装置结构示意图;
图3是本发明实施例提供的一种基于转码任务调度实现CPU负载均衡的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种基于转码任务调度实现CPU负载均衡的方法,该方法可以应用在转码服务器上,实现对转码服务器上各个CPU进行负载均衡处理。本实施例应用场景可以是:流媒体服务器在收到视频请求后,向转码服务器发送转码任务创建请求,转码服务器收到转码任务创建请求后创建转码任务,启动相应的转码进程,进行转码。在转码过程中,每个转码任务即为一个转码进程,每个转码进程只能运行在一个转码服务器上,每个转码进程可以有一个或多个转码线程,每个转码线程都运行在转码服务器的一个CPU上,同一个转码进程下的转码线程,可以在同一个CPU上运行,也可以在同一台转码服务器的不同CPU上分别上运行。转码服务器可以有一个或者多个CPU,每个CPU上可以运行多个转码线程,同一个CPU上运行的转码线程可以是同一转码进程下的转码线程,也可以是几个不同转码进程下的转码线程。转码服务器上往往会同时运行多个转码进程,故而,转码服务器的CPU上会同时运行多个转码线程,每个转码线程的CPU使用率不同,这样,就会导致转码服务器的CPU负载不均,发生部分CPU负载过高的情况。此时,为了避免出现上述情况,转码服务器可以根据转码服务器上每个CPU的负载状况,以及该转码服务器上运行的所有转码进程中各个转码线程的CPU使用率对该转码服务器的CPU进行负载均衡处理,该负载均衡的处理可以通过转码服务器上的转码调度进程完成。
下面将结合具体实施方式,对图1所示的一种基于转码任务调度实现CPU负载均衡的处理流程进行详细的说明,内容可以如下:
步骤101:周期性获取转码服务器的平均CPU使用率。
在实施中,转码服务器上预设有CPU表,CPU表中记录了转码服务器上所有CPU的CPU ID、CPU使用率以及平均CPU使用率,CPU表中记录的数据会根据转码服务器上各CPU的CPU使用率变化情况不断更新,具体的CPU表可参考表1,表1只是示例性的列出了四个CPU及其对应的CPU使用率,不代表转码服务器上只有四个CPU,转码服务器上可以有两个或者更多个CPU,本申请对此不作具体限定。转码服务器每隔预设时间,从CPU表中周期性获取转码服务器的平均CPU使用率,在周期内,如果转码服务器上没有新建或删除转码任务,则转码服务器的平均CPU使用率也不会发生变化。平均CPU使用率可以看作转码服务器上各CPU负载均衡的目标值。
表1CPU表
CPU ID CPU使用率
CPU<sub>1</sub> 55%
CPU<sub>2</sub> 30%
CPU<sub>3</sub> 85%
CPU<sub>4</sub> 80%
平均 60%
可选的,为了使转码服务器能够对转码服务器上的每个转码线程单独管理操作,便于CPU负载均衡处理,需要对转码服务器上运行的转码线程进行记录,相应的处理可以如下:当接收到目标转码任务的创建请求时,启动目标转码任务的转码进程,并在预设的转码进程表中添加转码进程对应的进程号和转码进程包含的所有转码线程对应的线程号;当接收到目标转码任务的删除请求时,结束目标转码任务的转码进程,并在预设的转码进程表中删除转码进程对应的进程号和转码进程包含的所有转码线程对应的线程号。
在实施中,在转码服务器上创建转码进程表,转码进程表包括转码进程的进程号和转码进程包含的所有线程的线程号,具体的转码进程表可参考表2,一个转码进程可以包含有一个或者多个转码线程,每个转码进程都有对应的进程号,每个转码线程也有对应的线程号,所以,一个进程号可以包含有一个或者多个线程号。在转码服务器接收到来自流媒体服务器发来的转码任务的创建请求后,转码服务器启动转码任务的转码进程,并随机创建一个进程号分配给该转码进程,作为该转码进程的唯一标识,转码进程在运行过程中进程号始终保持不变,直至转码进程结束。线程号与进程号类似,转码服务器在为转码进程创建并分配进程号的同时,也为该转码进程包含的所有转码线程逐一创建并分配对应的线程号,作为该转码线程的唯一标识。当然,这种唯一是暂时的,在转码服务器结束转码任务的转码进程的同时,转码进程表中该转码进程对应的进程号和该转码进程包含的所有转码线程对应的线程号也将被全部删除,删除后的进程号和线程号可以重新被转码服务器分配给其他转码进程或转码线程。
表2转码进程表
Figure BDA0001688053770000071
步骤102:逐一判断所有转码进程中每个转码线程所在CPU的CPU使用率是否大于平均CPU使用率。
在实施中,转码服务器在运行的所有转码进程中逐一选择转码线程,确定该转码线程所在的CPU,并通过步骤101的CPU表确定该转码线程所在CPU的CPU使用率,然后比较该转码线程所在CPU的CPU使用率与步骤101获取的平均CPU使用率的大小。
可选的,逐一判断所有转码进程中每个转码线程所在CPU的CPU使用率是否大于平均CPU使用率的处理具体可以如下:根据转码进程表逐一确定转码服务器上的转码进程;对于转码进程中每个转码线程,逐一获取转码线程所在CPU的CPU使用率;判断转码线程所在CPU的CPU使用率是否大于平均CPU使用率。
在实施中,转码进程表中记录了转码服务器上运行的所有转码进程的进程号和转码线程的线程号,所以,可以通过转码进程表来来逐一获取码服务器上所有转码线程所在CPU的CPU使用率。首先,在转码进程表中顺次选取进程号,然后在该进程号下顺次选取线程号,再根据线程号获取对应的转码线程所在的CPU,之后查询CPU表,即可获得该转码线程所在CPU的CPU使用率,将该转码线程所在CPU的CPU使用率与步骤101得到的平均CPU使用率进行比较,之后根据比较的结果进行进一步处理。在步骤101中已经说明,平均CPU使用率可以看作转码服务器上各CPU负载均衡的目标值,CPU使用率低于平均CPU使用率,说明该CPU负载较低,暂时不需要对其进行调节,CPU使用率高于平均CPU使用率,说明该CPU负载较高,可以对其进行调节,是否需要对其进行负载均衡需要进一步判断。所以如果转码线程所在CPU的CPU使用率小于平均CPU使用率,则不对其进行处理,继续从转码进程表中顺序选择下一个线程号,重复步骤102,直至遍历转码进程表中所有线程号;如果转码线程所在CPU的CPU使用率大于平均CPU使用率,则进入步骤103,进行进一步处理,处理完成之后,继续从转码进程表中顺序选择下一个线程号,重复步骤102直至遍历转码进程表中所有线程号。
例如:首先从转码进程表中选取排在第一位的进程号1296,然后在该进程号下继续选取排在第一位的线程号3791,通过线程号3791可以获知具体的转码线程,并进一步确定该转码线程所在CPU为CPU3,查询CPU表可知,CPU3的CPU使用率为85%,将CPU3的CPU使用率85%与平均CPU使用率60%比较,明显可以看出CPU3的CPU使用率大于平均CPU使用率,这时,进入步骤103继续进一步的处理,具体的处理过程参见步骤103。待处理完成之后,重新回到步骤102,由于进程号1296一共包含有三个线程号,目前只处理了第一个线程号3791,所以,在转码进程表中继续选择排在第一位的进程号1296,然后选择该进程号下排在第二位的线程号3792,重复上述步骤,得到线程号3792的转码线程所在CPU2的CPU使用率为30%,与平均CPU使用率60%相比,小于平均CPU使用率,不对CPU2进行任何处理。此时,由于进程号1296包含的两个线程号均已处理完成,1296再无其他线程号,所以从转码进程表中顺序选择排在第二位的线程号1357,然后顺序选择进程号82016,重复上述处理步骤,直至遍历整个转码进程表,到达最后一个进程号2197的最后一个线程号21345。
步骤103:如果大于、且两者差值大于预设阈值,则将转码线程迁移至转码服务器上的其他CPU。
在实施中,在转码服务器上,预先为CPU使用率与平均CPU使用率的差值设置有阈值。如果在步骤102中,转码线程所在CPU的CPU使用率大于平均CPU使用率,则进一步判断两者的差值是否大于预设阈值。如果小于预设阈值,表明虽然CPU负载过高,但尚处于稳定可控范围,可以不进行调节,则不对转码线程进行迁移;如果大于预设阈值,则表示CPU负载已经达到需要调节降低的程度,不及时调节会影响CPU工作,影响转码质量。此时,转码服务器将步骤102中的转码线程从该CPU中迁移至转码服务器上的其他CPU中。迁移后,需要对转码线程迁出和迁入的两个CPU的使用率重新计算,并在CPU表中更新,以备后用。
可选的,由于转码服务器上有多个CPU,为了避免转码线程在迁移后,导致迁移后CPU的CPU使用率过高,所以,在迁移转码线程时,可以优先考虑迁移至CPU使用率最低的CPU,相应的处理可以如下:如果大于,且两者差值大于预设阈值,则确定转码服务器上CPU使用率最低的目标CPU,以及转码线程的CPU使用率;如果转码线程的CPU使用率与目标CPU的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,则将转码线程迁移至目标CPU。
在实施中,转码服务器可以通过转码线程来确定转码线程自身的CPU使用率,然后通过步骤101的CPU表,获知转码服务器上各个CPU的CPU使用率,可以选择当前CPU使用率最低的CPU作为目标CPU。为了避免转码线程迁入后目标CPU负载过高,需要再次进行调节,所以,可以预先计算目标CPU的CPU使用率与转码线程的CPU使用率之和,作为转码线程迁移后目标CPU的CPU使用率。然后进一步计算平均CPU使用率与预设阈值之和,再与目标CPU的CPU使用率与转码线程的CPU使用率之和进行比较。如果目标CPU的CPU使用率与转码线程的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,表示迁移后目标CPU的CPU使用率或者小于等于平均CPU使用率,或者虽然大于平均CPU使用率,但与平均CPU使用率的差值小于预设阈值,即迁移后的目标CPU的负载处于稳定可控范围,不需要再次进行负载均衡处理,此时,即可将转码线程迁移至目标CPU,迁移后将目标CPU迁移前的CPU使用率与转码线程的CPU使用率之和作为目标CPU的最新CPU使用率,将迁移前转码线程所在CPU迁移前的CPU使用率减去转码线程的CPU使用率,作为迁移前转码线程所在CPU的最新使用率,在CPU表中更新这两个CPU的使用率。
如果目标CPU的CPU使用率与转码线程的CPU使用率之和大于平均CPU使用率与预设阈值之和,则表示将转码线程迁移至目标CPU后,目标CPU的CPU使用率大于平均CPU使用率,且两者差值大于预设阈值,目标CPU的负载过高,后续需要再对目标CPU上的转码线程进行迁移,故而,本次迁移对负载均衡并没有起到实际作用,为了避免这样的情况,此时,不对转码线程进行迁移,转码线程仍保留在原CPU中运行。
在此,采用步骤102中的例子继续进行说明,线程号为3791的转码线程所在CPU3的CPU使用率为85%,平均CPU使用率为60%,预设阈值为10%,则CPU3的CPU使用率与平均CPU使用率的差值为25%,大于预设阈值,根据CPU表,当前CPU使用率最低的CPU为CPU2,CPU使用率为30%,所以CPU2为目标CPU。此时,如果线程号为3791的转码线程的CPU使用率为40%,其CPU使用率与CPU2的CPU使用率之和为70%(即迁移后CPU2的CPU使用率),等于平均CPU使用率与预设阈值之和70%,可以将线程号为3791的转码线程从CPU3迁移至CPU2,迁移后CPU3的CPU使用率为45%,CPU2的CPU使用率为70%,在步骤101的CPU表中更新CPU2和CPU3的CPU使用率,以备线程号为3792的转码线程使用。如果线程号为3791的转码线程的CPU使用率为50%,其CPU使用率与CPU2的CPU使用率之和为80%,大于平均CPU使用率与预设阈值之和70%,则不迁移线程号为3791的转码线程。
可选的,对于转码服务器上的多个CPU,为了更好的调节各个CPU的负载,使各个CPU的负载近似,可以考虑通过迁移使各CPU的CPU使用率接近平均CPU使用率,在迁移转码线程时,可以优先考虑迁移至迁移后CPU使用率最接近平均CPU使用率的CPU,相应的处理可以如下:如果大于,且两者差值大于预设阈值,则确定转码线程的CPU使用率;确定转码服务器上CPU使用率与转码线程的CPU使用率之和最接近平均CPU使用率的目标CPU;如果转码线程的CPU使用率与目标CPU的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,则将转码线程迁移至目标CPU。
在实施中,转码服务器可以通过转码线程来确定转码线程自身的CPU使用率,然后通过步骤101的CPU表,寻找转码服务器上CPU使用率与转码线程的CPU使用率之和最接近平均CPU使用率的CPU作为目标CPU。为了避免转码线程迁入后目标CPU负载过高,需要再次进行调节,所以,可以将目标CPU的CPU使用率与转码线程的CPU使用率之和与平均CPU使用率与预设阈值之和进行比较,如果目标CPU的CPU使用率与转码线程的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,此时,即可将转码线程迁移至目标CPU,迁移后对分别计算两个CPU的CPU使用率,并在CPU表中更新;如果目标CPU的CPU使用率与转码线程的CPU使用率之和大于平均CPU使用率与预设阈值之和,此时,不对转码线程进行迁移,转码线程仍保留在原CPU中运行,上述处理过程与将转码线程迁移至CPU使用率最低的CPU时类似,具体可参考上文内容。
例如:线程号为82016的转码线程所在CPU4的CPU使用率为80%,平均CPU使用率为60%,预设阈值为10%,则CPU4的CPU使用率与平均CPU使用率的差值为20%,大于预设阈值,此时,如果线程号为82016的转码线程的CPU使用率为8%,根据CPU表,CPU1的CPU使用率为55%,与线程号为82016的转码线程的CPU使用率之和为63%,最接近平均CPU使用率,所以CPU1为目标CPU。CPU1的CPU使用率与转码线程的CPU使用率之和小于平均CPU使用率与预设阈值之和(70%),可以将线程号为82016的转码线程从CPU4迁移至CPU1,迁移后CPU4的CPU使用率为72%,CPU1的CPU使用率为63%,在步骤101的CPU表中更新CPU1和CPU4的CPU使用率,以备线程号为82017的线程使用。如果线程号为82016的转码线程的CPU使用率为16%,根据CPU表,CPU使用率与线程号为82016的转码线程的CPU使用率之和最接近平均CPU使用率的CPU仍然是CPU1,但是线程号为82016的转码线程的CPU使用率与CPU1的CPU使用率之和为71%,大于平均CPU使用率与预设阈值之和70%,则不迁移线程号为82016的转码线程。
本发明实施例中,周期性获取所述转码服务器的平均CPU使用率;逐一判断所有转码进程中每个转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率;如果大于、且两者差值大于预设阈值,则将所述转码线程迁移至所述转码服务器上的其他CPU。这样,可以通过迁移转码线程,调节CPU负载,使转码服务器上各CPU的CPU使用率控制在一定范围内,避免单个CPU负载过高的情况发生,进而保证转码质量和转码服务器稳定性。
基于相同的技术构思,本发明实施例还提供了一种基于转码任务调度实现CPU负载均衡的装置,如图2所示,所述装置包括:
使用率获取模块201,用于周期性获取所述转码服务器的平均CPU使用率。
判断模块202,用于逐一判断所有转码进程中每个转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率。
迁移模块203,用于如果大于、且两者差值大于预设阈值,则将所述转码线程迁移至所述转码服务器上的其他CPU。
可选的,如图3所示,所述装置还包括:
添加模块204,用于当接收到目标转码任务的创建请求时,启动所述目标转码任务的转码进程,并在预设的转码进程表中添加所述转码进程对应的进程号和所述转码进程包含的所有转码线程对应的线程号。
删除模块205,用于当接收到目标转码任务的删除请求时,结束所述目标转码任务的转码进程,并在预设的转码进程表中删除所述转码进程对应的进程号和所述转码进程包含的所有转码线程对应的线程号。
可选的,所述判断模块202,具体用于:
根据所述转码进程表逐一确定所述转码服务器上的转码进程;
对于所述转码进程中每个转码线程,逐一获取所述转码线程所在CPU的CPU使用率;
判断所述转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率。
可选的,所述迁移模块203,具体用于:
如果大于,且两者差值大于预设阈值,则确定所述转码服务器上CPU使用率最低的目标CPU,以及所述转码线程的CPU使用率;
如果所述转码线程的CPU使用率与所述目标CPU的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,则将所述转码线程迁移至所述目标CPU。
可选的,所述迁移模块203,具体用于:
如果大于,且两者差值大于预设阈值,则确定所述转码线程的CPU使用率;
确定所述转码服务器上CPU使用率与所述转码线程的CPU使用率之和最接近平均CPU使用率的目标CPU;
如果所述转码线程的CPU使用率与所述目标CPU的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,则将所述转码线程迁移至所述目标CPU。
需要说明的是:上述实施例提供的读取文件数据的装置在读取文件数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的读取文件数据的装置与读取文件数据的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
基于相同的技术构思,本发明实施例还提供了一种转码服务器,所述转码服务器可因配置或性能不同而产生比较大的差异,可以包括两个或两个以上的中央处理器和存储器,所述存储器可以是短暂存储或持久存储,存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述的基于转码任务调度实现CPU负载均衡的方法。存储在存储器上的程序可以包括一个或一个以上模块,每个模块可以包括对转码服务器中的一系列指令操作。
基于相同的技术构思,本发明实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述的基于转码任务调度实现CPU负载均衡的方法。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务端,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于转码任务调度实现CPU负载均衡的方法,其特征在于,所述方法包括:
周期性获取转码服务器的平均CPU使用率;
根据转码进程表逐一确定所述转码服务器上的转码进程;
对于所述转码进程中每个转码线程,逐一获取所述转码线程所在CPU的CPU使用率;
判断所述转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率;
如果大于、且两者差值大于预设阈值,则确定所述转码线程的CPU使用率和目标CPU;
如果所述转码线程的CPU使用率与所述目标CPU的CPU使用率之和小于等于所述平均CPU使用率与所述预设阈值之和,则将所述转码线程迁移至所述目标CPU。
2.根据权利要求1所述的方法,其特征在于,所述周期性获取所述转码服务器的平均CPU使用率之前,还包括:
当接收到目标转码任务的创建请求时,启动所述目标转码任务的转码进程,并在预设的转码进程表中添加所述转码进程对应的进程号和所述转码进程包含的所有转码线程对应的线程号;
当接收到目标转码任务的删除请求时,结束所述目标转码任务的转码进程,并在预设的转码进程表中删除所述转码进程对应的进程号和所述转码进程包含的所有转码线程对应的线程号。
3.根据权利要求1所述的方法,其特征在于,所述如果大于、且两者差值大于预设阈值,则确定所述转码线程的CPU使用率和目标CPU,包括:
如果大于,且两者差值大于预设阈值,则确定所述转码服务器上CPU使用率最低的目标CPU,以及所述转码线程的CPU使用率。
4.根据权利要求1所述的方法,其特征在于,所述如果大于、且两者差值大于预设阈值,则确定所述转码线程的CPU使用率和目标CPU,包括:
如果大于,且两者差值大于预设阈值,则确定所述转码线程的CPU使用率;
确定所述转码服务器上CPU使用率与所述转码线程的CPU使用率之和最接近平均CPU使用率的目标CPU。
5.一种基于转码任务调度实现CPU负载均衡的装置,其特征在于,所述装置包括:
使用率获取模块,用于周期性获取转码服务器的平均CPU使用率;
判断模块,用于根据转码进程表逐一确定所述转码服务器上的转码进程;对于所述转码进程中每个转码线程,逐一获取所述转码线程所在CPU的CPU使用率;判断所述转码线程所在CPU的CPU使用率是否大于所述平均CPU使用率;
迁移模块,用于如果大于、且两者差值大于预设阈值,则确定所述转码线程的CPU使用率和目标CPU;如果所述转码线程的CPU使用率与所述目标CPU的CPU使用率之和小于等于所述平均CPU使用率与所述预设阈值之和,则将所述转码线程迁移至所述目标CPU。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
添加模块,用于当接收到目标转码任务的创建请求时,启动所述目标转码任务的转码进程,并在预设的转码进程表中添加所述转码进程对应的进程号和所述转码进程包含的所有转码线程对应的线程号;
删除模块,用于当接收到目标转码任务的删除请求时,结束所述目标转码任务的转码进程,并在预设的转码进程表中删除所述转码进程对应的进程号和所述转码进程包含的所有转码线程对应的线程号。
7.根据权利要求5所述的装置,其特征在于,所述迁移模块,具体用于:
如果大于,且两者差值大于预设阈值,则确定所述转码服务器上CPU使用率最低的目标CPU,以及所述转码线程的CPU使用率;
如果所述转码线程的CPU使用率与所述目标CPU的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,则将所述转码线程迁移至所述目标CPU。
8.根据权利要求5所述的装置,其特征在于,所述迁移模块,具体用于:
如果大于,且两者差值大于预设阈值,则确定所述转码线程的CPU使用率;
确定所述转码服务器上CPU使用率与所述转码线程的CPU使用率之和最接近平均CPU使用率的目标CPU;
如果所述转码线程的CPU使用率与所述目标CPU的CPU使用率之和小于等于平均CPU使用率与预设阈值之和,则将所述转码线程迁移至所述目标CPU。
9.一种转码服务器,其特征在于,所述转码服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至4任一所述的基于转码任务调度实现CPU负载均衡的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至4任一所述的基于转码任务调度实现CPU负载均衡的方法。
CN201810579998.3A 2018-06-07 2018-06-07 基于转码任务调度实现cpu负载均衡的方法和装置 Active CN108845882B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810579998.3A CN108845882B (zh) 2018-06-07 2018-06-07 基于转码任务调度实现cpu负载均衡的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810579998.3A CN108845882B (zh) 2018-06-07 2018-06-07 基于转码任务调度实现cpu负载均衡的方法和装置

Publications (2)

Publication Number Publication Date
CN108845882A CN108845882A (zh) 2018-11-20
CN108845882B true CN108845882B (zh) 2022-03-01

Family

ID=64211481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810579998.3A Active CN108845882B (zh) 2018-06-07 2018-06-07 基于转码任务调度实现cpu负载均衡的方法和装置

Country Status (1)

Country Link
CN (1) CN108845882B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110362402B (zh) * 2019-06-25 2021-08-10 苏州浪潮智能科技有限公司 一种负载均衡方法、装置、设备及可读存储介质
CN110928661B (zh) * 2019-11-22 2023-06-16 北京浪潮数据技术有限公司 一种线程迁移方法、装置、设备及可读存储介质
CN111654722A (zh) * 2020-05-12 2020-09-11 中铁大桥科学研究院有限公司 一种基于h5按需播放桥梁现场视频的方法及设备
CN111629233B (zh) * 2020-05-29 2022-03-25 北京华夏电通科技股份有限公司 音视频转码方法及装置
CN112911322B (zh) * 2021-01-26 2022-09-16 北京锐马视讯科技有限公司 直播云转码弹性伸缩方法和装置
CN112835720A (zh) * 2021-02-26 2021-05-25 杭州迪普科技股份有限公司 一种arp老化线程管理方法、装置及电子设备
CN113342274B (zh) * 2021-06-10 2024-01-30 北京火山引擎科技有限公司 一种数据处理方法及装置
CN113691813B (zh) * 2021-10-25 2022-02-22 苏州浪潮智能科技有限公司 一种转码卡使用方法、系统、存储介质及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256515A (zh) * 2008-03-11 2008-09-03 浙江大学 多核处理器操作系统负载均衡的实现方法
CN102681902A (zh) * 2012-05-15 2012-09-19 浙江大学 一种基于多核系统任务分配的负载均衡方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140080058A (ko) * 2012-12-20 2014-06-30 삼성전자주식회사 멀티코어를 위한 로드 밸런싱 방법 및 휴대 단말

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256515A (zh) * 2008-03-11 2008-09-03 浙江大学 多核处理器操作系统负载均衡的实现方法
CN102681902A (zh) * 2012-05-15 2012-09-19 浙江大学 一种基于多核系统任务分配的负载均衡方法

Also Published As

Publication number Publication date
CN108845882A (zh) 2018-11-20

Similar Documents

Publication Publication Date Title
CN108845882B (zh) 基于转码任务调度实现cpu负载均衡的方法和装置
CN106933534B (zh) 一种数据同步方法和装置
CN110825394B (zh) 用于云手机的应用程序自动初始化方法、系统及存储介质
CN108776897B (zh) 数据处理方法、装置、服务器及计算机可读存储介质
CN110474966B (zh) 处理云平台资源碎片的方法及相关设备
CN111212114B (zh) 一种下载资源文件的方法和装置
CN113655969A (zh) 一种基于流式分布式存储系统的数据均衡存储方法
CN111949730A (zh) 分布式全局序列号实现方法及序列分发器
CN111143331A (zh) 数据迁移方法、装置及计算机存储介质
CN114116173A (zh) 动态调整任务分配的方法、装置和系统
CN110602232A (zh) 基于对等网络思想的终端系统版本下载方法、装置及系统
CN111698281B (zh) 一种资源下载方法、装置、电子设备及存储介质
CN112463833A (zh) 一种数据集获取方法、系统、设备以及介质
CN115361340B (zh) Ab实验分流方法、装置、计算机设备和存储介质
CN109032779B (zh) 任务处理方法、装置、计算机设备及可读存储介质
KR102124897B1 (ko) 분산 메시지 시스템 및 분산 메시지 시스템에서의 동적 파티셔닝 방법
CN114416913B (zh) 一种对知识图谱进行数据分片的方法及装置
RU2522995C2 (ru) Способ и устройство создания одноранговой группы в одноранговом приложении и способ применения одноранговой группы
CN112600877B (zh) Dns服务器的分布式限速方法和系统
CN115904721A (zh) 直播流任务处理方法、装置、存储介质、计算机设备
CN106357625B (zh) 一种多媒体信息发布方法及服务器
CN110505280B (zh) P2p传输的控制方法及p2p节点
CN113238854A (zh) 一种线程数自动调节的方法、装置、设备及可读介质
CN103905341A (zh) 资源调度方法、装置及系统
CN112751926A (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