首页> 中国专利> 计算任务的资源成本计算方法与资源成本计算系统

计算任务的资源成本计算方法与资源成本计算系统

摘要

本申请涉及一种计算任务的资源成本计算方法与资源成本计算系统,通过统计完成计算任务所消耗的所有类型的资源,并计算每一类资源的单价,为后续计算不同类型资源的资源成本提供了一个中间参数,提高了后续计算不同类型资源的资源成本的便利性。通过分别计算计算任务输出的每一个数据文件所消耗的计算资源成本和存储资源成本,并进行加和,得到每一个数据文件所消耗的总的资源成本,让数据文件所消耗的资源成本的组成合理化,资源成本的计算结果更精确,更贴近实际情况。

著录项

  • 公开/公告号CN112925650A

    专利类型发明专利

  • 公开/公告日2021-06-08

    原文格式PDF

  • 申请/专利权人 杭州有赞科技有限公司;

    申请/专利号CN202110363034.7

  • 发明设计人 刘建锋;王永宁;

    申请日2021-04-02

  • 分类号G06F9/50(20060101);

  • 代理机构33289 杭州裕阳联合专利代理有限公司;

  • 代理人田金霞

  • 地址 310012 浙江省杭州市西湖区西溪路698号6幢102室

  • 入库时间 2023-06-19 11:19:16

说明书

技术领域

本申请涉及计算机技术领域,特别是涉及一种计算任务的资源成本计算方法与资源成本计算系统。

背景技术

IT类公司,购买硬件(自建机房或者购买云厂商的机器)是常态,硬件购买后,可以搭建服务,承担不同的计算任务,满足各种业务场景需求。比如Hive集群,可以用于离线数据的加工和存储。但是购买这些硬件资源是有成本的,对于资源的使用者,很难直观的感受到资源成本,一般只能看到一个个逻辑单元,比如一张离线Hive表,或者一张Mysql表。

目前市面上没有成熟的量化资源成本的方法,传统的资源成本计算方法,一般只考虑集群规模和容量,统计每个数据文件所占存储空间的大小,然后估算一个价格。这就有一个很大的问题,就是资源成本的组成不合理。传统的资源成本计算方法只计算了存储成本,而没有计算为了产出数据文件而执行的计算任务所消耗的计算资源的成本。

发明内容

基于此,有必要针对传统资源成本计算方法只计算了存储成本,而没有计算为了产出数据文件而执行的计算任务所消耗的计算资源的成本的问题,提供一种计算任务的资源成本计算方法与资源成本计算系统。

本申请提供一种计算任务的数据资源成本计算方法,所述方法包括:

获取待执行的计算任务,获取完成所述计算任务所需消耗的所有类型的资源;

计算每一类资源的资源单价;

计算所述计算任务所消耗的计算资源成本;

依据所述计算任务所消耗的计算资源成本,计算所述计算任务输出的每一个数据文件所消耗的计算资源成本;

计算所述计算任务输出的每一个数据文件所消耗的存储资源成本;

将所述计算任务输出的每一个数据文件所消耗的计算资源成本和存储资源成本加和,得到所述计算任务输出的每一个数据文件所消耗的资源成本。

本申请还提供一种资源成本计算终端。所述资源成本计算终端包括:

资源成本计算终端,用于执行前述内容提及的计算任务的资源成本计算方法;

服务器,与所述资源成本计算终端通信连接,用于存储资源数据表、历史各类型资源的使用率记录和历史各时段的计算资源消耗记录;

服务器接口,连接于所述资源成本计算终端和所述服务器之间,用于实现所述资源成本计算终端和所述服务器之间的通信连接与数据传输。

本申请涉及一种计算任务的资源成本计算方法与资源成本计算系统,通过统计完成计算任务所消耗的所有类型的资源,并计算每一类资源的单价,为后续计算不同类型资源的资源成本提供了一个中间参数,提高了后续计算不同类型资源的资源成本的便利性。通过分别计算所述计算任务输出的每一个数据文件所消耗的计算资源成本和存储资源成本,并进行加和,得到每一个数据文件所消耗的总的资源成本,让数据文件所消耗的资源成本的组成合理化,资源成本的计算结果更精确,更贴近实际情况。

附图说明

图1为本申请一实施例提供的计算任务的资源成本成本计算方法的流程示意图;

图2为本申请一实施例提供的资源成本计算系统的结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供一种计算任务的资源成本计算方法。需要说明的是,本申请提供的计算任务的资源成本计算方法可应用于任何计算场景。

此外,本申请提供的资源成本计算方法不限制其执行主体。可选地,本申请提供的资源成本计算方法的执行主体可以为一种资源成本计算终端。具体地,本申请提供的计算任务的资源成本计算方法的执行主体可以为所述资源成本计算终端中的一个或多个处理器。

如图1所示,在本申请的一实施例中,所述计算任务的资源成本计算方法包括如下S100至S600:

S100,获取待执行的计算任务,获取完成所述计算任务所需消耗的所有类型的资源。

具体地,作为一种实施方式,在获取完成所述计算任务所需消耗的所有类型的资源时,可以只获取与完成计算任务有关的核心资源。不同的计算场景,获取的核心资源不同。

例如,在离线计算场景下的一个计算任务,核心资源为CPU、内存和磁盘。

S200,计算每一类资源的资源单价。

具体地,本步骤要计算每一类资源的资源单价。资源单价可以理解为使用每单位大小的该类资源所要花费的经济成本。

S300,计算所述计算任务所消耗的计算资源成本。

具体地,资源包括主要的两个主类别,一个主类别是计算资源。例如上述例子中的CPU和内存,它们都用于数据计算,都称为计算资源。另一个主类别是存储,例如上述例子中的磁盘,用于数据存储,称为存储资源。

本步骤就是计算完成计算任务的过程中,消耗CPU和内存这类计算资源的资源成本。

S400,依据所述计算任务所消耗的计算资源成本,计算所述计算任务输出的每一个数据文件所消耗的计算资源成本。

具体地,当一个计算任务完成后,会输出多个数据文件,作为计算结果。那么步骤S300中计算出是整个计算任务的计算资源成本,本步骤S400中,还需计算输出每一个数据文件所消耗的计算资源成本。

S500,计算所述计算任务输出的每一个数据文件所消耗的存储资源成本。

具体地,前述内容已经计算出每一个数据文件所述消耗的计算资源成本,本步骤S500可以计算输出每一个数据文件所消耗的存储资源成本。

S600,将所述计算任务输出的每一个数据文件所消耗的计算资源成本和存储资源成本加和,得到所述计算任务输出的每一个数据文件所消耗的资源成本。

具体地,资源成本等于计算资源成本和存储资源成本的和。

本实施例中,通过统计完成计算任务所消耗的所有类型的资源,并计算每一类资源的单价,为后续计算不同类型资源的资源成本提供了一个中间参数,提高了后续计算不同类型资源的资源成本的便利性。通过分别计算计算任务输出的每一个数据文件所消耗的计算资源成本和存储资源成本,并进行加和,得到每一个数据文件所消耗的总的资源成本,让数据文件所消耗的资源成本的组成合理化,资源成本的计算结果更精确,更贴近实际情况。

在本申请的一实施例中,所述S200,包括如下S210至S230:

S210,计算每一类资源的可用资源量。

具体地,本步骤是计算每一个子分类资源的可用资源量,而不是计算主分类的可用资源量。例如,S100中获取的所有资源为CPU、内存和硬盘,这其中每一个资源都是一个子分类。CPU、内存是一个主分类-计算资源里的两个子分类资源。因此,本步骤是分别计算CPU、内存和硬盘的当前集群状态下的可用资源量。

S220,计算每一类资源所消耗的资源成本。

具体地,这部分就是计算购买资源所消耗的资源成本。

S230,求取每一类资源的资源成本与可用资源量的商,将商作为每一类资源的资源单价。

本实施例中,通过计算每一类资源的资源单价,可以让数据文件所消耗的资源成本的组成合理化,资源成本的计算结果更精确,更贴近实际情况。

在本申请的一实施例中,所述S210包括如下S211至S213:

S211,获取资源数据表,读取资源数据表中每一类资源的已采购资源量。

具体地,资源数据表预先存储于服务器中,资源数据表记录有每一类资源的已采购资源量。可以预先从公司IT部门或者运维部门(也可能是云厂商的接口)获取资源数据表,存储于服务器中。

本步骤S211中,可以分别计算每一类资源的已采购资源量,例如分别计算总CPU核心数(total_cpu)、总内存大小(total_memory)和总磁盘大小(total_disk)。

S212,依据历史各类型资源的使用率记录,计算每一类资源的资源可用率。

对于每一类资源,需要评估其有效可用的比例,因为资源是无法被100%利用的。一方面系统运行本身需要占用一定的资源,另一方面,为保障稳定和业务性能,需要预留一定的资源,以应对突发需求。

本步骤就是就是对每一类资源的资源可用率进行评估和计算。需要说明的是,评估可用率,前提是当前的集群规模相对合理,既有资源富余空间满足一定时间内业务增长的需求,也不存在大量的浪费。这种状态下,可以根据集群过去一段时间的各类型资源的使用率和使用率的增长情况来估算资源可用率。

具体地,通过调取服务器中存储的历史各类型资源的使用率记录来实现。

例如,历史CPU的使用率记录显示,CPU在过去180天的平均使用率是50%,使用率的日均增长率是0.1%,那么CPU的资源可用率的计算公式可以为:

CPU的资源可用率=[0.5+0.5×(1+0.001)^180]/2=0.5493。通过这种方式,承接上述例子,可以得到三类资源的资源可用率,分别记为CPU可用率(cpu_load),内存可用率(memory_load)和磁盘可用率(disk_load)。

S213,依据每一类资源的已采购资源量和资源可用率,分别计算每一类资源的有效资源量,将所述有效资源量作为所述可用资源量。

具体地,本步骤可以计算每一类资源的实际当前可用的有效资源量。

例如,有效CPU核心数记为valid_cpu,计算公式为valid_cpu=total_cpu×cpu_load。

有效内存大小记为valid_memory,计算公式为valid_memory=total_memory×memory_load。

有效磁盘大小记为valid_disk,计算公式为valid_disk=total_disk×disk_load。

本实施例中,基于每一类资源的资源可用率,计算每一类资源的有效资源量,并将有效资源量作为可用资源量,使得系统有富余资源维持系统运行,且可以预留出足够的资源保障系统稳定和业务性能最优化,符合实际集群需求。

在本申请的一实施例中,所述S220包括如下S221至S223:

S221,获取资源数据表,读取资源数据表中所消耗的资源总成本。

具体地,资源数据表预先存储于服务器中,资源数据表记录有所消耗的资源总成本。公司IT部门或者运维部门一般会提前发布资源购买计划,然后按批次购买资源,一次购买几个月或几年的资源。可以预先从公司IT部门或者运维部门(也可能是云厂商的接口)获取资源数据表,存储于服务器中。

S222,确定每一类资源的成本权重。

具体地,本步骤可以具体使用前述步骤S212计算得到的每一类资源的资源可用率来自动确定每一类资源的成本权重。当前,成本权重也可以参考其他参数。承接上述的例子,CPU成本权重记为cpu_weight,内存成本权重记为memory_weight,磁盘成本权重记为disk_weight。

S223,依据所消耗资源总成本和每一类资源的成本权重,计算每一类资源所消耗的资源成本。

具体地,承接上述的例子,可以计算各类资源所消耗的资源成本:

CPU成本,记为cpu_cost,计算公式为cpu_cost=total_cost×cpu_weight

内存成本,记为memory_cost,计算公式为memory_cost=total_cost×memory_weight。

磁盘成本,记为disk_cost,计算公式为disk_cost=total_cost×disk_weight。

本实施例中,通过每一类资源的资源可用率来自动确定每一类资源的成本权重,使得资源总成本通过权重分摊给每一类资源,实现了不同权重资源的不同资源成本侧重,资源之间的成本消耗区别化与差异化。

进一步地,执行步骤S230,将资源所消耗的资源成本除以有效资源量,可以计算得到各类资源的资源单价:

CPU单价,记为cpu_price,计算公式为cpu_price=cpu_cost/valid_cpu

内存单价,记为memory_price,计算公式为memory_price=memory_cost/valid_memory。

磁盘单价,记为disk_price,计算公式为disk_price=disk_cost/valid_disk。

在本申请的一实施例中,所述S300包括如下:

S310,依据历史各时段的计算资源消耗记录,确定不同时段的时段权重。

具体地,除了要关注不同类型,不同权重资源之间的资源成本侧重,还需要关心使用计算资源的时段。因为不同时间段,计算资源的供需状态是不一样的。例如在凌晨时段,大量计算任务集中运行,机器负载高,此时消耗的计算资源应该更贵。实现上,我们可以引入“时段权重”来实现分时段计价,即分时段评估计算资源的资源成本。各个时段的时段权重可以分别记为period_weight_1、period_weight_2......period_weight_n,n为时段的序号。

S320,依据资源数据表,获取所述计算任务在单位时间内消耗各类计算资源的资源量。

具体地,资源数据表有记载完成所述计算任务,在单位时间内消耗各类计算资源的资源量。也可以通过一个资源采集服务来监控完成在单位时间内消耗各类计算资源的资源量的监控。例如每分钟监控一次,采集每分钟所消耗的CPU和内存的资源量,将每分钟作为一个单位时间。

S330,依据不同时段的时段权重,以及所述计算任务在单位时间内消耗各类计算资源的资源量。通过加权计算,得到所述计算任务在所有时段累积消耗的各类计算资源的资源总量。

具体地,进一步的,可以得到所述计算任务在各个时段消耗的各类计算资源的资源量。例如,时段个数为n,即只取2个时段,就可以得到在时段1使用的CPU资源use_cpu_1,在时段2使用的CPU资源:use_cpu_2,在时段1使用的内存资源:use_memory_1,在时段2使用的内存资源:use_memory_2。计算方法就是在单位时间内消耗各类计算资源的资源量,乘以时段的时长。

进一步通过下述的加权计算,即可得到所述计算任务在所有时段累积消耗的各类计算资源的资源总量。

CPU在全时段消耗的资源总量,记为use_cpu,计算公式为:

use_cpu=use_cpu_1×period_weight_1+use_cpu_2×period_weight_2。

内存在全时段消耗的资源总量,记为use_memory,计算公式为:

use_memory=use_memory_1×period_weight_1+use_memory_2×period_weight_2。

S340,依据所述每一类资源的资源单价,以及所述计算任务在所有时段累积消耗的各类计算资源的资源总量,计算所述计算任务所消耗的计算资源成本。

具体地,通过读取步骤S230中计算得到的每一类资源的资源单价,可以得到所述计算任务所消耗的计算资源成本。

例如,整个计算任务所消耗的计算资源成本cost的计算公式为:

cost=cpu_price×use_cpu+memory_price×use_memory。

本实施例中,通过在不同时段,确定时段权重,可以实现分段计价,使得不同时段的资源成本差异得到体现。

在本申请的一实施例中,所述S310包括:

S311,获取与当前时间最接近的一天的各时段的计算资源消耗记录。

S312,依据所述一天的各时段的计算资源消耗记录,获取全天消耗的计算资源总量,以及各个时段消耗的计算资源量。

S313,计算各个时段消耗的计算资源量占全天消耗的计算资源总量的百分比,得到各个时段对应的资源消耗百分比。

S314,依据各个时段对应的资源消耗百分比之间的数值大小关系,确定不同时段的时段权重。

具体地,例如,当前时间是3月2日15时,那么可以从服务器上读取3月1日全天的各时段的计算资源消耗记录。因为3月1日是与当前时间最接近的一天。

进一步地,可以根据统计不同时段消耗的资源量占全天资源消耗总量的占比,来确定不同时段的时段权重。例如,有三个时段上午(7时至12时),下午(12时至18时),夜晚(18时至第2天的7时),他们各自对应的资源消耗百分比分别是20%,20%和40%,那么上午,下午和夜晚的时段权重分别为0.2、0.2和0.4。

在本申请的一实施例中,所述S310也可以使用另一种实施方式,获取与当前时间最接近的一段时间内的历史各时段的计算资源消耗记录,而不是一天的。

例如当前时间是3月2日15时,那么可以从服务器上读取2月1日至3月1日,共计一个月的历史各时段的计算资源消耗记录。

进一步地,同理,也是根据统计不同时段消耗的总资源量占这段时间内资源消耗总量的占比,来确定不同时段的时段权重,但是各个时段的数据需要累加。例如,先要计算这一个月的资源消耗总量,然后分别计算这一个月在上午(7时至12时)消耗的总资源量,下午(12时至18时)消耗的总资源量,夜晚(18时至第2天的7时)消耗的总资源量。接着再一次计算上午消耗的总资源量占整个月的资源消耗总量的百分比,下午消耗的总资源量占整个月的资源消耗总量的百分比,以及夜晚消耗的总资源量占整个月的资源消耗总量的百分比。最后根据三个百分比的数值关系设置时段权重。

本实施例中,通过考虑资源在时段上的稀缺性对不同资源进行差异化定价,进一步实现精准资产成本量化。

在本申请的一实施例中,所述时段包括闲暇时段和繁忙时段。所述闲暇时段对应的时段权重为闲暇时段权重。所述繁忙时段对应的时段权重为繁忙时段权重。所述闲暇时段权重和所述繁忙时段权重的和为1。

具体地,闲暇时段可以为8-24点,繁忙时段可以为0点至8点。承接上述例子,上述的例子可以只划分闲暇时段和繁忙时段,共2个时段,那么两个时段权重可以分别记为为period_weight_1和period_weight_2。

本实施例中,通过设定闲暇时段和繁忙时段两个时段,简化了时段权重的分配过程。

在本申请的一实施例中,所述S400包括:

S410,依据资源数据表,获取所述计算任务输出的所有数据文件的明细,将所述计算任务所消耗的计算资源成本平均分摊至每一个所述计算任务输出的数据文件,得到所述计算任务输出的每一个数据文件所消耗的计算资源成本。

具体地,资源数据表记载了所述计算任务输出的所有数据文件的明细,例如输出输出数据文件的数量,各个数据文件所占存储空间的大小,各个数据文件的文件名等等。

计算任务的目的是生产数据。运行任务不是目的,产出有价值的数据才是实际需求。因此,任务成本需要分摊到其产出的不同的数据文件上。最简单的分摊逻辑是平分。比如某个计算任务输出出两份数据文件,那每份数据文件分摊50%的成本。更优的做法,可以根据输出数据文件的重要程度或者使用量等因子,综合评估分摊的分摊比例。

承接上述例子,如果计算任务输出了两个数据文件,分别是数据文件A和数据文件B,那么数据文件A所消耗的计算资源成本cost(A)为:cost(A)=cost/2=(cpu_price×use_cpu+memory_price×use_memory)/2。

本实施例中,通过将整个计算任务的资源成本分摊到每一个数据文件,让资产成本可感知性强。

在本申请的一实施例中,S500包括如下S510至S530:

S510,计算所述计算任务输出的每一个数据文件所占用的存储空间。

S520,从所述每一类资源的资源单价中获取存储资源单价。

S530,求取所述计算任务输出的每一个数据文件所占用的存储空间,与存储资源单价的积,得到述计算任务输出的每一个数据文件所消耗的存储资源成本。

具体地,除了考虑计算任务消耗的计算资源的资源成本外,数据文件自身占用的存储资源也应当计算清楚。这部分逻辑较为简单,存储资源单价,乘以数据文件所占用的存储空间,即为存储资源成本,即disk_price(A)×use_disk(A)。

综上所述,最后数据文件A所消耗的资源成本cost(A)应当为:

cost(A)=(cpu_price×use_cpu+memory_price×use_memory)/2+disk_price(A)×use_disk(A)。

本实施例中,通过在每一个数据文件所消耗的资源成本的计算结果上,利用了每一个数据文件所消耗的存储资源成本,让数据文件所消耗的资源成本的组成合理化,不但包括计算资源成本,还包括存储资源成本,更贴近实际情况。

本申请还提供一种资源成本计算系统。

如图2所示,在本申请的一实施例中,所述资源成本计算系统包括资源成本计算终端100、服务器200和服务器接口300。

所述服务器200与所述资源成本计算终端100通信连接。所述服务器接口300连接于所述资源成本计算终端100和所述服务器200之间。所述资源成本计算终端100用于执行前述内容提及的计算任务的资源成本计算方法。所述服务器200用于存储资源数据表、历史各类型资源的使用率记录和历史各时段的计算资源消耗记录。所述服务器接口300用于实现所述资源成本计算终端100和所述服务器200之间的通信连接于数据传输。

需要说明的是,前述内容提及的计算任务的资源成本计算方法,应用于本实施例提供的资源成本计算系统中,为了行文简洁,前述内容提及的计算任务的资源成本计算方法和本实施例提供的资源成本计算系统中出现的相同名称的装置或模块,仅在本实施例进行标号。这些装置或模块包括:资源成本计算终端100、服务器200和服务器接口300。

以上所述实施例的各技术特征可以进行任意的组合,各方法步骤也并不做执行顺序的限制,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号