IP Library Granted Patent US 10,810,003
Granted Patent B2
US 10,810,003 · App. 16/262,818 · Granted Oct 20, 2020

Method and system for optimization of container image layering

Inventors: Matthew Gainsborough (Oakland, CA); Sreeram Duvur (Fremont, CA)
Assignee: salesforce.com, inc.
G06F8/65
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 10,810,003
App. No.
16/262,818
Granted
Oct 20, 2020
Kind
B2
Abstract

Methods and systems for optimization of layering of a container image are presented. A modification factor is determined, based on modification events, for each one of multiple software elements. A container image layering structure is determined, based at least in part on the modification factors of the software elements, where the container image layering structure defines a layering order for two or more container sub-images that form the container image, and the layering order determines an order with which container sub-image from the container sub-images are to be executed to form the entire container image, and the container image layering structure further defines for each one of the container sub-images a respective subset of one or more software elements from the plurality of software elements. The container image is deployed based on the container image layering structure to be used for generation of containers in a cloud processing system.

Claims (41)

1. A method for optimization of layering of a container image, the method comprising:

receiving modification events from a software element repository that records changes to one or more of a plurality of software elements;

determining, based on the modification events, for the one or more of the plurality of software elements a modification factor indicative of the rate of change of the software element during the interval of time,

wherein the container image is to be generated based on the plurality of software elements, and

wherein each modification event is indicative of one or more changes that occurred in one of the plurality of software elements during an interval of time;

determining a container image layering structure, based at least in part on the modification factors of the software elements, wherein the container image layering structure defines a layering order for two or more container sub-images that form the container image,

wherein the layering order determines an order with which the container sub-images are to be executed to form the entire container image, and the container image layering structure further defines for each one of the container sub-images a respective subset of one or more software elements from the plurality of software elements; and

storing the container image based on the container image layering structure to be used for generation of one or more containers in a cloud processing system,

wherein software elements that are updated more frequently than other software elements from the plurality of software elements are stored as part of top container sub-images of the container image.

2. The method of claim 1 , wherein determining the container image layering structure is further based on dependencies between the software elements.

3. The method of claim 1 , wherein each one of the container sub-images is not to exceed a predetermined storage size, and wherein determining the container image layering structure is further based on the predetermined storage size such that a cumulative storage size of software elements selected to be included in each one of the container sub-images does not exceed the predetermined storage size.

4. The method of claim 1 , wherein each one of the software elements belongs to one of a plurality of software element categories including at least one of a software package, a documentation file, a configuration file, a library file.

5. The method of claim 4 , wherein the determining the container image layering structure includes:

categorizing the modification events based on the plurality of software element categories; and

wherein the determining a container image layering structure is further based on the categorizing of the modification events.

6. The method of claim 1 , wherein determining a modification factor of a software element includes:

determining a number of release events of the plurality of software elements in which a change occurred in the software element during the interval of time, wherein a release event of the plurality of software elements causes an update of the container image;

determining a total number of release events of the plurality of software elements; and

obtaining the modification factor for the software element by dividing a number of release events of the plurality of software elements in which a change occurred in the software element during the interval of time by a total number of releases of the plurality of software elements that occurred during the interval of time.

7. The method of claim 1 , wherein each one of the modification events includes one or more of an identification of a software element that is modified, a time indicator indicating a time and date at which modification of the software element occurred, a project identifier, a directory identifier, an author identifier, a size, and other parameters related to the change that occurred in the software element.

8. A non-transitory machine-readable storage medium that provides instructions that, if executed by a machine, will cause said machine to perform operations comprising:

receiving modification events from a software element repository that records changes to one or more of a plurality of software elements;

determining, based on the modification events, for the one or more of the plurality of software elements a modification factor indicative of the rate of change of the software element during the interval of time,

wherein the container image is to be generated based on the plurality of software elements, and

wherein each modification event is indicative of one or more changes that occurred in one of the plurality of software elements during an interval of time;

determining a container image layering structure, based at least in part on the modification factors of the software elements,

wherein the container image layering structure defines a layering order for two or more container sub-images that form the container image,

wherein the layering order determines an order with which the container sub-images are to be executed to form the entire container image, and the container image layering structure further defines for each one of the container sub-images a respective subset of one or more software elements from the plurality of software elements; and

storing the container image based on the container image layering structure to be used for generation of one or more containers in a cloud processing system,

wherein software elements that are updated more frequently than other software elements from the plurality of software elements are stored as part of top container sub-images of the container image.

9. The non-transitory machine-readable storage medium of claim 8 , wherein determining the container image layering structure is further based on dependencies between the software elements.

10. The non-transitory machine-readable storage medium of claim 8 , wherein each one of the container sub-images is not to exceed a predetermined storage size, and wherein determining the container image layering structure is further based on the predetermined storage size such that a cumulative storage size of software elements selected to be included in each one of the container sub-images does not exceed the predetermined storage size.

11. The non-transitory machine-readable storage medium of claim 8 , wherein each one of the software elements belongs to one of a plurality of software element categories including at least one of a software package, a documentation file, a configuration file, a library file.

12. The non-transitory machine-readable storage medium of claim 11 , wherein the determining the container image layering structure includes:

categorizing the modification events based on the plurality of software element categories; and

wherein the determining a container image layering structure is further based on the categorizing of the modification events.

13. The non-transitory machine-readable storage medium of claim 8 , wherein the determining a modification factor of a software element includes:

determining a number of release events of the plurality of software elements in which a change occurred in the software element during the interval of time, wherein a release event of the plurality of software elements causes an update of the container image;

determining a total number of release events of the plurality of software elements; and

obtaining the modification factor for the software element by dividing a number of release events of the plurality of software elements in which a change occurred in the software element during the interval of time by a total number of releases of the plurality of software elements that occurred during the interval of time.

14. The non-transitory machine-readable storage medium of claim 8 , wherein each one of the modification events includes one or more of an identification of a software element that is modified, a time indicator indicating a time and date at which modification of the software element occurred, a project identifier, a directory identifier, an author identifier, a size, and other parameters related to the change that occurred in the software element.

Assignments (2)
CHANGE OF NAME Recorded Feb 17, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 062794/0656 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2019
From: DUVUR, SREERAM; GAINSBOROUGH, MATTHEW
To: SALESFORCE.COM, INC.
Reel/Frame 048196/0515 →
Cited By (5)
US 12,260,240 US 12,282,758 US 12,360,760 US 12,468,522 US 12,578,937