【技术实现步骤摘要】
一种锁的卸载运行方法、装置及计算机设备
[0001]本申请涉及计算机
,尤其涉及一种锁的卸载运行方法、装置及计算机设备。
技术介绍
[0002]随着数据规模的增长,如今对计算能力的要求已越来越高,不断提升单核或者单台服务器的计算能力已无法得到较高的性价比收益。为满足日益增长的计算能力需求,异构加速、集群计算等技术被不断提出并发展,希望通过将部分计算任务卸载(offload)至其他节点,提高计算系统整体计算能力。
[0003]多线程程序如果涉及到对共享资源的并发读写,就会产生资源争用,一种解决资源争用的方式是通过锁进行访问控制,对并发读写的数据进行保护。然而,锁作为程序中常见的同步手段,会因为计算系统的扩展而导致使用复杂度上升甚至不可用。如果将含有锁的代码卸载至卸载节点,由于主机与卸载节点的锁变量不一致,则卸载节点所运行的代码无法正常发挥应有的作用。
[0004]而目前主流的基于导语的编译器,如共享存储并行编程(open multi
‑
processing,OpenMP),并没有提供主机与卸载节点锁同步的机制,因此需要由编程人员对卸载的程序代码进行修改,增加了编程人员的工作量且不符合导语式编程不修改原有程序代码的初衷。基于数据库、远程字典服务(remote dictionary server,Redis),分布式应用程序协调服务(zookeeper)等实现的分布式锁方案,能够在分布式系统的各个节点去访问全局统一维护的锁变量,因此可以将原程序代码中的锁修改为上述分布式锁,以适应卸载 ...
【技术保护点】
【技术特征摘要】
1.一种锁的卸载运行方法,其特征在于,包括:编译器获取用户输入的导语,所述导语用于指示生成锁的执行文件;所述编译器根据所述导语生成主机端执行文件和目标卸载节点执行文件,并将所述主机端执行文件发送至主机端,将所述目标卸载节点执行文件发送至目标卸载节点;所述目标卸载节点执行文件在被所述目标卸载节点运行时,使得所述目标卸载节点执行:在需要对目标锁变量上锁时,向主机端发送对所述目标锁变量的第一上锁请求,在所述主机端确定所述目标卸载节点对所述目标锁变量上锁后,对所述目标锁变量进行访问;所述主机端执行文件在被所述主机端运行时,使得所述主机端执行:在获取到所述目标卸载节点的第一上锁请求时,根据所述目标锁变量当前的状态和/或等锁队列中的上锁请求,确定所述目标卸载节点是否能够对所述目标锁变量上锁。2.根据权利要求1所述的方法,其特征在于,所述导语中包括锁变量的标识信息,所述主机端执行文件和目标卸载节点执行文件为针对所述锁变量的执行文件,所述目标锁变量属于所述锁变量。3.根据权利要求1或2所述的方法,其特征在于,在所述编译器根据所述导语生成主机端执行文件和目标卸载节点执行文件之前,所述方法还包括:所述编译器获取卸载区域的程序代码,所述卸载区域的程序代码为卸载至所述目标卸载节点执行的程序代码;所述编译器识别所述程序代码中的锁变量;所述主机端执行文件和目标卸载节点执行文件为针对所述锁变量的执行文件,所述目标锁变量属于所述锁变量。4.根据权利要求3所述的方法,其特征在于,所述编译器识别所述程序代码中的锁变量,包括:所述编译器识别所述程序代码中是否存在与锁相关的函数,若存在,根据与锁相关的函数识别所述程序代码中的锁变量;和/或所述编译器通过线程运行卸载区域的程序代码,根据所述卸载区域的程序代码中对非卸载区域的写操作识别所述程序代码中的锁变量。5.根据权利要求1
‑
4任一项所述的方法,其特征在于,所述主机端执行文件在被所述主机端运行时,使得所述主机端在执行根据所述目标锁变量当前的状态和/或等锁队列中的上锁请求确定所述目标卸载节点是否能够对所述目标锁变量上锁时,具体执行:确定所述目标锁变量是否为空闲状态;若所述目标锁变量为空闲状态,对所述目标锁变量上锁,根据所述第一上锁请求和所述等锁队列中的上锁请求确定当前对所述目标锁变量上锁的卸载节点;若确定出的卸载节点不是所述目标卸载节点,将所述第一上锁请求添加至等锁队列,若确定出的卸载节点为所述目标卸载节点,确定所述目标卸载节点对所述目标锁变量上锁成功;若所述目标锁变量为上锁状态,将所述第一上锁请求添加至所述等锁队列。6.根据权利要求5所述的方法,其特征在于,所述主机端执行文件在被所述主机端运行时,使得所述主机端在执行根据所述第一上锁请求和所述等锁队列中的上锁请求确定当前对所述目标锁变量上锁的卸载节点时,具体执行:根据所述第一上锁请求和所述等锁队列中的上锁请求,确定请求访问所述目标锁变量的卸载节点的优先级;
将优先级最高的卸载节点作为当前对所述目标锁变量上锁的卸载节点。7.根据权利要求1
‑
6任一项所述的方法,其特征在于,所述主机端执行文件在被所述主机端运行时,使得所述主机端还执行:将所述锁变量的状态同步至所述目标卸载节点;所述目标卸载节点执行文件在被所述目标卸载节点运行时,使得所述目标卸载节点向主机端发送对所述目标锁变量的第一上锁请求时,具体执行:根据获取到的所述锁变量的状态,确定所述目标锁变量的状态;当所述目标锁变量的状态为空闲状态时,向所述主机端发送对所述目标锁变量的第一上锁请求;当所述目标锁变量的状态为上锁状态时,将对所述目标锁变量的第一上锁请求添加至所述目标卸载节点的等锁队列,将所述目标卸载节点的等锁队列的信息同步至所述主机端。8.根据权利要求1
‑
7任一项所述的方法,其特征在于,所述目标卸载节点执行文件在被所述目标卸载节点运行时,使得所述目标卸载节点还执行:当所述目标卸载节点中的第一线程对所述目标锁变量上锁并访问完成后,判断所述目标卸载节点的等锁队列中是否存在所述目标卸载节点的其他线程对所述目标锁变量的上锁请求;若不存在,向所述主机端发送对所述目标锁变量的第一释放请求;若存在,确定所述其他线程中优先级最高的线程对所述目标锁变量上锁;或者,判断所述其他线程中优先级最高的线程的优先级是否小于所述主机端的优先级,若小于,向所述主机端发送对所述目标锁变量的释放请求,否则,确定所述优先级最高的线程对所述目标锁变量上锁。9.根据权利要求1
‑
8任一项所述的方法,其特征在于,所述主机端执行文件在被所述主机端运行时,使得所述主机端还执行:当接收到对所述目标锁变量的第一释放请求时,确定所述等锁队列中是否存在其他卸载节点对所述目标锁变量的上锁请求;若不存在,对所述目标锁变量进行释放,释放后的目标锁变量的状态变为空闲状态;若存在,确定所述其他卸载节点中优先级最高的卸载节点对所述目标锁变量上锁;或者,判断所述其他卸...
【专利技术属性】
技术研发人员:季晨鹏,杨仲凯,郑卫炎,郭海涛,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。