Distributed computing of a job corresponding to a plurality of predefined tasks
원문보기
IPC분류정보
국가/구분
United States(US) Patent
등록
국제특허분류(IPC7판)
G06F-015/173
G06F-015/16
G06F-009/46
출원번호
US-0134335
(2002-04-26)
발명자
/ 주소
Jervis,Robert B.
Bocken,Xavier L.
Shurtz,Chad R.
출원인 / 주소
Microsoft Corporation
인용정보
피인용 횟수 :
132인용 특허 :
15
초록▼
In a distributed computing environment, a queue of jobs is maintained on a job database, along with parameters for each of the computing devices available to process the jobs. A task model defining the job is provided for generating a plurality of tasks comprising each job. The tasks are maintained
In a distributed computing environment, a queue of jobs is maintained on a job database, along with parameters for each of the computing devices available to process the jobs. A task model defining the job is provided for generating a plurality of tasks comprising each job. The tasks are maintained in a tuple database, along with the status of each task, indicating when each task is ready for processing. As a computing device becomes available to process a task, its capabilities are matched with those required to complete tasks that are ready for processing and the highest priority task meeting those requirements is assigned to the computing device to be processed. These steps are repeated until all the tasks required for the job have been processed, or the job is otherwise terminated.
대표청구항▼
The invention claimed is: 1. A method for processing a job using a plurality of computing devices that communicate over a network, the job having at least one task to be done on a computing device, comprising the steps of: (a) creating a first database that includes a queue of computing jobs in whi
The invention claimed is: 1. A method for processing a job using a plurality of computing devices that communicate over a network, the job having at least one task to be done on a computing device, comprising the steps of: (a) creating a first database that includes a queue of computing jobs in which the job is listed, and parameters for each of the plurality of computing devices, said parameters indicating capabilities and characteristics of each computing device; (b) assigning each computing device from the plurality of computing devices to at least one pool set, based upon the parameters of the computing device, each pool set including at least one pool; (c) creating a second database in which each task of the job is indicated, along with a status indicating when the task is ready for execution, relative to any other task of the job; (d) assigning each task of the job to a specific pool, based upon capabilities and characteristics needed for a computing device to carry out the task, to ensure that the task is able to be carried out by any computing device included in the specific pool to which the task is assigned; (e) as a computing device from the plurality of computing devices becomes available to carry out a task, enabling said computing device to automatically request a task assigned to any pool in a pool set of the computing device; (f) in response to the request, providing a task assigned to any pool in the pool set of the computing device to said computing device for execution by the computing device, if the status of said task in the second database indicates that the task is ready for execution; and (g) repeating steps (e) and (f) to complete the job. 2. The method of claim 1, further comprising the step of assigning a priority to each task that is ready for execution, as indicated by the status of the task in the second database. 3. The method of claim 2, wherein the step of providing a task includes the step of selecting a task with the highest priority for execution by the computing device that is available, from tasks assigned to any pool in the pool set of said computing device. 4. The method of claim 1, wherein steps (e) and (f) are repeated until one of the following has occurred: (a) the job is completed, as determined from the status of the tasks of the job; (b) a failure of a task has interrupted execution of the job; and (c) the job has been manually interrupted. 5. The method of claim 1, wherein each task of a job is defined in a markup language file. 6. The method of claim 5, wherein each job in the plurality of computing jobs is defined by a task model that is coded in a separate markup language text file. 7. The method of claim 5, wherein a common task model is used for jobs of a specific type. 8. The method of claim 1, further comprising the step of providing a database that includes a plurality of templates, each template defining data for a task that may be executed by the plurality of computing devices. 9. The method of claim 1, wherein the job comprises testing a software program, and each task corresponds to a different test of the software program. 10. The method of claim 1, wherein each task is defined using at least one markup language tag. 11. The method of claim 1, further comprising the steps of: (a) setting the status of any task that has failed to complete on a computing device, to indicate that the task has not yet been completed; and (b) enabling the task that was not completed to again be made available for execution on a computing device. 12. A memory medium having processor executable machine instructions for performing the steps of claim 1. 13. A method for managing processing of a plurality of jobs in a distributed computing environment using a plurality of computing devices to complete the plurality of jobs, comprising the steps of: (a) adding each of the plurality of jobs as the job is submitted, to a job queue that is maintained on a job database, said job database also including a list of the computing devices and parameters for each computing device comprising characteristics and capabilities of each computing device that form a basis for assigning each of the computing devices to a pool set, each pool set comprising at least one pool; (b) providing a task model for each job, said task model being used to generate a plurality of tasks of the job, said plurality of tasks being included in a task database; (c) enabling any available computing device to request that one of the plurality of tasks included in the task database be provided for execution by the available computing device; (d) in response to said request from an available computing device, automatically selecting one of the tasks from the task database for execution by the available computing device, said one of the tasks being selected based upon the parameters of the available computing device and corresponding requirements for executing the task selected, so as to ensure that said available computing device can execute the task that is being selected; and (e) repeating steps (c) and (d) to process the plurality of jobs in the job queue. 14. The method of claim 13, further comprising the step of accessing a plurality of task templates that include data for completing tasks of the plurality of jobs, to process the plurality of jobs. 15. The method of claim 13, further comprising the steps of: (a) determining that a task included in the plurality of task is a virtual task; (b) producing a copy of the virtual task; and (c) selecting and providing the copy of the virtual task to the available computing device for execution thereby. 16. The method of claim 13, further comprising the step of maintaining a status of each task in the task database, said status indicating whether the task is ready to be executed. 17. The method of claim 16, further comprising the steps of: (a) determining a relative priority for the tasks included in the task database that are ready to be executed; and (b) automatically selecting said one of the tasks from the task database with the highest priority, from among the tasks that are: (i) then ready to be executed, as indicated by the status of the task; and (ii) can be executed by the available computing device. 18. The method of claim 17, further comprising the step of: (a) assigning each task to at least one pool, based upon the characteristics and capabilities required of a computing device to execute the task; and (b) wherein the step of selecting said one of the tasks comprises the step of selecting a task for execution by the available computing device for which said at least one pool to which the task is assigned is included in a pool set assigned to the available computing device. 19. A memory medium having processor executable machine instructions for performing the steps of claim 13. 20. A control system for a distributed computing system having a plurality of computing devices that are used to process a job, comprising: (a) a memory in which a plurality of machine instructions are stored; (b) a network interface coupled in communication with the plurality of computing devices; and (c) a processor coupled to the memory and the network interface, said processor executing the machine instructions, to carry out a plurality of functions, including: (i) maintaining a first database that includes parameters for each of the plurality of computing devices in the plurality of computing devices, said parameters indicating capabilities and characteristics of each computing device; (ii) assigning each computing device in the plurality of computing devices to at least one pool set, based upon the parameters of the computing device, each pool set including at least one pool; (iii) generating a second database that includes a plurality of tasks of the job, each task having a status indicating whether the task is currently ready for execution by one of the computing devices; (iv) assigning each task of the job to a specific pool, based upon capabilities and characteristics needed of a computing device to carryout the task, to ensure that the task is able to be carried out by any computing device included in the specific pool to which the task is assigned; (v) receiving a request from any computing device from the plurality of computing devices that is currently available to carry out a task, to execute a task assigned to any pool in a pool set of the computing device; (vi) in response to the request, providing a task assigned to any pool in the pool set of the computing device to said computing device for execution by the computing device, if the status of said task in the second database indicates that the task is ready for execution; and (vii) repeating the preceding two steps until the job is completed or terminated. 21. The control system of claim 20, wherein the machine instructions further cause the processor to assign a priority to each task that is currently ready for execution, as indicated by the status of the task in the second database. 22. The control system of claim 21, wherein the machine instructions further cause the processor to assign a task with the highest priority for execution by the computing device that is available, said task being selected from tasks assigned to any pool in the pool set of said computing device. 23. The control system of claim 20, wherein the job is terminated if: (a) a failure of a task has interrupted execution of the job; or (b) the job has been manually interrupted. 24. The control system of claim 20, wherein each task of the job is defined in a markup language file. 25. The control system of claim 20, wherein the job is defined by a task model that is coded in a separate markup language text file. 26. The control system of claim 25, wherein the machine instructions further cause the processor to maintain a queue of jobs in the first database, wherein a common task model is used for jobs of a specific type. 27. The control system of claim 20, wherein the machine instructions further cause the processor to maintain a database having a plurality of templates, each template defining data for a task that may be executed by the plurality of computing devices. 28. The control system of claim 20, wherein the job comprises testing a software program, and each task corresponds to a different test of the software program. 29. The control system of claim 20, wherein each task is defined using at least one markup language tag. 30. The control system of claim 20, wherein the machine instructions further cause the processor to set the status of any task that has failed to complete on a computing device, to indicate that the task has not yet been completed, so that the task is again available for execution on a computing device. 31. A system for managing processing of a plurality of jobs in a distributed computing environment using a plurality of computing devices to complete the plurality of jobs, comprising: (a) a memory in which a plurality of machine instructions are stored; (b) a network interface coupled in communication with the plurality of computing devices; and (c) a processor coupled to the memory and the network interface, said processor executing the machine instructions, to carry out a plurality of functions, including: (i) maintaining a job database in which a job queue includes the plurality of jobs to be processed, said job database also including a list of the computing devices and parameters for each computing device comprising characteristics and capabilities of each computing device that form the basis of the assignment of each of the computing devices to a pool set, each pool set comprising at least one pool; (ii) using a task model input for each job to generate a plurality of tasks of the job, and maintaining a task database that includes said plurality of tasks; (iii) receiving a request from any available computing device be provided one of the plurality of tasks included in the task database, for execution by the available computing device; (iv) in response to said request from an available computing device, automatically selecting one of the tasks from the task database for execution by the available computing device, said one of the tasks being selected based upon the parameters of the available computing device and corresponding requirements for executing the task selected, so as to ensure that said available computing device can execute the task selected; and (v) repeating the preceding two steps as required to process the plurality of jobs in the job queue. 32. The system of claim 31, wherein the machine instructions further cause the processor to access a plurality of task templates that include task-related data, for completing the tasks of the plurality of jobs. 33. The system of claim 31, wherein the machine instructions further cause the processor to maintain a status of each task in the task database, while a job is being processed, said status indicating whether the task is ready to be executed. 34. The system of claim 31, wherein the machine instructions further cause the processor to: (a) determine a relative priority for the tasks included in the task database that are ready to be executed; and (b) automatically select said one of the tasks with the highest priority from the task database, from among the tasks that are: (i) then ready to be executed, as indicated by the status of the task; and (ii) can be executed by the available computing device. 35. The system of claim 34, wherein the machine instructions further cause the processor to: (a) assign each task to at least one pool, based upon the characteristics and capabilities required of a computing device to execute the task being assigned; and (b) select said task for execution by the available computing device so that said at least one pool to which the task is assigned is included in a pool set assigned to the available computing device.
연구과제 타임라인
LOADING...
LOADING...
LOADING...
LOADING...
LOADING...
이 특허에 인용된 특허 (15)
Salgado David L. ; Sklut Robert L., Apparatus and method for programming and/or controlling output of a job in a document processing system.
Feinberg Michael A. ; Feinberg Matthew A., Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network.
Kisor Greg, Method and system including a central computer that assigns tasks to idle workstations using availability schedules and computational capabilities.
Steven L. Armentrout ; James O'Connor ; James Gannon ; Brian Sletten ; Sean Cier ; Sarah Carlson ; Antony Davies ; Jonathan Davis ; Greg DuPertuis ; Scott McLoughlin, System and method for the establishment and the utilization of networked idle computational processing power.
Master, Paul L.; Hogenauer, Eugene; Scheuermann, Walter J., Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements.
Master, Paul L.; Hogenauer, Eugene; Scheuermann, Walter J., Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements.
Master, Paul L.; Hogenauer, Eugene; Scheuermann, Walter James, Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements.
Master, Paul L.; Hogenauer, Eugene; Scheuermann, Walter James, Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements.
Master, Paul L.; Hogenauer, Eugene; Scheuermann, Walter James, Adaptive integrated circuitry with heterogenous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements.
Master, Paul L.; Hogenauer, Eugene; Scheuermann, Walter James, Adaptive processor for performing an operation with simple and complex units each comprising configurably interconnected heterogeneous elements.
Master, Paul L.; Smith, Stephen J.; Watson, John, Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements.
Master, Paul L.; Smith, Stephen J.; Watson, John, Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements.
Master, Paul L.; Smith, Stephen J.; Watson, John, Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements.
Master, Paul L.; Smith, Stephen J.; Watson, John, Apparatus, system and method for configuration of adaptive integrated circuitry having fixed, application specific computational elements.
Master, Paul L.; Smith, Stephen J.; Watson, John, Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements.
Ousterhout, John; Delmas, Sven; Graham-Cumming, John; Melski, John Eric; Muzaffar, Usman; Stanton, Scott, Architecture and method for executing program builds.
Heidari, Ghobad; Chang, Kuor Hsin; Master, Paul L.; Hogenauer, Eugene B.; Scheuermann, Walter James, Communications module, device, and method for implementing a system acquisition function.
Sivasubramanian, Swaminathan; McAlister, Grant Alexander MacDonald; Franklin, Paul David; Sheth, Rajesh Sudhakar; Horsley, James, Control service for data management.
Sivasubramanian, Swaminathan; McAlister, Grant A. M.; Franklin, Paul David; Sheth, Rajesh Sudhakar; Horsley, James, Control service for relational data management.
Sivasubramanian, Swaminathan; McAlister, Grant Alexander MacDonald; Franklin, Paul David; Sheth, Rajesh Sudhakar; Horsley, James, Control service for relational data management.
Peh, Thomas; Schwedes, Holger; Steinau, Oliver M.; Stephan, Wolfgang, Efficient calculation of sets of distinct results in an information retrieval service.
Marwinski, Dirk S., Enterprise scheduler for jobs performable on the remote system by receiving user specified values for retrieved job definitions comprising metadata representation of properties of jobs.
Shiraishi, Keiko; Ikegaya, Tadahiko; Hirose, Akira; Michimura, Tadao, Linking information making device, linking information making method, recording medium having recorded a linking information making program, and document processing system therewith.
Meaney, Patrick J.; Al-Omari, Ra'ed Mohammad; Fee, Michael Francis; Mak, Pak-kin; Swaney, Scott Barnett, Method and apparatus for parallel and serial data transfer.
Plunkett, Robert T.; Heidari, Ghobad; Master, Paul L., Method and system for managing hardware resources to implement system functions using an adaptive computing architecture.
Plunkett, Robert T.; Heidari, Ghobad; Master, Paul L., Method and system for managing hardware resources to implement system functions using an adaptive computing architecture.
Plunkett, Robert T.; Heidari, Ghobad; Master, Paul L., Method and system for managing hardware resources to implement system functions using an adaptive computing architecture.
Plunkett, Robert T.; Heidari, Ghobad; Master, Paul L., Method and system for managing hardware resources to implement system functions using an adaptive computing architecture.
Master,Paul L.; Hogenauer,Eugene; Wu,Bicheng William; Chuang,Dan MingLun; Freeman Benson,Bjorn, Method, system and program for developing and scheduling adaptive integrated circuity and corresponding control or configuration information.
Sivasubramanian, Swaminathan; McAlister, Grant Alexander MacDonald; Hunter, Jr., Barry B.; Pol, Parikshit S., Monitoring and automated recovery of data instances.
Mayo, Robert N.; Ranganathan, Parthasarathy; Stets, Jr., Robert J.; Wallach, Deborah A., Priority analysis of access transactions in an information system.
Ousterhout, John; Wallgren, Anders; Tamhankar, Sandeep; Stanton, Scott; Muzaffar, Usman, Process automation system and method having a hierarchical architecture with multiple tiers.
Rangaswamy, Ravi; Nainani, Bhagat, System and method for flexible chaining of distinct workflow task instances in a business process execution language workflow.
Ousterhout, John; Delmas, Sven; Melski, John Eric; Stanton, Scott; Tamhankar, Sandeep, System and method for intelligently distributing source files within a distributed program build architecture.
Braverman, Avner; Adda, Michael; Amar, Lior; Khermosh, Lior; Finer, Eli; Zuckerman, Gal, Systems and methods for automatic generation of parallel data processing code.
Braverman, Avner; Adda, Michael; Amar, Lior; Khermosh, Lior; Finer, Eli; Zuckerman, Gal, Systems and methods for efficiently implementing functional commands in a data processing system.
Adda, Michael; Amar, Lior; Braverman, Avner; Khermosh, Lior; Zuckerman, Gal, Systems and methods for processing data sets according to an instructed order.
Adda, Michael; Braverman, Avner; Khermosh, Lior; Zuckerman, Gal, Systems and methods to achieve load balancing among a plurality of compute elements accessing a shared memory pool.
Braverman, Avner; Shalvi, Ofir; Khermosh, Lior; Bar-Or, Ofer; Oren, Eyal Benjamin Raz; Zuckerman, Gal, Systems and methods to communicate with external destinations via a memory network.
Adda, Michael; Braverman, Avner; Khermosh, Lior; Zuckerman, Gal, Systems and methods to distributively process a plurality of data sets stored on a plurality of memory modules.
Naborskyy,Andriy; Ilyasov,Oleg, Tracking states of communication between PS/2 hardware and hardware drivers within an extensible firmware interface environment.
Chan, Elwin Yam Ming; Stefansson, H. Narfi; O'Callaghan, Portia; Dean, Loren, Use of dynamic profiles for creating and using a distributed computing environment.
Adda, Michael; Braverman, Avner; Amar, Lior; Aloni, Dan; Khermosh, Lior; Zuckerman, Gal, Utilizing a cache mechanism by copying a data set from a cache-disabled memory location to a cache-enabled memory location.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.