使用系统调用拦截的计算任务输出的存储和重新使用技术方案

技术编号:38946686 阅读:14 留言:0更新日期:2023-09-25 09:43
一种装置(20)包括存储器(32)和一个或更多个处理器(24)。该一个或更多个处理器被配置成:接收用于执行的第一计算任务,并且在第一计算任务的执行期间(i)监视由第一计算任务发出的操作系统(OS)调用,(ii)基于所监视的OS调用来识别由第一计算任务产生的一个或更多个输出,以及(iii)将第一计算任务的一个或更多个输出存储在存储器中。该一个或更多个处理器还被配置成接收用于执行的第二计算任务,并且在确定第二计算任务将产生与第一计算任务的存储的输出相同的至少一个输出时,重新使用第一计算任务的存储的输出作为第二计算任务的输出。输出。输出。

【技术实现步骤摘要】
【国外来华专利技术】使用系统调用拦截的计算任务输出的存储和重新使用
专利

[0001]本专利技术总体上涉及计算系统,并且特别地涉及用于存储和重新使用计算任务的输出的方法和系统。
[0002]专利技术背景
[0003]各种类型的计算任务进行结果的缓存以供后续重新使用。例如,Matev的一篇题为“Fast distributed compilation and testing of large C++projects”的文章(第24届高能与核物理计算国际会议(24
th International Conference on Computing in High Energy and Nuclear Physics),2019年11月)描述了一种分布式编译服务器,该服务器执行预处理并缓存编译结果,以便更快地重建。Kirillov在“Faster builds with the new Caching Shader Preprocessor(Experimental)”(Unity Blog,2020年5月)中描述了另一个示例预处理和缓存方案。
[0004]专利技术概述
[0005]本文描述的本专利技术的实施例提供了一种包括存储器和一个或更多个处理器的装置。该一个或更多个处理器被配置成:接收用于执行的第一计算任务,并且在该第一计算任务的执行期间(i)监视由第一计算任务发出的操作系统(OS)调用,(ii)基于所监视的OS调用来识别由第一计算任务产生的一个或更多个输出,以及(iii)将第一计算任务的一个或更多个输出存储在存储器中。一个或更多个处理器还被配置成接收用于执行的第二计算任务,并且在确定第二计算任务将产生与第一计算任务的存储的输出相同的至少一个输出时,重新使用第一计算任务的存储的输出作为第二计算任务的输出。
[0006]在一些实施例中,一个或更多个处理器被配置成通过以下操作确定第二计算任务的至少一个输出将与第一计算任务的存储的输出相同:基于在第一计算任务的执行期间监视的OS调用,识别由第一计算任务获取的一个或更多个输入;以及确定(i)该一个或更多个输入的当前版本与由第一计算任务获取的一个或更多个对应输入相同,以及(ii)从一个或更多个输入产生至少一个输出的至少一个操作在第一计算任务和第二计算任务中相同。
[0007]在示例实施例中,一个或更多个处理器被配置成在以下项之间进行比较,以便确定当前版本与由第一计算任务获取的输入相同:(i)在一个或更多个输入的当前版本上计算的一个或更多个第一签名(signature),以及(ii)在由第一计算任务获取的一个或更多个对应输入上计算的一个或更多个第二签名。
[0008]在另一实施例中,一个或更多个处理器被配置成仅识别影响第一计算任务的输出中的一个或更多个输出的第一计算任务的输入。在又一实施例中,一个或更多个处理器被配置成在发现至少一个操作在第二计算任务和第一计算任务之间不同,或者发现一个或更多个输入的当前版本不同于由第一计算任务获取的一个或更多个对应输入时,执行第二计算任务。
[0009]在公开的实施例中,第一计算任务包括多个软件进程的层次结构,并且一个或更多个处理器被配置成识别该多个进程的层次结构并累积由多个进程获取的输入中的至少一些。在示例实施例中,第一计算任务包括一个或更多个软件进程,并且该一个或更多个处
理器被配置成通过监视由进程向OS发出的OS调用来识别由第一计算任务获取的输入。在实施例中,第二计算任务包括一个或更多个软件进程,该一个或更多个软件进程包括给定进程,在该给定进程中,给定输入仅在执行期间变得可用,并且一个或更多个处理器被配置成运行给定进程至少直到给定输入可用,然后基于给定输入决定是否中止(abort)给定进程并重新使用来自第一计算任务的存储的输出。
[0010]在一些实施例中,一个或更多个处理器被配置成通过将程序代码注入到第一计算任务中来监视OS调用,该程序代码拦截由第一计算任务向OS发出的OS调用。在示例实施例中,第一计算任务包括多个软件进程的层次结构,并且一个或更多个处理器被配置成将拦截OS调用的程序代码注入到多个软件进程中。在另一实施例中,一个或更多个处理器被配置成通过比较在第一计算任务和第二计算任务的至少相应命令行上计算的第一签名和第二签名来确定第二计算任务将产生与第一计算任务的存储的输出相同的至少一个输出。
[0011]在一些实施例中,除了重新使用第一计算任务的存储的输出,一个或更多个处理器还被配置成重构目标进程随后使用第二计算任务的输出所需的附加数据。在实施例中,一个或更多个处理器被配置成向目标进程指示第二计算任务已经完成执行,尽管第二计算任务并没有被执行并且第二计算任务的输出包括第一计算任务的存储的输出。
[0012]根据本专利技术的实施例,还提供了一种方法,该方法包括:接收用于执行的第一计算任务,以及在第一计算任务的执行期间(i)监视由第一计算任务发出的操作系统(OS)调用,(ii)基于监视的OS调用识别由第一计算任务产生的一个或更多个输出,以及(iii)将第一计算任务的一个或更多个输出存储在存储器中。接收用于执行的第二计算任务。在确定第二计算任务将产生与第一计算任务的存储的输出相同的至少一个输出时,重新使用第一计算任务的存储的输出作为第二计算任务的输出。
[0013]根据对本专利技术的实施例的以下详细描述并结合以下附图,本专利技术将得到更充分的理解。
[0014]附图简述
[0015]图1是示意性地示出根据本专利技术实施例的计算系统的框图,该计算系统使用系统调用拦截来进行计算任务输出的存储和重新使用;以及
[0016]图2是示意性地示出根据本专利技术实施例的方法的流程图,该方法使用系统调用拦截来存储和重新使用计算任务输出。
具体实施方式
[0017]综述
[0018]本文描述的本专利技术的实施例提供了用于有效地执行计算任务的方法和系统。如下面将详细解释的,所公开的技术存储先前执行的计算任务的输出,并且在识别出新的计算任务将产生相同的输出时重新使用先前执行的计算任务的存储的输出。
[0019]在一个示例场景中,如果(i)两个计算任务指定相同的操作(例如,包括命令行参数的同一命令行),以及(ii)新计算任务所需的输入(或者至少影响输出的输入)与前一个计算任务的存储的输出相同,则新计算任务将生成与前一个计算任务的输出相同的输出。对于确定性计算任务(即,给定相同输入产生相同输出的计算任务),这些条件确保前一个计算任务的存储的输出可以被安全地重新使用,以作为新计算任务的输出。输入类型和输
出类型的具体示例将在下面进一步给出。
[0020]然而,所公开的技术不限于前一个任务和新任务执行完全相同的操作、具有完全相同的输入并产生完全相同的输出的情况。更一般地,新任务将生成与前一个任务的存储的输出相同的至少一个输出就足够了。在任何这样的情况下,前一个任务的存储的输出可以被重新使用以作为新任务的输出,从而避免了新任务重新计算该输出的需要。如果新任务的所有输出都可以从一个或更多个先前任务的存储本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种装置,包括:存储器;以及一个或更多个处理器,所述一个或更多个处理器被配置成:接收用于执行的第一计算任务;在所述第一计算任务的执行期间:(i)监视由所述第一计算任务发出的操作系统(OS)调用,(ii)基于监视的OS调用识别由所述第一计算任务产生的一个或更多个输出,以及(iii)将所述第一计算任务的所述一个或更多个输出存储在所述存储器中;接收用于执行的第二计算任务;以及在确定所述第二计算任务将产生与所述第一计算任务的存储的输出相同的至少一个输出时,重新使用所述第一计算任务的存储的输出作为所述第二计算任务的输出。2.根据权利要求1所述的装置,其中,所述一个或更多个处理器被配置成通过以下操作确定所述第二计算任务的至少一个输出将与所述第一计算任务的存储的输出相同:基于在所述第一计算任务的执行期间监视的所述OS调用,识别由所述第一计算任务获取的一个或更多个输入;以及确定(i)所述一个或更多个输入的当前版本与由所述第一计算任务获取的一个或更多个对应输入相同,以及(ii)从所述一个或更多个输入产生所述至少一个输出的至少一个操作在所述第一计算任务和所述第二计算任务中相同。3.根据权利要求2所述的装置,其中,所述一个或更多个处理器被配置成在以下项之间进行比较,以便确定所述当前版本与由所述第一计算任务获取的输入相同:(i)在所述一个或更多个输入的当前版本上计算的一个或更多个第一签名,以及(ii)在由所述第一计算任务获取的一个或更多个对应输入上计算的一个或更多个第二签名。4.根据权利要求2所述的装置,其中,所述一个或更多个处理器被配置成仅识别影响所述第一计算任务的输出中的一个或更多个输出的所述第一计算任务的输入。5.根据权利要求2所述的装置,其中,所述一个或更多个处理器被配置成在发现所述至少一个操作在所述第二计算任务和所述第一计算任务之间不同,或者发现所述一个或更多个输入的当前版本不同于由所述第一计算任务获取的一个或更多个对应输入时,执行所述第二计算任务。6.根据权利要求2所述的装置,其中,所述第一计算任务包括多个软件进程的层次结构,并且其中,所述一个或更多个处理器被配置成识别所述多个进程的所述层次结构,并累积由所述多个进程获取的输入中的至少一些。7.根据权利要求2所述的装置,其中,所述第一计算任务包括一个或更多个软件进程,并且其中,所述一个或更多个处理器被配置成通过监视由所述进程向OS发出的所述OS调用来识别由所述第一计算任务获取的输入。8.根据权利要求2所述的装置,其中,所述第二计算任务包括一个或更多个软件进程,所述一个或更多个软件进程包括给定进程,在所述给定进程中,给定输入仅在执行期间变得可用,并且其中,所述一个或更多个处理器被配置成运行所述给定进程至少直到所述给定输入可用,然后基于所述给定输入决定是否中止所述给定进程并重新使用来自所述第一计算任务的存储的输出。9.根据权利要求1

8中任一项所述的装置,其中,所述一个或更多个处理器被配置成通
过将程序代码注入到所述第一计算任务中来监视所述OS调用,所述程序代码拦截由所述第一计算任务向OS发出的所述OS调用。10.根据权利要求9所述的装置,其中,所述第一计算任务包括多个软件进程的层次结构,并且其中,所述一个或更多个处理器被配置成将拦截所述OS调用的所述程序代码注入到所述多个软件进程中。11.根据权利要求1

8中任一项所述的装置,其中,所述一个或更多个处理器被配置成通过比较在所述第一计算任务和所述第二计算任务的至少相应命令行上计算的第一签名和第二签名,确定所述第二计算任务将产生与所述第一计算任务的存储的输出相同的至少一个输出。12.根据权利要求1

8中任一项所述的装置,其中,除了重新使用所述第一计算任务的存储的输出,所述一个或更多个处理器还被配置成重构目标进程随后使用所述第二计算任务的输出所需的附加数据。13.根据权利要求12所述的装置,其中,所述一个或更多个处理器被配置成向所...

【专利技术属性】
技术研发人员:维克多
申请(专利权)人:快编大师软件有限公司
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1