Systems and methods to achieve load balancing among a plurality of compute elements accessing a shared memory pool
First Claim
1. A system operative to achieve load balancing among a plurality of compute elements accessing a shared memory pool, comprising:
- a shared memory pool configured to store a plurality of data sets comprising a first data set and a second data set;
a first data interface configured to extract and serve any of said plurality of data sets from said shared memory pool, and comprising an internal registry configured to keep track of the data sets extracted and served; and
a plurality of compute elements comprising at least a first compute element and a second compute element, in which said plurality of compute elements are communicatively connected with said first data interface, and said plurality of compute elements are configured to execute distributively a first task associated with said plurality of data sets;
wherein;
the first compute element is configured to send a first data request to the first data interface after deciding that said first compute element is currently available or will soon become available to start or to continue contributing to said execution, and the first data interface is configured to;
conclude, according to the internal registry, that the first data set is next for processing;
extract the first data set from the shared memory pool;
serve the first data set extracted to the first compute element, thereby enabling said first compute element to perform said contribution; and
update the internal registry to reflect said serving of the first data set; and
the second compute element is configured to send a second data request to the first data interface after deciding that said second compute element is currently available or will soon become available to start or to continue contributing to said execution, and the first data interface is configured to;
conclude, according to the internal registry reflecting that the first data set has already been served, that the second data set is next for processing;
extract the second data set from the shared memory pool;
serve the second data set extracted to the second compute element, thereby enabling said second compute element to perform said contribution; and
update the internal registry to reflect said serving of the second data set,such that said decisions regarding said availabilities facilitate said load balancing in conjunction with said executing distributively of said first task, without the plurality of compute elements being aware of the order in which said plurality of data sets are extracted and served.
3 Assignments
0 Petitions
Accused Products
Abstract
Various systems and methods to achieve load balancing among a plurality of compute elements accessing a shared memory pool. The shared memory pool is configured to store and serve a plurality of data sets associated with a task, a first data interface'"'"'s internal registry is configured to keep track of which data sets have been extracted from the shared memory pool and served to the compute elements, the first data interface is configured to extract from the shared memory pool and serve to the compute elements data sets which have not yet been extracted and served, the rate at which data sets are extracted and served to each particular compute element is proportional to the rate at which that compute element requests data sets, and the system may continues to extract, serve, and process data sets until all of the data sets associated with the task have been processed once.
90 Citations
17 Claims
-
1. A system operative to achieve load balancing among a plurality of compute elements accessing a shared memory pool, comprising:
-
a shared memory pool configured to store a plurality of data sets comprising a first data set and a second data set; a first data interface configured to extract and serve any of said plurality of data sets from said shared memory pool, and comprising an internal registry configured to keep track of the data sets extracted and served; and a plurality of compute elements comprising at least a first compute element and a second compute element, in which said plurality of compute elements are communicatively connected with said first data interface, and said plurality of compute elements are configured to execute distributively a first task associated with said plurality of data sets; wherein; the first compute element is configured to send a first data request to the first data interface after deciding that said first compute element is currently available or will soon become available to start or to continue contributing to said execution, and the first data interface is configured to;
conclude, according to the internal registry, that the first data set is next for processing;
extract the first data set from the shared memory pool;
serve the first data set extracted to the first compute element, thereby enabling said first compute element to perform said contribution; and
update the internal registry to reflect said serving of the first data set; andthe second compute element is configured to send a second data request to the first data interface after deciding that said second compute element is currently available or will soon become available to start or to continue contributing to said execution, and the first data interface is configured to;
conclude, according to the internal registry reflecting that the first data set has already been served, that the second data set is next for processing;
extract the second data set from the shared memory pool;
serve the second data set extracted to the second compute element, thereby enabling said second compute element to perform said contribution; and
update the internal registry to reflect said serving of the second data set,such that said decisions regarding said availabilities facilitate said load balancing in conjunction with said executing distributively of said first task, without the plurality of compute elements being aware of the order in which said plurality of data sets are extracted and served. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method for load balancing a plurality of compute elements accessing a shared memory pool, comprising:
-
starting from an initial state, in which a plurality of data sets belonging to a first data corpus are stored in a shared memory pool associated with a first data interface, such that each of said plurality of data sets is stored only once; keeping a record, by the first data interface, about which of said plurality of data sets are stored in the shared memory pool and which of said plurality of data sets have been served by the first data interface to any one of a plurality of compute elements; receiving data requests, in the first data interface, from any one of the plurality of compute elements; and serving, by the first data interface, as a response to each one of said data requests made to the first data interface, one of said data sets that is stored in the shared memory pool and that is selected for sending to the compute element making the data request based on said record kept by the first data interface, such that the one data set selected and served is guaranteed to not have been sent before by the data interface since said start from said initial state, and such that each of the plurality of compute elements is served at a rate that is proportional to a rate at which the compete element is making such data requests, thereby eventually resulting in said data sets being served to the plurality of compute elements, while achieving said load balancing among the plurality of compute elements as a result of said proportionality. - View Dependent Claims (11, 12, 13, 14, 15, 17)
-
-
16. The method of 15, wherein said execution of said first task is achieved after said data corpus has been served to the plurality of compute elements, and after each of the compute elements processes the ones of the data sets served to that compute element.
Specification