IP Library Granted Patent US 11,687,362
Granted Patent B2
US 11,687,362 · App. 17/237,094 · Granted Jun 27, 2023

Storage and reuse of computing-task outputs using system-call interception

Inventors: Victor Gershgorn (Tel-Aviv, IL); Boris Gimelbrand (Petah-Tikva, IL); Doron Exterman (Ramat Gan, IL)
Assignee: INCREDIBUILD SOFTWARE LTD.
G06F9/4843
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,687,362
App. No.
17/237,094
Granted
Jun 27, 2023
Kind
B2
Abstract

An apparatus includes a memory and one or more processors. The one or more processors are configured to receive a first computing task for execution, and, during execution of the first computing task (i) to monitor Operating System (OS) calls issued by the first computing task, (ii) to identify, based on the monitored OS calls, one or more outputs produced by the first computing task, and (iii) and to store the one or more outputs of the first computing task in the memory. The one or more processors are further configured to receive a second computing task for execution, and, upon ascertaining that the second computing task will produce at least one output that is identical to a stored output of the first computing task, to reuse the stored output of the first computing task as an output or the second computing task.

Claims (40)

1. An apparatus, comprising:

a memory; and

one or more processors, configured to:

receive a first computing task for execution;

during execution of the first computing task, (i) monitor Operating System (OS) calls issued by the first computing task, (ii) identify, based on the monitored OS calls, one or more outputs produced by the first computing task, and (iii) store the one or more outputs of the first computing task in the memory;

receive a second computing task for execution; and

upon ascertaining that the second computing task will produce at least one output that is identical to a stored output of the first computing task, reuse the stored output of the first computing task as an output of the second computing task.

2. The apparatus according to claim 1 , wherein the one or more processors are configured to ascertain that the at least one output of the second computing task will be identical to a stored output of the first computing task, by:

identifying, based on the OS calls monitored during execution of the first computing task, one or more inputs fetched by the first computing task; and

ascertaining that (i) a current version of the one or more inputs is identical to the one or more corresponding inputs that were fetched by the first computing task, and that (ii) at least one operation, which produces the at least one output from the one or more inputs, is identical in the first and second computing tasks.

3. The apparatus according to claim 2 , wherein the one or more processors are configured to compare between (i) one or more first signatures calculated over the current version of the one or more inputs and (ii) one or more second signatures calculated over the one or more corresponding inputs that were fetched by the first computing task, in order to ascertain that the current version is identical to the inputs fetched by the first computing task.

4. The apparatus according to claim 2 , wherein the one or more processors are configured to identify only inputs of the first computing task that affect one or more of the outputs of the first computing task.

5. The apparatus according to claim 2 , wherein the one or more processors are configured to execute the second computing task upon finding that the at least one operation differs between the second computing task and the first computing task, or that the current version of the one or more inputs differs from the one or more corresponding inputs that were fetched by the first computing task.

6. The apparatus according to claim 2 , wherein the first computing task comprises a hierarchy of multiple software processes, and wherein the one or more processors are configured to identify the hierarchy of the multiple processes and to accumulate at least some of the inputs fetched by the multiple processes.

7. The apparatus according to claim 2 , wherein the first computing task comprises one or more software processes, and wherein the one or more processors are configured to identify the inputs fetched by the first computing task, by monitoring the OS calls issued by the processes to an OS.

8. The apparatus according to claim 2 , wherein the second computing task comprises one or more software processes, including a given process in which a given input becomes available only during execution, and wherein the one or more processors are configured to run the given process at least until the given input is available, and then decide, based on the given input, whether to abort the given process and reuse a stored output from the first computing task.

9. The apparatus according to claim 1 , wherein the one or more processors are configured to monitor the OS calls by injecting, into the first computing task, program code that intercepts the OS calls issued by the first computing task to an OS.

10. The apparatus according to claim 9 , wherein the first computing task comprises a hierarchy of multiple software processes, and wherein the one or more processors are configured to inject the program code that intercepts the OS calls into the multiple software processes.

11. The apparatus according to claim 1 , wherein the one or more processors are configured to ascertain that the second computing task will produce at least one output that is identical to a stored output of the first computing task, by comparing first and second signatures calculated over at least respective command lines of the first and second computing tasks.

12. The apparatus according to claim 1 , wherein, in addition to reusing the stored outputs of the computing task, the one or more processors are configured to reconstruct additional data that is required for subsequent usage of the outputs of the second computing task by a target process.

13. The apparatus according to claim 12 , wherein the one or more processors are configured to indicate to the target process that the second computing task has completed execution, even though the second computing task was not executed and the outputs of the second computing task comprise the stored outputs of the first computing task.

14. A method, comprising:

receiving a first computing task for execution;

during execution of the first computing task, (i) monitoring Operating System (OS) calls issued by the first computing task, (ii) identifying, based on the monitored OS calls, one or more outputs produced by the first computing task, and (iii) storing the one or more outputs of the first computing task in the memory;

receiving a second computing task for execution; and

upon ascertaining that the second computing task will produce at least one output that is identical to a stored output of the first computing task, reusing the stored output of the first computing task as an output of the second computing task.

15. The method according to claim 14 , wherein ascertaining that the at least one output of the second computing task will be identical to a stored output of the first computing task comprises:

identifying, based on the OS calls monitored during execution of the first computing task, one or more inputs fetched by the first computing task; and

ascertaining that (i) a current version of the one or more inputs is identical to the one or more corresponding inputs that were fetched by the first computing task, and that (ii) at least one operation, which produces the at least one output from the one or more inputs, is identical in the first and second computing tasks.

16. The method according to claim 15 , wherein ascertaining that the at least one output of the second computing task will be identical to a stored output of the first computing task comprises comparing between (i) one or more first signatures calculated over the current version of the one or more inputs and (ii) one or more second signatures calculated over the one or more corresponding inputs that were fetched by the first computing task.

17. The method according to claim 15 , wherein identifying the one or more inputs comprises identifying only inputs of the first computing task that affect one or more of the outputs of the first computing task.

18. The method according to claim 15 , wherein and comprising executing the second computing task upon finding that the at least one operation differs between the second computing task and the first computing task, or that the current version of the one or more inputs differs from the one or more corresponding inputs that were fetched by the first computing task.

19. The method according to claim 15 , wherein the first computing task comprises a hierarchy of multiple software processes, and wherein identifying the one or more inputs comprises identifying the hierarchy of the multiple processes, and accumulating at least some of the inputs fetched by the multiple processes.

20. The method according to claim 15 , wherein the first computing task comprises one or more software processes, and wherein identifying the one or more inputs comprises monitoring the OS calls issued by the processes to an OS.

21. The method according to claim 15 , wherein the second computing task comprises one or more software processes, including a given process in which a given input becomes available only during execution, and comprising running the given process at least until the given input is available, and then deciding, based on the given input, whether to abort the given process and reuse a stored output from the first computing task.

22. The method according to claim 14 , wherein monitoring the OS calls comprises injecting, into the first computing task, program code that intercepts the OS calls issued by the first computing task to an OS.

23. The method according to claim 22 , wherein the first computing task comprises a hierarchy of multiple software processes, and wherein injecting the program code comprises injecting the program code that intercepts the OS calls into the multiple software processes.

24. The method according to claim 14 , wherein ascertaining that the second computing task will produce at least one output that is identical to a stored output of the first computing task comprises comparing first and second signatures calculated over at least respective command lines of the first and second computing tasks.

25. The method according to claim 14 , and comprising, in addition to reusing the stored outputs of the first computing task, reconstructing additional data that is required for subsequent usage of the outputs of the second computing task by a target process.

26. The method according to claim 25 , and comprising indicating to the target process that the second computing task has completed execution, even though the second computing task was not executed and the outputs of the second computing task comprise the stored outputs of the first computing task.

Assignments (2)
SECURITY INTEREST Recorded Jul 9, 2023
From: INCREDIBUILD SOFTWARE LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 064191/0715 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2021
From: GERSHGORN, VICTOR; GIMELBRAND, BORIS; EXTERMAN, DORON
To: INCREDIBUILD SOFTWARE LTD.
Reel/Frame 055998/0083 →
Continuity (1)
Related Publication 20220342696A1 · Oct 27, 2022