CN107967170B - 迁移计算方法、装置、设备及存储介质 - Google Patents

迁移计算方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN107967170B
CN107967170B CN201711242539.8A CN201711242539A CN107967170B CN 107967170 B CN107967170 B CN 107967170B CN 201711242539 A CN201711242539 A CN 201711242539A CN 107967170 B CN107967170 B CN 107967170B
Authority
CN
China
Prior art keywords
node
edge
weight value
program module
cost
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
CN201711242539.8A
Other languages
English (en)
Other versions
CN107967170A (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.)
Shenzhen Institute of Advanced Technology of CAS
Original Assignee
Shenzhen Institute of Advanced Technology of CAS
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 Shenzhen Institute of Advanced Technology of CAS filed Critical Shenzhen Institute of Advanced Technology of CAS
Priority to CN201711242539.8A priority Critical patent/CN107967170B/zh
Publication of CN107967170A publication Critical patent/CN107967170A/zh
Application granted granted Critical
Publication of CN107967170B publication Critical patent/CN107967170B/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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Abstract

本发明适用计算机技术领域,提供了一种迁移计算方法、装置、设备及存储介质,该方法包括:在应用程序启动时,通过创建代理程序对应用程序进行监控,并将应用程序发送至云端进行执行,生成区域流图;引入数据库节点、本地源节点及云端汇节点,并将程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值;利用最大流算法进行划分,得到迁移计算方案,并根据迁移计算方案进行迁移计算。本发明将应用程序基于区域进行抽象生成区域流图,通过在采用最大流算法进行划分区域,以得到最优的迁移计算方案,通过将可卸载的程序模块迁移到云端进行执行,提高应用程序的执行时间,节省本地机器人存储资源以及运算量。

Description

迁移计算方法、装置、设备及存储介质
技术领域
本发明属于计算机技术领域,尤其涉及一种迁移计算方法、装置、设备及存储介质。
背景技术
随着机器人的普及,机器人在生活中发挥了越来越大的作用,广泛应用于工业、医疗及服务行业等领域。为了实现机器人的自动化,越来越多的任务都交给机器人自身来执行,包括对外界的感知、移动等操作。对于机器人自身而言,计算能力、内存、数据库等都存在局限性,无论是传统单机机器人还是网络机器人,都会由于自身资源的限制,在处理复杂的任务时可能会出现内存不足、处理时间过长等问题。就算配备了性能较高的硬件装置,但是随着任务量及数据量的增多,最终也会出现上述问题,而且成本也很高,不利于产业化和普遍化使用。
云机器人借助互联网与云计算,帮助机器人相互学习和知识共享,可以解决单个机器自我学习的局限性。云机器人最大的优点是卸载计算密集型的任务到云端执行的能力,卸载策略应考虑到多重因素,包括交换的数据量,延迟完成任务的时间等,任务以最小化机器人所消耗代价为目标。对本地的应用进行划分,再利用卸载算法对其进行划分,确定将一部分卸载到云端更有利于任务的完成。
目前对于基于Java应用程序的划分和迁移还是较少,主要是针对NET应用的迁移计算,而且难以划分第三方应用程序,且划分的自动化程度较低,并且采用离线划分机制,需要预先为各种执行条件生成划分方案使得适应性较弱。
发明内容
本发明的目的在于提供一种迁移计算方法、装置、设备及存储介质,旨在解决由于现有技术无法提供一种有效的迁移计算方法,导致难以划分第三方应用程序,且划分的自动化程度较低的问题。
一方面,本发明提供了一种迁移计算方法,所述方法包括下述步骤:
在应用程序启动时,通过创建代理程序对所述应用程序进行监控,并将所述应用程序发送至云端进行执行,生成区域流图,所述区域流图包括:程序模块节点上的权重值及第一边上的权重值,所述第一边为所述程序模块节点之间的边;
在所述区域流图中,引入数据库节点、本地源节点及云端汇节点,并将所述程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值,其中,所述第二边包括:所述程序模块节点与所述本地源节点之间的边、及所述程序模块节点与所述云端汇节点之间的边,所述第三边为所述程序模块节点与所述数据库节点之间的边;
在所述区域流图中,利用最大流算法进行划分,得到迁移计算方案,并根据所述迁移计算方案进行迁移计算。
另一方面,本发明提供了一种迁移计算装置,所述装置包括:
区域流图生成单元,用于在应用程序启动时,通过创建代理程序对所述应用程序进行监控,并将所述应用程序发送至云端进行执行,生成区域流图,所述区域流图包括:程序模块节点上的权重值及第一边上的权重值,所述第一边为所述程序模块节点之间的边;
权重值计算单元,用于在所述区域流图中,引入数据库节点、本地源节点及云端汇节点,并将所述程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值,其中,所述第二边包括:所述程序模块节点与所述本地源节点之间的边、及所述程序模块节点与所述云端汇节点之间的边,所述第三边为所述程序模块节点与所述数据库节点之间的边;以及
迁移计算单元,用于在所述区域流图中,利用最大流算法进行划分,得到迁移计算方案,并根据所述迁移计算方案进行迁移计算。
另一方面,本发明还提供了一种迁移计算设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现迁移计算方法的步骤。
另一方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现迁移计算方法的步骤。
本发明通过创建代理程序以监视和控制应用程序,将应用程序基于区域进行抽象,同时将应用程序发送至云端进行执行,生成区域流图,并引入数据库节点、本地源节点及云端汇节点,然后先将程序模块节点上的权重值转换成第二边上的权重值,再将异端通信代价减去同端通信代价及异端数据传输代价减去同端数据传输代价,并固定数据库节点在云端,通过在采用最大流算法进行划分区域,以得到最优的迁移计算方案,最后再将同端通信代价及同端数据传输代价加回去,以弥补之前被减去的损失,通过将可卸载的程序模块迁移到云端进行执行,提高应用程序的执行时间,节省本地机器人存储资源以及运算量。
附图说明
图1是本发明实施例一提供的迁移计算方法的实现流程图;
图2是本发明实施例提供的迁移计算方法中区域流图的第一状态图;
图3是本发明实施例提供的迁移计算方法中区域流图的第二状态图;
图4是本发明实施例提供的迁移计算方法中区域流图的第三状态图;
图5是本发明实施例提供的迁移计算方法中区域流图的第四状态图;
图6是本发明实施例提供的迁移计算方法中区域流图的第五状态图;
图7是本发明实施例二提供的迁移计算装置的结构示意图;
图8是本发明实施例三提供的迁移计算设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
以下结合具体实施例对本发明的具体实现进行详细描述:
实施例一:
图1示出了本发明实施例一提供的迁移计算方法的实现流程,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
在步骤S101中,在应用程序启动时,通过创建代理程序对应用程序进行监控,并将应用程序发送至云端进行执行,生成区域流图。
在本发明实施例中,适用于Java应用程序,对Java应用程序在JVM(Java VirtualMachine,Java虚拟机)上运行并使用JVMTI(Java Virtual Machine Tool Interface,Java虚拟机工具接口)技术进行基于区域的抽象,每个区域包含一段程序片段,在区域流图上表示为程序模块节点,根据Java应用程序的运行状态,就会得到一个关于区域的调用图,也就是区域流图。
通过JVMTI接口可以创建代理程序Agent以监视和控制Java应用程序,包括剖析、调试、监控、分析线程等等,代理程序Agent可以向运行中的虚拟机实例订阅感兴趣的事件,当这些事件发生的时候,会以事件回调函数的方式激活代理程序,同时JVMTI提供了多功能函数,可以查询和控制Java应用程序的运行状态。代理程序Agent通过JVMTI所提供的接口与虚拟机进行通信,并同步监控虚拟机的运行状态,其与运行中的Java应用程序是相对独立的,不会干扰程序的正常运行。代理程序Agent可以用任何支持C/C++语言标准的本地语言来编写,并以动态链接库的方式存在,在Java程序启动的时候可以加载这个动态链接库。事先插入划分程序区域的标识,在读取到该标识即开辟了一个新的区域。对于域访问的信息和局部变量信息的跟踪,在每个类处于就绪态的时候放置一个监控器监控所有的域,一旦这个类被加载处于运行态的时候,代理程序Agent就会拦截并触发回调函数来对该事件进行处理,记录下信息;对于局部变量,代理程序Agent利用JVM中的帧结构里的局部变量的索引来跟踪方法里的变量,在类处于就绪态的时候缓存主方法体的字节码,然后再对所有变量的存操作和取操作指令迭代,并且设置断点,捕捉断点事件以取回指令信息来构建生产者-消费者关系。根据区域间的调用关系和信息可以构建出该程序的加权有向图,生成一个图文件,作为算法的输入文件。
进一步地,将应用程序基于区域进行抽象,形成区域流图中的程序模块节点,程序模块节点上的权重值为执行代价,第一边上的权重值为通信代价。
具体来说,将机器人的工作任务抽象为一个加权有向图,该加权有向图也就是区域流图,任务对象抽象为区域流图中的程序模块节点,程序模块节点上的权重值为执行代价,程序模块节点之间的边,也就是上述第一边上的权重值为通信代价。
进一步地,程序模块节点上的权重值为执行代价,设为二元组(x,y),其中,x表示本地执行代价,y表示云端执行代价;第一边上的权重值为通信代价,设为二元组(a,b),其中,a表示异端通信代价,b表示同端通信代价。
在本发明实施例中,图2示出了本发明实施例提供的迁移计算方法中区域流图的第一状态图。例如,Java应用程序启动时,通过创建代理程序Agent对该Java应用程序进行监控,并将该Java应用程序发送至云端进行执行,假设该Java应用程序基于区域进行抽象,形成四个程序模块,即作为图2中的程序模块节点A、B、C及D。每个程序模块节点上的权重值包含两个参数,程序模块节点上的权重值为执行代价,设为二元组(x,y),其中,x表示本地执行代价,y表示云端执行代价。程序模块节点A上的权重值为(2,∞),程序模块节点B上的权重值为(4,4),程序模块节点C上的权重值为(6,3),及程序模块节点D上的权重值为(∞,4),其中,权重值中出现∞,表示当前程序模块无法在本地执行或云端执行。程序模块节点之间的边代表模块间的数据通信联系,程序模块节点之间的边为第一边,第一边上的权重值为通信代价,设为二元组(a,b),其中,a表示异端通信代价,b表示同端通信代价。
在步骤S102中,在区域流图中,引入数据库节点、本地源节点及云端汇节点,并将程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值。
在本发明实施例中,在区域流图中,引入数据库节点,以增加数据传输代价。机器人的本地存储量有限,而云端的虚拟存储足以放下任何大型的数据。不但节省了本地资源,而且数据可以被多个机器人通过联网获得,避免了重复性工作。虽然增加了数据传输代价,但从长远的利益上考虑,在云端放置数据的性价比更高。将各程序模块节点与数据库节点连接,得到第三边,第三边为程序模块节点与数据库节点之间的边。
进一步地,第三边上的权重值为数据传输代价,设为二元组(m,n),其中,m表示从云端将数据传输至程序模块节点的数据传输代价,即为数据在,n表示在云端执行时没有数据传输代价,即n=0。
在本发明实施例中,图3示出了本发明实施例提供的迁移计算方法中区域流图的第二状态图。Java应用程序基于区域进行抽象,形成四个程序模块后,加入数据库节点data,在第一状态图基础上变化为第二状态图,程序模块节点与数据库节点之间的边为第三边,第三边上的权重值为数据传输代价,第三边上的权重值的二元组(m,n)中,当n=0时,表示在云端执行时没有数据传输代价,从图3中,数据传输代价明显比执行代价和通信代价要高,因为本发明是针对密集型的计算任务,在对数据的需求上是很大的,比如说一个程序模块可能一次需要处理几万个或几十万个甚至更多的数据,而回报给其他程序模块或最终的结果可能就是几十个或几百个有效的结果,此时好的做法就是将该程序模块迁移到云端执行,省去了数据传输的代价,而只是增加了一些通信代价。
迁移计算目的是在最小代价下得到对区域流图进行划分,得到迁移计算方案,从而降低不分割状态下的总代价,包括程序模块节点的执行代价,程序模块节点间的通信代价以及从云端传输到本地的程序模块节点的数据传输代价,在上述影响因素下,使得迁移计算后的总代价最小,公式表示如下:
Cost=Cost执行+Cost通信+Cost数据传输
其中,Cost表示总代价,Cost执行表示执行代价,Cost通信表示通信代价及Cost数据传输表示数据传输代价。
在本发明实施例中,图4示出了本发明实施例提供的迁移计算方法中区域流图的第三状态图。加入本地源节点S及云端汇节点T,在第二状态图基础上变化为第三状态图。第二边包括:程序模块节点与本地源节点之间的边、及程序模块节点与云端汇节点之间的边。将程序模块节点上的权重值转换成第二边上的权重值,具体地,将当前程序模块节点上的本地执行代价转化为当前程序模块节点与云端汇节点之间的边上的权值;同样地,将当前程序模块节点上的云端执行代价转化为当前程序模块节点与本地源节点之间的边上的权值。在步骤S103中,在区域流图中,利用最大流算法进行划分,得到迁移计算方案,并根据迁移计算方案进行迁移计算。
在本发明实施例中,图5示出了本发明实施例提供的迁移计算方法中区域流图的第四状态图。在图2-4中可以看出第一边上的权重值为通信代价,设为二元组(a,b),在计算时,假如只选择异端通信代价进行计算,在计算最小代价时,对于计算同端程序模块间的通信代价是不正确的,反之,只选择同端通信代价进行计算也是不正确的,需要将二元组中的两个值转换为一个值,具体地,将异端通信代价减去同端通信代价,因为第一边上的通信代价至少为同端通信代价,这样可以得到一个权重值,利用最大流算法进行划分后,再加上已减去的同端通信代价;同样地,第三边上的权重值为数据传输代价,同端无需数据传输,在云端执行时没有数据传输代价,直接访问即可获取,因此,与上述第一边上的权重值为通信代价的处理方式相同,将先将异端数据传输代价(从云端将数据传输至程序模块节点的数据传输代价)减去同端数据传输代价(在云端执行时没有数据传输代价),利用最大流算法进行划分后,再加上已减去的同端的数据传输代价,计算公式:
Figure BDA0001490126280000081
其中,Cost表示总代价,Cost执行表示执行代价,
Figure BDA0001490126280000082
表示异端通信代价减去同端通信代价,
Figure BDA0001490126280000083
表示异端数据传输代价减去同端数据传输代价,
Figure BDA0001490126280000084
表示同端通信代价,
Figure BDA0001490126280000085
表示同端数据传输代价。
在本发明实施例中,图6示出了本发明实施例提供的迁移计算方法中区域流图的第五状态图。由于数据库节点属于云端,通过加入带权重的边实现将数据库节点固定至云端,具体地,将数据库节点data与云端汇节点S之间的边上的联系代价设定为0,而将数据库节点data与本地源节点T之间的边上的联系代价设定为无穷大。
在本发明实施例中,通过创建代理程序以监视和控制应用程序,将应用程序基于区域进行抽象,同时将应用程序发送至云端进行执行,生成区域流图,并引入数据库节点、本地源节点及云端汇节点,然后先将程序模块节点上的权重值转换成第二边上的权重值,再将异端通信代价减去同端通信代价及异端数据传输代价减去同端数据传输代价,并固定数据库节点在云端,通过在采用最大流算法进行划分区域,以得到最优的迁移计算方案,最后再将同端通信代价及同端数据传输代价加回去,以弥补之前被减去的损失,通过将可卸载的程序模块迁移到云端进行执行,提高应用程序的执行时间,节省本地机器人存储资源以及运算量。
实施例二:
图7示出了本发明实施例二提供的迁移计算装置的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分,迁移计算装置包括:
区域流图生成单元71,用于在应用程序启动时,通过创建代理程序对应用程序进行监控,并将应用程序发送至云端进行执行,生成区域流图,区域流图包括:程序模块节点上的权重值及第一边上的权重值,第一边为所述程序模块节点之间的边。
在本发明实施例中,适用于Java应用程序,对Java应用程序在JVM(Java VirtualMachine,Java虚拟机)上运行并使用JVMTI(Java Virtual Machine Tool Interface,Java虚拟机工具接口)技术进行基于区域的抽象,每个区域包含一段程序片段,在区域流图上表示为程序模块节点,根据Java应用程序的运行状态,就会得到一个关于区域的调用图,也就是区域流图。
通过JVMTI接口可以创建代理程序Agent以监视和控制Java应用程序,包括剖析、调试、监控、分析线程等等,代理程序Agent可以向运行中的虚拟机实例订阅感兴趣的事件,当这些事件发生的时候,会以事件回调函数的方式激活代理程序,同时JVMTI提供了多功能函数,可以查询和控制Java应用程序的运行状态。代理程序Agent通过JVMTI所提供的接口与虚拟机进行通信,并同步监控虚拟机的运行状态,其与运行中的Java应用程序是相对独立的,不会干扰程序的正常运行。代理程序Agent可以用任何支持C/C++语言标准的本地语言来编写,并以动态链接库的方式存在,在Java程序启动的时候可以加载这个动态链接库。事先插入划分程序区域的标识,在读取到该标识即开辟了一个新的区域。对于域访问的信息和局部变量信息的跟踪,在每个类处于就绪态的时候放置一个监控器监控所有的域,一旦这个类被加载处于运行态的时候,代理程序Agent就会拦截并触发回调函数来对该事件进行处理,记录下信息;对于局部变量,代理程序Agent利用JVM中的帧结构里的局部变量的索引来跟踪方法里的变量,在类处于就绪态的时候缓存主方法体的字节码,然后再对所有变量的存操作和取操作指令迭代,并且设置断点,捕捉断点事件以取回指令信息来构建生产者-消费者关系。根据区域间的调用关系和信息可以构建出该程序的加权有向图,生成一个图文件,作为算法的输入文件。
进一步地,区域流图生成单元71,包括:
区域流图生成子单元711,用于将应用程序基于区域进行抽象,形成区域流图中的程序模块节点,程序模块节点上的权重值为执行代价,第一边上的权重值为通信代价。
具体来说,将机器人的工作任务抽象为一个加权有向图,该加权有向图也就是区域流图,任务对象抽象为区域流图中的程序模块节点,程序模块节点上的权重值为执行代价,程序模块节点之间的边,也就是上述第一边上的权重值为通信代价。
进一步地,区域流图生成子单元,具体用于:程序模块节点上的权重值为执行代价,设为二元组(x,y),其中,x表示本地执行代价,y表示云端执行代价;第一边上的权重值为通信代价,设为二元组(a,b),其中,a表示异端通信代价,b表示同端通信代价。
在本发明实施例中,图2示出了本发明实施例提供的迁移计算方法中区域流图的第一状态图。例如,Java应用程序启动时,通过创建代理程序Agent对该Java应用程序进行监控,并将该Java应用程序发送至云端进行执行,假设该Java应用程序基于区域进行抽象,形成四个程序模块,即作为图2中的程序模块节点A、B、C及D。每个程序模块节点上的权重值包含两个参数,程序模块节点上的权重值为执行代价,设为二元组(x,y),其中,x表示本地执行代价,y表示云端执行代价。程序模块节点A上的权重值为(2,∞),程序模块节点B上的权重值为(4,4),程序模块节点C上的权重值为(6,3),及程序模块节点D上的权重值为(∞,4),其中,权重值中出现∞,表示当前程序模块无法在本地执行或云端执行。程序模块节点之间的边代表模块间的数据通信联系,程序模块节点之间的边为第一边,第一边上的权重值为通信代价,设为二元组(a,b),其中,a表示异端通信代价,b表示同端通信代价。
权重值计算单元72,用于在区域流图中,引入数据库节点、本地源节点及云端汇节点,并将程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值,其中,第二边包括:程序模块节点与本地源节点之间的边、及程序模块节点与云端汇节点之间的边,第三边为程序模块节点与数据库节点之间的边。
在本发明实施例中,在区域流图中,引入数据库节点,以增加数据传输代价。机器人的本地存储量有限,而云端的虚拟存储足以放下任何大型的数据。不但节省了本地资源,而且数据可以被多个机器人通过联网获得,避免了重复性工作。虽然增加了数据传输代价,但从长远的利益上考虑,在云端放置数据的性价比更高。将各程序模块节点与数据库节点连接,得到第三边,第三边为程序模块节点与数据库节点之间的边。
进一步地,第三边上的权重值为数据传输代价,设为二元组(m,n),其中,m表示从云端将数据传输至程序模块节点的数据传输代价,即为数据在,n表示在云端执行时没有数据传输代价,即n=0。
Java应用程序基于区域进行抽象,形成四个程序模块后,加入数据库节点,在第一状态图基础上变化为第二状态图,程序模块节点与数据库节点之间的边为第三边,第三边上的权重值为数据传输代价,第三边上的权重值的二元组(m,n)中,当n=0时,表示在云端执行时没有数据传输代价,从图3中,数据传输代价明显比执行代价和通信代价要高,因为本发明是针对密集型的计算任务,在对数据的需求上是很大的,比如说一个程序模块可能一次需要处理几万个或几十万个甚至更多的数据,而回报给其他程序模块或最终的结果可能就是几十个或几百个有效的结果,此时好的做法就是将该程序模块迁移到云端执行,省去了数据传输的代价,而只是增加了一些通信代价。
迁移计算目的是在最小代价下得到对区域流图进行划分,得到迁移计算方案,从而降低不分割状态下的总代价,包括程序模块节点的执行代价,程序模块节点间的通信代价以及从云端传输到本地的程序模块节点的数据传输代价,在上述影响因素下,使得迁移计算后的总代价最小,公式表示如下:
Cost=Cost执行+Cost通信+Cost数据传输
其中,Cost表示总代价,Cost执行表示执行代价,Cost通信表示通信代价及Cost数据传输表示数据传输代价。
在本发明实施例中,图4示出了本发明实施例提供的迁移计算方法中区域流图的第三状态图。加入本地源节点S及云端汇节点T,在第二状态图基础上变化为第三状态图。第二边包括:程序模块节点与本地源节点之间的边、及程序模块节点与云端汇节点之间的边。将程序模块节点上的权重值转换成第二边上的权重值,具体地,将当前程序模块节点上的本地执行代价转化为当前程序模块节点与云端汇节点之间的边上的权值;同样地,将当前程序模块节点上的云端执行代价转化为当前程序模块节点与本地源节点之间的边上的权值。
迁移计算单元73,用于在区域流图中,利用最大流算法进行划分,得到迁移计算方案,并根据迁移计算方案进行迁移计算。
在本发明实施例中,图5示出了本发明实施例提供的迁移计算方法中区域流图的第四状态图。在图2-4中可以看出第一边上的权重值为通信代价,设为二元组(a,b),在计算时,假如只选择异端通信代价进行计算,在计算最小代价时,对于计算同端程序模块间的通信代价是不正确的,反之,只选择同端通信代价进行计算也是不正确的,需要将二元组中的两个值转换为一个值,具体地,将异端通信代价减去同端通信代价,因为第一边上的通信代价至少为同端通信代价,这样可以得到一个权重值,利用最大流算法进行划分后,再加上已减去的同端通信代价;同样地,第三边上的权重值为数据传输代价,同端无需数据传输,在云端执行时没有数据传输代价,直接访问即可获取,因此,与上述第一边上的权重值为通信代价的处理方式相同,将先将异端数据传输代价(从云端将数据传输至程序模块节点的数据传输代价)减去同端数据传输代价(在云端执行时没有数据传输代价),利用最大流算法进行划分后,再加上已减去的同端的数据传输代价,计算公式:
Figure BDA0001490126280000121
其中,Cost表示总代价,Cost执行表示执行代价,
Figure BDA0001490126280000131
表示异端通信代价减去同端通信代价,
Figure BDA0001490126280000132
表示异端数据传输代价减去同端数据传输代价,
Figure BDA0001490126280000133
表示同端通信代价,
Figure BDA0001490126280000134
表示同端数据传输代价。
在本发明实施例中,图6示出了本发明实施例提供的迁移计算方法中区域流图的第五状态图。由于数据库节点属于云端,通过加入带权重的边实现将数据库节点固定至云端,具体地,将数据库节点与云端汇节点之间的边上的联系代价设定为0,而将数据库节点与本地源节点之间的边上的联系代价设定为无穷大。
在本发明实施例中,通过创建代理程序以监视和控制应用程序,将应用程序基于区域进行抽象,同时将应用程序发送至云端进行执行,生成区域流图,并引入数据库节点、本地源节点及云端汇节点,然后先将程序模块节点上的权重值转换成第二边上的权重值,再将异端通信代价减去同端通信代价及异端数据传输代价减去同端数据传输代价,并固定数据库节点在云端,通过在采用最大流算法进行划分区域,以得到最优的迁移计算方案,最后再将同端通信代价及同端数据传输代价加回去,以弥补之前被减去的损失,通过将可卸载的程序模块迁移到云端进行执行,提高应用程序的执行时间,节省本地机器人存储资源以及运算量。
在本发明实施例中,迁移计算装置的各单元可由相应的硬件或软件单元实现,各单元可以为独立的软、硬件单元,也可以集成为一个软、硬件单元,在此不用以限制本发明。
实施例三:
图8示出了本发明实施例三提供的迁移计算设备的结构示意图,为了便于说明,仅示出了与本发明实施例相关的部分。
本发明实施例的迁移计算设备8包括处理器80、存储器81以及存储在存储器81中并可在处理器80上运行的计算机程序82。该处理器80执行计算机程序82时实现上述各个迁移计算方法实施例中的步骤,例如图1所示的步骤S101至S103。或者,处理器80执行计算机程序82时实现上述各装置实施例中各模块/单元的功能,例如图7所示模块71至73的功能。
在本发明实施例中,通过创建代理程序以监视和控制应用程序,将应用程序基于区域进行抽象,同时将应用程序发送至云端进行执行,生成区域流图,并引入数据库节点、本地源节点及云端汇节点,然后先将程序模块节点上的权重值转换成第二边上的权重值,再将异端通信代价减去同端通信代价及异端数据传输代价减去同端数据传输代价,并固定数据库节点在云端,通过在采用最大流算法进行划分区域,以得到最优的迁移计算方案,最后再将同端通信代价及同端数据传输代价加回去,以弥补之前被减去的损失,通过将可卸载的程序模块迁移到云端进行执行,提高应用程序的执行时间,节省本地机器人存储资源以及运算量。
实施例四:
在本发明实施例中,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述各个迁移计算方法实施例中的步骤,例如,图1所示的步骤S101至S103。或者,该计算机程序被处理器执行时实现上述各装置实施例中各模块/单元的功能,例如图7所示模块71至73的功能。
适用于Java应用程序,对Java应用程序在JVM上运行并使用JVMTI技术进行基于区域的抽象,每个区域包含一段程序片段,在区域流图上表示为程序模块节点,根据Java应用程序的运行状态,就会得到一个关于区域的调用图,也就是区域流图。程序模块节点上的权重值为执行代价,第一边上的权重值为通信代价。区域流图中,引入数据库节点、本地源节点及云端汇节点,并将程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值。
迁移计算目的是在最小代价下得到对区域流图进行划分,得到迁移计算方案,从而降低不分割状态下的总代价,包括程序模块节点的执行代价,程序模块节点间的通信代价以及从云端传输到本地的程序模块节点的数据传输代价,在上述影响因素下,使得迁移计算后的总代价最小。将异端通信代价减去同端通信代价及异端数据传输代价减去同端数据传输代价,并固定数据库节点在云端,通过在采用最大流算法进行划分区域,以得到最优的迁移计算方案,最后再将同端通信代价及同端数据传输代价加回去,以弥补之前被减去的损失,通过将可卸载的程序模块迁移到云端进行执行,提高应用程序的执行时间,节省本地机器人存储资源以及运算量。
本发明实施例的计算机可读存储介质可以包括能够携带计算机程序代码的任何实体或装置、记录介质,例如,ROM/RAM、磁盘、光盘、闪存等存储器。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种迁移计算方法,其特征在于,所述方法包括下述步骤:
在应用程序启动时,通过创建代理程序对所述应用程序进行监控,并将所述应用程序发送至云端进行执行,生成区域流图,所述区域流图包括:程序模块节点上的权重值及第一边上的权重值,所述第一边为所述程序模块节点之间的边;
在所述区域流图中,引入数据库节点、本地源节点及云端汇节点,并将所述程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值,其中,所述第二边包括:所述程序模块节点与所述本地源节点之间的边、及所述程序模块节点与所述云端汇节点之间的边,所述第三边为所述程序模块节点与所述数据库节点之间的边;
在所述区域流图中,利用最大流算法进行划分,得到迁移计算方案,并根据所述迁移计算方案进行迁移计算;
所述在应用程序启动时,通过创建代理程序对所述应用程序进行监控,并将所述应用程序发送至云端进行执行,生成区域流图的步骤,包括:
将所述应用程序基于区域进行抽象,形成所述区域流图中的程序模块节点,所述程序模块节点上的权重值为执行代价,所述第一边上的权重值为通信代价;
所述将所述应用程序基于区域进行抽象,形成所述区域流图中的程序模块节点的步骤,包括:
所述程序模块节点上的权重值为执行代价,设为二元组(x,y),其中,x表示本地执行代价,Y表示云端执行代价;
所述第一边上的权重值为通信代价,设为二元组(a,b),其中,a表示异端通信代价,b表示同端通信代价;
所述在所述区域流图中,引入数据库节点、本地源节点及云端汇节点,并将所述程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值的步骤,包括:
所述第三边上的权重值为数据传输代价,设为二元组(m,n),其中,m表示从云端将数据传输至所述程序模块节点的数据传输代价,n表示在云端执行时没有数据传输代价,即n=0;
所述在所述区域流图中,引入数据库节点、本地源节点及云端汇节点,并将所述程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值的步骤,还包括:
将所述程序模块节点上的权重值(x,y)转换为所述程序模块节点与所述本地源节点之间的边上的权重值为y;
将所述程序模块节点上的权重值(x,y)转换为所述程序模块节点与所述云端汇节点之间的边上的权重值为x。
2.一种迁移计算装置,其特征在于,所述装置包括:
区域流图生成单元,用于在应用程序启动时,通过创建代理程序对所述应用程序进行监控,并将所述应用程序发送至云端进行执行,生成区域流图,所述区域流图包括:块节点上的权重值及第一边上的权重值,所述第一边为所述程序模块节点之间的边;
权重值计算单元,用于在所述区域流图中,引入数据库节点、本地源节点及云端汇节点,并将所述程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值,其中,所述第二边包括:所述程序模块节点与所述本地源节点之间的边、及所述程序模块节点与所述云端汇节点之间的边,所述第三边为所述程序模块节点与所述数据库节点之间的边;以及
迁移计算单元,用于在所述区域流图中,利用最大流算法进行划分,得到迁移计算方案,并根据所述迁移计算方案进行迁移计算;
所述区域流图生成单元,包括:
区域流图生成子单元,用于将所述应用程序基于区域进行抽象,形成所述区域流图中的程序模块节点,所述程序模块节点上的权重值为执行代价,所述第一边上的权重值为通信代价;
所述区域流图生成子单元,具体用于:
所述程序模块节点上的权重值为执行代价,设为二元组(x,y),其中,x表示本地执行代价,Y表示云端执行代价;以及
所述第一边上的权重值为通信代价,设为二元组(a,b),其中,a表示异端通信代价,b表示同端通信代价;
所述在所述区域流图中,引入数据库节点、本地源节点及云端汇节点,并将所述程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值的步骤,包括:
所述第三边上的权重值为数据传输代价,设为二元组(m,n),其中,m表示从云端将数据传输至所述程序模块节点的数据传输代价,n表示在云端执行时没有数据传输代价,即n=0;
所述在所述区域流图中,引入数据库节点、本地源节点及云端汇节点,并将所述程序模块节点上的权重值转换成第二边上的权重值,以及对第三边加入权重值的步骤,还包括:
将所述程序模块节点上的权重值(x,y)转换为所述程序模块节点与所述本地源节点之间的边上的权重值为y;
将所述程序模块节点上的权重值(x,y)转换为所述程序模块节点与所述云端汇节点之间的边上的权重值为x。
3.一种迁移计算设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1所述方法的步骤。
4.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1所述方法的步骤。
CN201711242539.8A 2017-11-30 2017-11-30 迁移计算方法、装置、设备及存储介质 Active CN107967170B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711242539.8A CN107967170B (zh) 2017-11-30 2017-11-30 迁移计算方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711242539.8A CN107967170B (zh) 2017-11-30 2017-11-30 迁移计算方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN107967170A CN107967170A (zh) 2018-04-27
CN107967170B true CN107967170B (zh) 2020-11-10

Family

ID=61999211

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711242539.8A Active CN107967170B (zh) 2017-11-30 2017-11-30 迁移计算方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN107967170B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11119654B2 (en) * 2018-07-10 2021-09-14 International Business Machines Corporation Determining an optimal storage environment for data sets and for migrating data sets
CN112632171A (zh) * 2020-12-30 2021-04-09 中国农业银行股份有限公司 一种针对数据访问的拦截审核方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202373A (zh) * 2014-08-21 2014-12-10 清华大学深圳研究生院 移动云计算迁移方法及系统
CN104822175A (zh) * 2015-04-16 2015-08-05 华中科技大学 一种适用于蜂窝网络的代码迁移方法及系统
CN105656999A (zh) * 2015-12-25 2016-06-08 清华大学 一种移动云计算环境中能耗优化的合作任务迁移方法
CN106909449A (zh) * 2017-01-11 2017-06-30 西可通信技术设备(河源)有限公司 一种移动终端程序的计算迁移方法与装置
CN107360235A (zh) * 2017-07-17 2017-11-17 广东工业大学 一种基于可靠性分级的任务迁移方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5678778B2 (ja) * 2011-03-31 2015-03-04 富士通株式会社 システムおよびマイグレーション方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104202373A (zh) * 2014-08-21 2014-12-10 清华大学深圳研究生院 移动云计算迁移方法及系统
CN104822175A (zh) * 2015-04-16 2015-08-05 华中科技大学 一种适用于蜂窝网络的代码迁移方法及系统
CN105656999A (zh) * 2015-12-25 2016-06-08 清华大学 一种移动云计算环境中能耗优化的合作任务迁移方法
CN106909449A (zh) * 2017-01-11 2017-06-30 西可通信技术设备(河源)有限公司 一种移动终端程序的计算迁移方法与装置
CN107360235A (zh) * 2017-07-17 2017-11-17 广东工业大学 一种基于可靠性分级的任务迁移方法

Also Published As

Publication number Publication date
CN107967170A (zh) 2018-04-27

Similar Documents

Publication Publication Date Title
CN110096338B (zh) 智能合约执行方法、装置、设备及介质
US7503039B2 (en) Preprocessor to improve the performance of message-passing-based parallel programs on virtualized multi-core processors
CN113961351A (zh) 深度学习模型的分布式训练方法、装置、设备及存储介质
CN103034578B (zh) 一种应用数据监控方法和装置
CN108958729B (zh) 一种数据处理方法、装置及存储介质
CN105278996A (zh) 一种日志采集方法、装置及日志服务系统
US20090271588A1 (en) Migrating Program Objects in a Multi-Node Computer System
CN104965689A (zh) 一种cpu/gpu的混合并行计算方法及装置
US10102047B2 (en) In-memory data analytic system that provides an integrated tracking mechanism for explicit memory resources
CN116467061B (zh) 一种任务执行的方法、装置、存储介质及电子设备
CN107967170B (zh) 迁移计算方法、装置、设备及存储介质
CN109344062A (zh) 页面跨域跳转测试的方法及终端设备
US10552130B1 (en) Code optimization conversations for connected managed runtime environments
US8209299B2 (en) Selectively generating program objects on remote node of a multi-node computer system
CN104919427A (zh) 动态组件性能监视
JP2015219637A (ja) 処理実行プログラム、処理実行方法、及び情報処理装置
US10997057B2 (en) Debugging asynchronous functions
CN110188308B (zh) 客户端自动打点上报方法、存储介质、设备及系统
CN110045952B (zh) 代码调用方法与装置
US20180365129A1 (en) Dynamic instrumentation based on detected errors
CN116051031A (zh) 项目调度系统、介质及电子设备
CN113296907B (zh) 一种基于集群的任务调度处理方法、系统和计算机设备
CN112463626B (zh) 内存泄漏定位方法、装置、计算机设备及存储介质
CN114416029A (zh) 数据处理方法、装置、设备、存储介质及计算机程序产品
Bubak et al. Monitoring of distributed java applications

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