US20010042090A1 - Thread based governor for time scheduled process application - Google Patents
Thread based governor for time scheduled process application Download PDFInfo
- Publication number
- US20010042090A1 US20010042090A1 US09/086,147 US8614798A US2001042090A1 US 20010042090 A1 US20010042090 A1 US 20010042090A1 US 8614798 A US8614798 A US 8614798A US 2001042090 A1 US2001042090 A1 US 2001042090A1
- Authority
- US
- United States
- Prior art keywords
- execution
- queue
- priority
- task
- ordered
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Definitions
- the present invention pertains generally to network management systems, and more particularly, to a method and system for governing the number of concurrently executing processes in a process scheduler.
- the maintenance of a computer network is typically performed under the control of a network management system.
- the network management system monitors the occurrences of certain events across the system, such as network node utilization and disk I/O performance.
- reporting applications may be used to organize and present network event information into a format useful to the system administrator. These reports, depending on the type of information gathered, may be generated on a pre-determined schedule, e.g., once every ten minutes, once daily, or once weekly.
- scheduling applications that schedule the execution of processes such as report generating applications causes execution of the scheduled applications to occur at precisely the time that they are scheduled.
- This technique can be problematic. Due to the cyclical nature of work week timing, there is a very high propensity for requests to be clustered around certain times of the day. For example, it often makes sense to generate daily reports at exactly midnight so that data used in generating those reports need not necessarily be saved from day to day.
- the performance of the network system may be adversely impacted due to not enough system resources being available to service all of the executing processes. System resources must then be time-shared according to a priority scheme across all executing processes, resulting in very slow performance for all processes or at least those that have low priority.
- the present invention is a thread-based scheduling governor that regulates the number of scheduled tasks that are executed concurrently.
- the schedule governor of the invention is implemented using threads.
- a task goes through a life cycle. In infant form, it is given a slot on the file system as a “request file”; it graduates from “in-file” form to “in-memory” form, where it is maintained as an idle thread in a priority-ordered queue.
- the task is allotted a space, if available, in a capped in-service queue, where the task graduates from “in-memory” form to “process execution” form.
- the thread launches the process(es) to accomplish the task, and monitors them for their completion.
- the thread cleans up its in-service queue entry to allow another pending task to occupy the regulated cap on dispatched processes. Accordingly, a thread maintains control over a task, but system resources do not become dedicated to the processes required by the task until a process execution slot in a capacity-governed in-service queue becomes available.
- all task requests that are scheduled to be executed within a pre-specified interval of time are serviced on a first-in first-out (FIFO) basis and use absolute, or “epoch”, time according to their scheduled position in time.
- the scheduling governor prevents overloads of the processing resources of the host computer by limiting the number of concurrently executing processes to a pre-specified capacity dimension. Task requests that are unable to be run due to the governed cap on the number of allowed concurrently executing processes are deferred until one of the fixed number of execution slots becomes available. Accordingly, the scheduling governor allows each scheduled task to be executed as close to its scheduled time as possible yet prevents system resource overload to improve efficiency and performance.
- FIG. 1 is a block diagram of a processing system in which the scheduling governor of the invention operates
- FIG. 2 is a flowchart describing the steps performed by the governed scheduling system of the invention.
- FIG. 3 is a diagram of the structure of an example file directory existing on a system
- FIG. 4 illustrates an example format of a request file
- FIG. 5 is a data model of one preferred embodiment of the invention.
- FIG. 6 is a flowchart illustrating the steps performed by a search utility that registers schedule requests with the scheduler process.
- FIG. 7 is a flow diagram of the method of operation of the data model of FIG. 5.
- FIG. 1 is a block diagram of a processing system 100 in which the scheduling governor of the invention operates.
- System 100 includes a service manager 102 , a solicitor function 104 , a file directory system 106 , a Priority-Ordered queue 108 , and an In-Service queue 110 .
- Solicitor function 104 locates and queues task requests into Priority-Ordered queue 108 as specified in file directory system 106 which will be due to be executed within a time interval specified by service manager 102 .
- Service manager 102 only accepts task requests from Priority-Ordered queue 108 that are due within the specified time interval. All other task requests are either discarded until discovered on a later search by solicitor function 104 .
- Task requests that are discovered by solicitor function 104 to be scheduled within the pre-specified time interval are entered into Priority-Ordered queue 108 in sorted time order, where one end of the queue represents the current time and the other end of the queue represents the length of the time interval before the current time.
- tasks are transferred from Priority-Ordered queue 108 to In-Service queue 110 on a first-in first-out (FIFO) basis.
- Service manager 102 manages an In-Service queue 110 .
- In-Service queue includes n execution entries, where n is the pre-specified maximum number of scheduled tasks that are allowed to be executed concurrently.
- service manager 102 transfers the highest priority (in the preferred embodiment, priority is time-ordered) task request from priority-ordered queue to the available execution entry in In-Service queue, and execution of the task request commences.
- priority in the preferred embodiment, priority is time-ordered
- a task request completes execution, it is removed from the In-Service queue, and if its next execution time does not exceed the pre-specified time interval of the solicitor function 104 , is re-entered into Priority-Ordered queue 108 in sorted position. If its next execution time does exceed the pre-specified time interval, the task request is discharged from memory and its lifecycle completes.
- FIG. 2 is a flowchart describing the steps performed by the governed scheduling system of the invention.
- the steps performed include a first step 202 of discovering a task request that is due to be executed within the pre-specified time interval.
- Task requests that are discovered to be scheduled within the pre-specified time interval are entered into a priority-ordered queue 108 in sorted time order in step 204 .
- In-Service queue 110 is monitored in step 206 until an execution entry in In-Service queue becomes available. Once an available execution entry is discovered, the highest priority task request from priority-ordered queue is transferred to the available execution entry in In-Service queue in step 208 . This is contingent on its next time due being less than or equal to the current time.
- the priority of a task request is measured in terms of time.
- execution of the task request commences. Steps 202 through 210 are repeated continuously.
- a task request completes execution, as determined in step 212 , it is removed from the In-Service queue in step 214 . It is determined in step 216 whether its next execution time exceeds the pre-specified time interval. If its next execution time does not exceed the pre-specified time interval, the task request is re-entered into priority-ordered queue in sorted position in step 204 , and the cycle is repeated. If its next execution time does exceed the pre-specified time interval, the task request is discharged from memory in step 220 .
- FIG. 3 is a diagram of the structure of an example file directory tree 300 existing in file directory system 106 .
- File directory tree 300 illustrates the hierarchical storage of individual request files in the network file system.
- Each leaf directory labeled in the illustrative embodiment as “Router”, “Nodes”, “Site”, “Subnet”, “Events by Severity”, and “Threshold Violations”, contains a request file, each of a name recognizable by the search utility (i.e., Solicitor function 104 ), labeled “Request_File” in FIG. 3, that contain command lines for executing a particular task, and an accompanying schedule, discussed in FIG. 4, indicating when to execute the task on a periodic basis.
- Each request file is accompanied, in the same directory where the request file is found, by all files necessary to execute the request.
- FIG. 4 illustrates an example format of a request file 400 that resides in file directory system 106 .
- the task to be performed and schedule for performing the task are indicated according to a pre-defined format.
- a schedule is placed on a line, e.g., 402 ;
- a command line executable program is placed on one or more next lines 404 , and if required for execution, a command constructor code is placed on a line 406 following the command lines 402 , and a command destructor code is placed on a line 408 following line 406 if it exists or lines 402 otherwise.
- the request file must include a schedule line 402 and a command line 404 ; however, their position within the file is not fixed.
- a set of utilities parses request file 400 into a set of name/value/attribute tuples of information.
- the name/value/attribute tuple of line 402 of request file 400 would yield:
- a set of access control utilities is also provided to create a semaphore file adjacent to the request file being parsed. Cooperating programs and threads yield to the presence of the semaphore file. Solicitor 520 and Service Manager 516 , discussed with respect to FIG. 5, are examples of threads which cooperate.
- FIG. 5 is a data model 500 of the implementation of a preferred embodiment of the invention.
- Data model 500 is a set of defined classes, implemented in the Java® programming language in the preferred embodiment, that are dynamically instantiated for the lifetime of the scheduling thread.
- Scheduler 502 is the starting point for DispatcherQuery 508 navigation.
- DispatcherClient 506 objects make method calls on method server_socket of Scheduler 502 , they are serviced by DispatchedThread 510 to perform the actual query in a thread within Scheduler 502 .
- DispatcherClients 506 are able to obtain information as to the socket address port of their Scheduler 502 , send it a class name and arguments to load a DispatcherQuery 508 on the server side, and with for the results to come back through the standard output “stdout”.
- DispatcherThreads 510 provide a thread of execution for DispatcherQueries 508 to perform their work within the process space fo Scheduler 502 .
- DispatcherThread 510 is itself an instance of DispatcherQuery 508 , but is unique in the sense that it represents the head of the query. DispatcherQuery 508 is a query to be performed on Scheduler 502 identified to it through the DispatcherThread 510 .
- ServiceManager 516 is an abstract base class that provides the thread but relys on its derived implementaitons to know what file they seek and “know how” on how to service them. Once request files are discovered that contain task requests for this object to perform, they are placed in a PriorityOrderedQueue 550 to await dispatch to InService Queue 548 for execution.
- Solicitor 520 is an abstract base class that always comes paired with a derived class of ServiceManager 516 . As ServiceManagers 516 are instantiated, they are given an opportunity to load their Solicitor 520 . A Solicitor 520 searches the filesystem for a request file of a predefined name agreed upon with its ServiceManager 516 . Solicitor 520 typically looks for files that need to begin their program execution within a specified look_ahead_interval.
- FIG. 6 is a flowchart illustrating the steps performed by a solicitor 520 that registers schedule requests with the scheduler process.
- solicitor 520 traverses the file directory tree in a step 602 , typically using a depth-first search, looking for request files.
- step 604 solicitor 520 registers the task request specified in the contents of the request file with service manager 516 .
- solicitor 520 registers the task request by determining if the task request is due to be scheduled within a specified interval of time, and, if so, placing the task request in a priority ordered queue 550 .
- the solicitor 520 determines whether any portions of file directory tree remain to be searched in a step 606 , and repeats steps 602 and 604 until the entire file directory system 106 has been searched.
- a solicitor function is employed to seek out request files, all of a specific given name (e.g., request.properties) from a base directory specified at runtime. For example, with reference to file directory tree 300 , the solicitor function may be instructed to begin its search from directory “Base Directory”. Solicitor function searches the tree, using a depth-first search algorithm, for files having the name “request.properties”. When a file of this name is encountered, solicitor 520 parses the contents of the file to retrieve the schedule and command line for the process to be scheduled.
- a specific given name e.g., request.properties
- RequestManager 556 is a derived implementation of abstract base class ServiceManager 516 .
- RequestManager 556 manages a set of ServiceQueue 546 known only to it and not to its base class, which assists it in keeping track of what state each job it is servicing is in. Some jobs may be executing (i.e., exist in the InServiceQueue 548 ) while others may be waiting in line to be performed (i.e., exist in the PriorityOrderedQueue 550 ).
- ServiceQueue 546 is an abstract interface. ServiceQueue 546 requires that queues implemented to service RequestManager 556 know how to properly add and remove entries in the RequestManager 556 . As entries are manipulated, ServiceManager 516 must be notified of the changes as it keeps a list of current_requests known in all queues. Both InServiceQueue 548 and PriorityOrderedQueue 550 are derived from this object to enforce correct management of ScheduleEntries 540 .
- TimeEntry 536 is an object/data structure which defines a time schedule in segmented characteristics which complement the defined format of the request file.
- ScheduleEntries 540 are maintained in ServiceQueues 546 .
- ScheduleEntries 540 represent place holders for Requests 532 .
- a ScheduleEntry 540 can be queried at any time to deterermine when it is “due” to be scheduled.
- the one incarnation of a ScheduleEntry 540 may be used to load and execute a unique Request 532 on the file system.
- the name of the ScheduleEntry 540 is the location of one unique Request 532 on the file system that may be manipulated as many times as necessary.
- Requests 532 are lockable objects which have persistence in files of the file systems. As they are loaded through their constructors, a lock is obtained through its base class FileAccessCtlr 528 . This safety measure is necessary in a multi-threaded and multi-process environment seeking to modify and have sole access rights.
- Requests 532 may be loaded to examine their contents or execute the command based on its prescribed schedule.
- FIG. 7 is a flow diagram of the method of operation 700 of data model 500 .
- Solicitor 520 searches for request files. When a request file 702 is found, the request file 702 is parsed to extract the schedule and command line to be executed. The “next_time_due”, which is the next time the command is scheduled to be executed, is calculated in step 704 . If the request produced in step 704 meets the time criteria required for inclusion in the TimeOrderedQueue 714 , as determined in step 705 , its ScheduleEntry (i.e., abbreviated form of the Request) is added to TimeOrderedQueue 7 l 4 in step 708 .
- ScheduleEntry i.e., abbreviated form of the Request
- step 705 the next_time_due is compared to a lookahead interval to determine whether the ScheduleEntry 706 should be added to the PriorityOrderedQueue 714 .
- the lookahead interval 710 is a pre-specified time interval.
- Solicitor 520 is a thread that wakes up every lookahead interval, discovers request files on the portion of the system file directory that it is responsible for, and then goes to sleep again until the beginning of the next lookahead interval. Solicitor 520 repeats this cycle as long as the scheduling governor of the invention is running.
- PriorityOrderedQueue 714 is a first-in first-out (FIFO) queue sorted in order of time, and the priority associated with a given ScheduleEntry 706 is indicated simply by the position of the ScheduleEntry 706 in the PriorityOrderedQueue 714 .
- the ScheduleEntries 540 contained in PriorityOrderedQueue 714 are positioned in the order in which they are to be launched by ServiceManager 516 . If the next_time_due for the ScheduleEntry 706 is not due within the pre-specified lookahead interval, it is discarded from memory, or alternatively, is restored to its sorted position in the PriorityOrderedQueue 714 .
- ServiceManager 516 is a thread that wakes up and executes on a schedule, e.g., every minute on the minute.
- ServiceManager 516 When ServiceManager 516 wakes up, it compares the current time, or launch time 720 , with the next_time_due of the ScheduleEntries 540 contained in PriorityOrderedQueue 714 . If the launch time 720 matches the next_time_due of a ScheduleEntry 540 contained in the time-ordered queue 714 , ServiceManager 516 creates an instance 722 of a Request 532 in a step 718 .
- Service_manager method communicates in steps 724 with ServiceQueue 546 to add Request 722 to InServiceQueue 750 .
- Request 722 is added to InServiceQueue 750 in step 748 . If InServiceQueue 750 is full, meaning that the maximum number of concurrent processes are currently executing, Request 722 is returned to TimeOrderedQueue 714 . In the alternative, Request 722 is added to a DeferredQueue 728 . Just before ServiceManager 516 thread goes to sleep, it restores any existing Requests 722 in DeferredQueue 728 to PriorityOrderedQueue 714 . In this embodiment, Requests 722 that are unable to be added to InServiceQueue prior to their being due, do not get executed. Accordingly, arbitration of which Requests get executed when too many Requests are clustered around the same time due is left to the system administrator or some other method of negotiation between competing interests.
- a Request thread is launched to execute the command associated with the Request 722 .
- the Request thread monitors the process that it has launched, and once the process completes, the Request thread calls a request complete function in step 734 , which captures the process' exit code, standard output file and standard error file.
- the Request 722 is given an opportunity to be fed back into PriorityOrderedQueue 714 by determining in step 708 whether its next_time_due is within the current lookahead interval. If it is not, the lifecycle of the thread of Request 722 ends.
- a remove function of ServiceQueue 546 removes the Request 722 from InServiceQueue 750 , which makes available an execution entry in InServiceQueue 750 for another Request 722 from PriorityOrderedQueue 714 .
- InServiceQueue 750 is created in step 744 , having a size specified by a user-defined capacity dimension 742 .
- Capaicty dimension 742 operates as the governed cap on number of concurrently executing processes allowed at any given time. Accordingly, with respect to FIG. 1, the capacity dimension 742 is set to N, and In Service Queue 110 comprises N execution entries.
- the scheduling governor of the invention provides an effective method for limiting the number of simultaneously scheduled task requests to a maximum number of concurrently executing task requests.
Abstract
Description
- The present invention pertains generally to network management systems, and more particularly, to a method and system for governing the number of concurrently executing processes in a process scheduler.
- The maintenance of a computer network is typically performed under the control of a network management system. The network management system monitors the occurrences of certain events across the system, such as network node utilization and disk I/O performance. To assist in network maintenance, reporting applications may be used to organize and present network event information into a format useful to the system administrator. These reports, depending on the type of information gathered, may be generated on a pre-determined schedule, e.g., once every ten minutes, once daily, or once weekly.
- In the prior art, scheduling applications that schedule the execution of processes such as report generating applications causes execution of the scheduled applications to occur at precisely the time that they are scheduled. This technique can be problematic. Due to the cyclical nature of work week timing, there is a very high propensity for requests to be clustered around certain times of the day. For example, it often makes sense to generate daily reports at exactly midnight so that data used in generating those reports need not necessarily be saved from day to day. When too many processes are scheduled at the same time, and hence concurrently run, the performance of the network system may be adversely impacted due to not enough system resources being available to service all of the executing processes. System resources must then be time-shared according to a priority scheme across all executing processes, resulting in very slow performance for all processes or at least those that have low priority.
- Accordingly, a need exists for a method for governing the number of allowed concurrently executing processes launched by the scheduler, to thereby increase system performance in the face of a heavy schedule load.
- The present invention is a thread-based scheduling governor that regulates the number of scheduled tasks that are executed concurrently. The schedule governor of the invention is implemented using threads. In the system of the invention, a task goes through a life cycle. In infant form, it is given a slot on the file system as a “request file”; it graduates from “in-file” form to “in-memory” form, where it is maintained as an idle thread in a priority-ordered queue. When the time comes for the task to be executed, the task is allotted a space, if available, in a capped in-service queue, where the task graduates from “in-memory” form to “process execution” form. When a task is entered in the in-service queue, the thread launches the process(es) to accomplish the task, and monitors them for their completion. Upon completion of the monitored processes, the thread cleans up its in-service queue entry to allow another pending task to occupy the regulated cap on dispatched processes. Accordingly, a thread maintains control over a task, but system resources do not become dedicated to the processes required by the task until a process execution slot in a capacity-governed in-service queue becomes available.
- In accordance with the invention, all task requests that are scheduled to be executed within a pre-specified interval of time are serviced on a first-in first-out (FIFO) basis and use absolute, or “epoch”, time according to their scheduled position in time. During heavy load times, the scheduling governor prevents overloads of the processing resources of the host computer by limiting the number of concurrently executing processes to a pre-specified capacity dimension. Task requests that are unable to be run due to the governed cap on the number of allowed concurrently executing processes are deferred until one of the fixed number of execution slots becomes available. Accordingly, the scheduling governor allows each scheduled task to be executed as close to its scheduled time as possible yet prevents system resource overload to improve efficiency and performance.
- The invention will be better understood from a reading of the following detailed description taken in conjunction with the drawing in which like reference designators are used to designate like elements, and in which:
- FIG. 1 is a block diagram of a processing system in which the scheduling governor of the invention operates;
- FIG. 2 is a flowchart describing the steps performed by the governed scheduling system of the invention;
- FIG. 3 is a diagram of the structure of an example file directory existing on a system;
- FIG. 4 illustrates an example format of a request file;
- FIG. 5 is a data model of one preferred embodiment of the invention;
- FIG. 6 is a flowchart illustrating the steps performed by a search utility that registers schedule requests with the scheduler process; and
- FIG. 7 is a flow diagram of the method of operation of the data model of FIG. 5.
- FIG. 1 is a block diagram of a processing system100 in which the scheduling governor of the invention operates. System 100 includes a
service manager 102, asolicitor function 104, afile directory system 106, a Priority-Orderedqueue 108, and an In-Service queue 110.Solicitor function 104 locates and queues task requests into Priority-Orderedqueue 108 as specified infile directory system 106 which will be due to be executed within a time interval specified byservice manager 102.Service manager 102 only accepts task requests from Priority-Orderedqueue 108 that are due within the specified time interval. All other task requests are either discarded until discovered on a later search bysolicitor function 104. Task requests that are discovered bysolicitor function 104 to be scheduled within the pre-specified time interval are entered into Priority-Orderedqueue 108 in sorted time order, where one end of the queue represents the current time and the other end of the queue represents the length of the time interval before the current time. Thus, tasks are transferred from Priority-Orderedqueue 108 to In-Service queue 110 on a first-in first-out (FIFO) basis.Service manager 102 manages an In-Service queue 110. In-Service queue includes n execution entries, where n is the pre-specified maximum number of scheduled tasks that are allowed to be executed concurrently. When any execution entry in In-Service queue is empty (i.e., becomes available),service manager 102 transfers the highest priority (in the preferred embodiment, priority is time-ordered) task request from priority-ordered queue to the available execution entry in In-Service queue, and execution of the task request commences. When a task request completes execution, it is removed from the In-Service queue, and if its next execution time does not exceed the pre-specified time interval of thesolicitor function 104, is re-entered into Priority-Orderedqueue 108 in sorted position. If its next execution time does exceed the pre-specified time interval, the task request is discharged from memory and its lifecycle completes. - FIG. 2 is a flowchart describing the steps performed by the governed scheduling system of the invention. As shown, the steps performed include a
first step 202 of discovering a task request that is due to be executed within the pre-specified time interval. Task requests that are discovered to be scheduled within the pre-specified time interval are entered into a priority-orderedqueue 108 in sorted time order instep 204. In-Service queue 110 is monitored instep 206 until an execution entry in In-Service queue becomes available. Once an available execution entry is discovered, the highest priority task request from priority-ordered queue is transferred to the available execution entry in In-Service queue instep 208. This is contingent on its next time due being less than or equal to the current time. In the preferred embodiment, the priority of a task request is measured in terms of time. In step 210, execution of the task request commences.Steps 202 through 210 are repeated continuously. - When a task request completes execution, as determined in
step 212, it is removed from the In-Service queue instep 214. It is determined instep 216 whether its next execution time exceeds the pre-specified time interval. If its next execution time does not exceed the pre-specified time interval, the task request is re-entered into priority-ordered queue in sorted position instep 204, and the cycle is repeated. If its next execution time does exceed the pre-specified time interval, the task request is discharged from memory instep 220. - FIG. 3 is a diagram of the structure of an example file directory tree300 existing in
file directory system 106. File directory tree 300 illustrates the hierarchical storage of individual request files in the network file system. Each leaf directory, labeled in the illustrative embodiment as “Router”, “Nodes”, “Site”, “Subnet”, “Events by Severity”, and “Threshold Violations”, contains a request file, each of a name recognizable by the search utility (i.e., Solicitor function 104), labeled “Request_File” in FIG. 3, that contain command lines for executing a particular task, and an accompanying schedule, discussed in FIG. 4, indicating when to execute the task on a periodic basis. Each request file is accompanied, in the same directory where the request file is found, by all files necessary to execute the request. - FIG. 4 illustrates an example format of a
request file 400 that resides infile directory system 106. In accordance with one embodiment of the request file format, the task to be performed and schedule for performing the task are indicated according to a pre-defined format. A schedule is placed on a line, e.g., 402; a command line executable program is placed on one or morenext lines 404, and if required for execution, a command constructor code is placed on aline 406 following thecommand lines 402, and a command destructor code is placed on a line 408 followingline 406 if it exists orlines 402 otherwise. In the preferred embodiment, the request file must include aschedule line 402 and acommand line 404; however, their position within the file is not fixed. A set of utilities parsesrequest file 400 into a set of name/value/attribute tuples of information. In the illustrative embodiment, the name/value/attribute tuple ofline 402 ofrequest file 400 would yield: - Name=“schedule”
- Value=“10 0-23 * * *”
- Attrubute=“10 min after every hour”
- A set of access control utilities is also provided to create a semaphore file adjacent to the request file being parsed. Cooperating programs and threads yield to the presence of the semaphore file.
Solicitor 520 andService Manager 516, discussed with respect to FIG. 5, are examples of threads which cooperate. - FIG. 5 is a data model500 of the implementation of a preferred embodiment of the invention. Data model 500 is a set of defined classes, implemented in the Java® programming language in the preferred embodiment, that are dynamically instantiated for the lifetime of the scheduling thread.
-
Scheduler 502 is the starting point forDispatcherQuery 508 navigation. AsDispatcherClient 506 objects make method calls on method server_socket ofScheduler 502, they are serviced byDispatchedThread 510 to perform the actual query in a thread withinScheduler 502.DispatcherClients 506 are able to obtain information as to the socket address port of theirScheduler 502, send it a class name and arguments to load aDispatcherQuery 508 on the server side, and with for the results to come back through the standard output “stdout”.DispatcherThreads 510 provide a thread of execution forDispatcherQueries 508 to perform their work within the process space foScheduler 502.DispatcherThread 510 is itself an instance ofDispatcherQuery 508, but is unique in the sense that it represents the head of the query.DispatcherQuery 508 is a query to be performed onScheduler 502 identified to it through theDispatcherThread 510. -
ServiceManager 516 is an abstract base class that provides the thread but relys on its derived implementaitons to know what file they seek and “know how” on how to service them. Once request files are discovered that contain task requests for this object to perform, they are placed in aPriorityOrderedQueue 550 to await dispatch toInService Queue 548 for execution. -
Solicitor 520 is an abstract base class that always comes paired with a derived class ofServiceManager 516. AsServiceManagers 516 are instantiated, they are given an opportunity to load theirSolicitor 520. ASolicitor 520 searches the filesystem for a request file of a predefined name agreed upon with itsServiceManager 516.Solicitor 520 typically looks for files that need to begin their program execution within a specified look_ahead_interval. - FIG. 6 is a flowchart illustrating the steps performed by a
solicitor 520 that registers schedule requests with the scheduler process. As shown,solicitor 520 traverses the file directory tree in astep 602, typically using a depth-first search, looking for request files. When a request file is found, instep 604solicitor 520 registers the task request specified in the contents of the request file withservice manager 516. In the preferred embodiment,solicitor 520 registers the task request by determining if the task request is due to be scheduled within a specified interval of time, and, if so, placing the task request in a priority orderedqueue 550. Thesolicitor 520 determines whether any portions of file directory tree remain to be searched in astep 606, and repeatssteps file directory system 106 has been searched. In one implementation, a solicitor function is employed to seek out request files, all of a specific given name (e.g., request.properties) from a base directory specified at runtime. For example, with reference to file directory tree 300, the solicitor function may be instructed to begin its search from directory “Base Directory”. Solicitor function searches the tree, using a depth-first search algorithm, for files having the name “request.properties”. When a file of this name is encountered,solicitor 520 parses the contents of the file to retrieve the schedule and command line for the process to be scheduled. -
RequestManager 556 is a derived implementation of abstractbase class ServiceManager 516.RequestManager 556 manages a set ofServiceQueue 546 known only to it and not to its base class, which assists it in keeping track of what state each job it is servicing is in. Some jobs may be executing (i.e., exist in the InServiceQueue 548) while others may be waiting in line to be performed (i.e., exist in the PriorityOrderedQueue 550). -
ServiceQueue 546 is an abstract interface.ServiceQueue 546 requires that queues implemented to serviceRequestManager 556 know how to properly add and remove entries in theRequestManager 556. As entries are manipulated,ServiceManager 516 must be notified of the changes as it keeps a list of current_requests known in all queues. BothInServiceQueue 548 andPriorityOrderedQueue 550 are derived from this object to enforce correct management ofScheduleEntries 540. -
TimeEntry 536 is an object/data structure which defines a time schedule in segmented characteristics which complement the defined format of the request file. -
ScheduleEntries 540 are maintained inServiceQueues 546.ScheduleEntries 540 represent place holders forRequests 532. AScheduleEntry 540 can be queried at any time to deterermine when it is “due” to be scheduled. The one incarnation of aScheduleEntry 540 may be used to load and execute aunique Request 532 on the file system. In other words, the name of theScheduleEntry 540 is the location of oneunique Request 532 on the file system that may be manipulated as many times as necessary.Requests 532 are lockable objects which have persistence in files of the file systems. As they are loaded through their constructors, a lock is obtained through itsbase class FileAccessCtlr 528. This safety measure is necessary in a multi-threaded and multi-process environment seeking to modify and have sole access rights.Requests 532 may be loaded to examine their contents or execute the command based on its prescribed schedule. - FIG. 7 is a flow diagram of the method of operation700 of data model 500.
Solicitor 520 searches for request files. When a request file 702 is found, the request file 702 is parsed to extract the schedule and command line to be executed. The “next_time_due”, which is the next time the command is scheduled to be executed, is calculated instep 704. If the request produced instep 704 meets the time criteria required for inclusion in theTimeOrderedQueue 714, as determined instep 705, its ScheduleEntry (i.e., abbreviated form of the Request) is added to TimeOrderedQueue7l4 in step 708. Instep 705, the next_time_due is compared to a lookahead interval to determine whether theScheduleEntry 706 should be added to thePriorityOrderedQueue 714. Thelookahead interval 710 is a pre-specified time interval.Solicitor 520 is a thread that wakes up every lookahead interval, discovers request files on the portion of the system file directory that it is responsible for, and then goes to sleep again until the beginning of the next lookahead interval.Solicitor 520 repeats this cycle as long as the scheduling governor of the invention is running. If, in step 708, the next_time_due for theScheduleEntry 706 is within the pre-specified lookahead interval, a priority in terms of time is associated with theScheduleEntry 706 and it is added to thePriorityOrderedQueue 714. In the preferred embodiment,PriorityOrderedQueue 714 is a first-in first-out (FIFO) queue sorted in order of time, and the priority associated with a givenScheduleEntry 706 is indicated simply by the position of theScheduleEntry 706 in thePriorityOrderedQueue 714. In other words, theScheduleEntries 540 contained inPriorityOrderedQueue 714 are positioned in the order in which they are to be launched byServiceManager 516. If the next_time_due for theScheduleEntry 706 is not due within the pre-specified lookahead interval, it is discarded from memory, or alternatively, is restored to its sorted position in thePriorityOrderedQueue 714. -
ServiceManager 516 is a thread that wakes up and executes on a schedule, e.g., every minute on the minute. WhenServiceManager 516 wakes up, it compares the current time, or launchtime 720, with the next_time_due of theScheduleEntries 540 contained inPriorityOrderedQueue 714. If thelaunch time 720 matches the next_time_due of aScheduleEntry 540 contained in the time-orderedqueue 714,ServiceManager 516 creates aninstance 722 of aRequest 532 in astep 718. Service_manager method communicates in steps 724 withServiceQueue 546 to addRequest 722 toInServiceQueue 750. IfInServiceQueue 750 has an available execution entry,Request 722 is added toInServiceQueue 750 instep 748. IfInServiceQueue 750 is full, meaning that the maximum number of concurrent processes are currently executing,Request 722 is returned toTimeOrderedQueue 714. In the alternative,Request 722 is added to aDeferredQueue 728. Just beforeServiceManager 516 thread goes to sleep, it restores any existingRequests 722 inDeferredQueue 728 toPriorityOrderedQueue 714. In this embodiment, Requests 722 that are unable to be added to InServiceQueue prior to their being due, do not get executed. Accordingly, arbitration of which Requests get executed when too many Requests are clustered around the same time due is left to the system administrator or some other method of negotiation between competing interests. - When
Requests 722 are added toInServiceQueue 750, a Request thread is launched to execute the command associated with theRequest 722. The Request thread monitors the process that it has launched, and once the process completes, the Request thread calls a request complete function instep 734, which captures the process' exit code, standard output file and standard error file. Duringstep 734, theRequest 722 is given an opportunity to be fed back intoPriorityOrderedQueue 714 by determining in step 708 whether its next_time_due is within the current lookahead interval. If it is not, the lifecycle of the thread ofRequest 722 ends. In step 738 a remove function ofServiceQueue 546 removes theRequest 722 fromInServiceQueue 750, which makes available an execution entry inInServiceQueue 750 for anotherRequest 722 fromPriorityOrderedQueue 714. - When the scheduling governor is first started up,
InServiceQueue 750 is created instep 744, having a size specified by a user-definedcapacity dimension 742.Capaicty dimension 742 operates as the governed cap on number of concurrently executing processes allowed at any given time. Accordingly, with respect to FIG. 1, thecapacity dimension 742 is set to N, and InService Queue 110 comprises N execution entries. - It will be appreciated from the above detailed description that the scheduling governor of the invention provides an effective method for limiting the number of simultaneously scheduled task requests to a maximum number of concurrently executing task requests.
- Although the invention has been described in terms of the illustrative embodiments, it will be appreciated by those skilled in the art that various changes and modifications may be made to the illustrative embodiments without departing from the spirit or scope of the invention. It is intended that the scope of the invention not be limited in any way to the illustrative embodiment shown and described but that the invention be limited only by the claims appended hereto.
Claims (7)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/086,147 US6411982B2 (en) | 1998-05-28 | 1998-05-28 | Thread based governor for time scheduled process execution |
EP98123604A EP0961204A3 (en) | 1998-05-28 | 1998-12-10 | Thread based governor for time scheduled process execution |
JP11146012A JPH11353196A (en) | 1998-05-28 | 1999-05-26 | Governor for time-scheduled process management |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/086,147 US6411982B2 (en) | 1998-05-28 | 1998-05-28 | Thread based governor for time scheduled process execution |
Publications (2)
Publication Number | Publication Date |
---|---|
US20010042090A1 true US20010042090A1 (en) | 2001-11-15 |
US6411982B2 US6411982B2 (en) | 2002-06-25 |
Family
ID=22196581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/086,147 Expired - Fee Related US6411982B2 (en) | 1998-05-28 | 1998-05-28 | Thread based governor for time scheduled process execution |
Country Status (3)
Country | Link |
---|---|
US (1) | US6411982B2 (en) |
EP (1) | EP0961204A3 (en) |
JP (1) | JPH11353196A (en) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015973A1 (en) * | 2002-05-31 | 2004-01-22 | International Business Machines Corporation | Resource reservation for large-scale job scheduling |
US20040162941A1 (en) * | 2003-02-18 | 2004-08-19 | Nec Corporation | Disk array control apparatus and method |
US20050149932A1 (en) * | 2003-12-10 | 2005-07-07 | Hasink Lee Z. | Methods and systems for performing operations in response to detecting a computer idle condition |
US6961720B1 (en) | 2000-06-21 | 2005-11-01 | Iphrase Technologies, Inc. | System and method for automatic task prioritization |
US20060136915A1 (en) * | 2004-12-17 | 2006-06-22 | Sun Microsystems, Inc. | Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline |
US7099855B1 (en) | 2000-01-13 | 2006-08-29 | International Business Machines Corporation | System and method for electronic communication management |
US20070033593A1 (en) * | 2005-08-08 | 2007-02-08 | Commasic, Inc. | System and method for wireless broadband context switching |
US20070050771A1 (en) * | 2005-08-30 | 2007-03-01 | Howland Melissa K | System and method for scheduling tasks for execution |
US20090193423A1 (en) * | 2008-01-24 | 2009-07-30 | Hewlett-Packard Development Company, L.P. | Wakeup pattern-based colocation of threads |
US20100161549A1 (en) * | 2008-12-19 | 2010-06-24 | Microsoft Corporation | Masterless distributed batch scheduling engine |
US7752159B2 (en) | 2001-01-03 | 2010-07-06 | International Business Machines Corporation | System and method for classifying text |
US7756810B2 (en) | 2003-05-06 | 2010-07-13 | International Business Machines Corporation | Software tool for training and testing a knowledge base |
US8140110B2 (en) | 2005-08-08 | 2012-03-20 | Freescale Semiconductor, Inc. | Controlling input and output in a multi-mode wireless processing system |
US8290768B1 (en) | 2000-06-21 | 2012-10-16 | International Business Machines Corporation | System and method for determining a set of attributes based on content of communications |
US20160314163A1 (en) * | 2015-04-23 | 2016-10-27 | Splunk Inc. | Systems and Methods for Concurrent Summarization of Indexed Data |
US9699129B1 (en) | 2000-06-21 | 2017-07-04 | International Business Machines Corporation | System and method for increasing email productivity |
US9990386B2 (en) | 2013-01-31 | 2018-06-05 | Splunk Inc. | Generating and storing summarization tables for sets of searchable events |
US10055501B2 (en) | 2003-05-06 | 2018-08-21 | International Business Machines Corporation | Web-based customer service interface |
US10061807B2 (en) | 2012-05-18 | 2018-08-28 | Splunk Inc. | Collection query driven generation of inverted index for raw machine data |
WO2019080233A1 (en) * | 2017-10-24 | 2019-05-02 | 平安科技(深圳)有限公司 | Method and device for processing scheduled task, storage medium, and computer apparatus |
CN110187957A (en) * | 2019-05-27 | 2019-08-30 | 北京奇艺世纪科技有限公司 | A kind of queuing strategy of downloading task, device and electronic equipment |
US10404825B2 (en) * | 2016-12-07 | 2019-09-03 | Sap Se | Refreshing framework |
US10402384B2 (en) | 2012-05-18 | 2019-09-03 | Splunk Inc. | Query handling for field searchable raw machine data |
US10474674B2 (en) | 2017-01-31 | 2019-11-12 | Splunk Inc. | Using an inverted index in a pipelined search query to determine a set of event data that is further limited by filtering and/or processing of subsequent query pipestages |
CN110471752A (en) * | 2019-08-07 | 2019-11-19 | 网易(杭州)网络有限公司 | Task executing method, device, electronic equipment and computer readable storage medium |
CN111782295A (en) * | 2020-06-29 | 2020-10-16 | 珠海豹趣科技有限公司 | Application program running method and device, electronic equipment and storage medium |
CN112764890A (en) * | 2019-10-21 | 2021-05-07 | 伊姆西Ip控股有限责任公司 | Method, apparatus and computer program product for scheduling backup tasks |
US20220075830A1 (en) * | 2020-09-10 | 2022-03-10 | EMC IP Holding Company LLC | Resumable ordered recursive traversal of an unordered directory tree |
US20220214925A1 (en) * | 2013-11-12 | 2022-07-07 | Oxide Interactive, Inc. | Method and system of a hierarchical task scheduler for a multi-thread system |
US11960545B1 (en) | 2017-01-31 | 2024-04-16 | Splunk Inc. | Retrieving event records from a field searchable data store using references values in inverted indexes |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6256679B1 (en) * | 1997-12-23 | 2001-07-03 | Simmonds Precision Products, Inc. | Blackboard-centric layered software architecture for an embedded airborne fuel gauging subsystem |
US6925642B1 (en) * | 1999-04-29 | 2005-08-02 | Hewlett-Packard Development Company, L.P. | Distributed computer network which spawns inter-node parallel processes based on resource availability |
US7401112B1 (en) * | 1999-05-26 | 2008-07-15 | Aspect Communication Corporation | Methods and apparatus for executing a transaction task within a transaction processing system employing symmetric multiprocessors |
US7418506B1 (en) * | 1999-11-12 | 2008-08-26 | International Business Machines Corporation | Apparatus for connection management and the method therefor |
US7221377B1 (en) | 2000-04-24 | 2007-05-22 | Aspect Communications | Apparatus and method for collecting and displaying information in a workflow system |
US7739325B1 (en) | 2000-04-24 | 2010-06-15 | Aspect Software, Inc. | Apparatus and method for extensible real-time workflows |
JP2001331391A (en) * | 2000-05-22 | 2001-11-30 | Nec Miyagi Ltd | Parallel processing system for cmip request for osi agent |
US7565651B1 (en) * | 2000-05-25 | 2009-07-21 | Oracle International Corporation | Parallel task scheduling system for computers |
US7302684B2 (en) * | 2001-06-18 | 2007-11-27 | Microsoft Corporation | Systems and methods for managing a run queue |
US6993763B2 (en) | 2001-06-26 | 2006-01-31 | International Business Machines Corporation | Technique for scheduling execution of jobs for or by network-connected devices |
US6960611B2 (en) | 2002-09-16 | 2005-11-01 | Institute Of Materia Medica | Sulfonyl-containing 2,3-diarylindole compounds, methods for making same, and methods of use thereof |
US7751315B1 (en) * | 2003-07-15 | 2010-07-06 | Microsoft Corporation | Shared network path contention reduction |
US7559062B2 (en) | 2003-10-30 | 2009-07-07 | Alcatel Lucent | Intelligent scheduler for multi-level exhaustive scheduling |
US7360064B1 (en) | 2003-12-10 | 2008-04-15 | Cisco Technology, Inc. | Thread interleaving in a multithreaded embedded processor |
US7441101B1 (en) | 2003-12-10 | 2008-10-21 | Cisco Technology, Inc. | Thread-aware instruction fetching in a multithreaded embedded processor |
US7206922B1 (en) | 2003-12-30 | 2007-04-17 | Cisco Systems, Inc. | Instruction memory hierarchy for an embedded processor |
US8856793B2 (en) | 2004-05-11 | 2014-10-07 | International Business Machines Corporation | System, method and program for scheduling computer program jobs |
US8214844B2 (en) * | 2005-04-29 | 2012-07-03 | Hewlett-Packard Development Company, L.P. | Systems and methods for adjusting service queue capacity |
CN100530105C (en) * | 2005-06-30 | 2009-08-19 | 华为技术有限公司 | Cocurrent event processing device and method in multi-task software system |
JP4941034B2 (en) * | 2007-03-20 | 2012-05-30 | 富士通株式会社 | Access control apparatus and access control method |
US8725992B2 (en) | 2008-02-01 | 2014-05-13 | International Business Machines Corporation | Programming language exposing idiom calls to a programming idiom accelerator |
US8640141B2 (en) * | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8732683B2 (en) | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8312458B2 (en) | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
US8316218B2 (en) * | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8341635B2 (en) | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
US8015379B2 (en) * | 2008-02-01 | 2011-09-06 | International Business Machines Corporation | Wake-and-go mechanism with exclusive system bus response |
US8788795B2 (en) * | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8880853B2 (en) | 2008-02-01 | 2014-11-04 | International Business Machines Corporation | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock |
US8386822B2 (en) * | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8145849B2 (en) * | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Wake-and-go mechanism with system bus response |
US8452947B2 (en) * | 2008-02-01 | 2013-05-28 | International Business Machines Corporation | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms |
US8127080B2 (en) | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8516484B2 (en) | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8250396B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8612977B2 (en) * | 2008-02-01 | 2013-12-17 | International Business Machines Corporation | Wake-and-go mechanism with software save of thread state |
US8171476B2 (en) | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8225120B2 (en) | 2008-02-01 | 2012-07-17 | International Business Machines Corporation | Wake-and-go mechanism with data exclusivity |
US9830670B2 (en) * | 2008-07-10 | 2017-11-28 | Apple Inc. | Intelligent power monitoring |
US9189268B2 (en) | 2008-10-10 | 2015-11-17 | Netapp, Inc. | Limiting simultaneous data transfers and efficient throttle management |
US8145723B2 (en) * | 2009-04-16 | 2012-03-27 | International Business Machines Corporation | Complex remote update programming idiom accelerator |
US8886919B2 (en) | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
US8230201B2 (en) * | 2009-04-16 | 2012-07-24 | International Business Machines Corporation | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system |
US8082315B2 (en) * | 2009-04-16 | 2011-12-20 | International Business Machines Corporation | Programming idiom accelerator for remote update |
CN102542379B (en) * | 2010-12-20 | 2015-03-11 | 中国移动通信集团公司 | Method, system and device for processing scheduled tasks |
US8954985B2 (en) * | 2012-06-05 | 2015-02-10 | International Business Machines Corporation | Dependency management in task scheduling |
CN103870327A (en) * | 2012-12-18 | 2014-06-18 | 华为技术有限公司 | Real-time multitask scheduling method and device |
US9715406B2 (en) * | 2013-06-14 | 2017-07-25 | Microsoft Technology Licensing, Llc | Assigning and scheduling threads for multiple prioritized queues |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4736318A (en) * | 1985-03-01 | 1988-04-05 | Wang Laboratories, Inc. | Data processing system having tunable operating system means |
US5220653A (en) * | 1990-10-26 | 1993-06-15 | International Business Machines Corporation | Scheduling input/output operations in multitasking systems |
US5528513A (en) * | 1993-11-04 | 1996-06-18 | Digital Equipment Corp. | Scheduling and admission control policy for a continuous media server |
US5752031A (en) * | 1995-04-24 | 1998-05-12 | Microsoft Corporation | Queue object for controlling concurrency in a computer system |
US5832262A (en) * | 1995-09-14 | 1998-11-03 | Lockheed Martin Corporation | Realtime hardware scheduler utilizing processor message passing and queue management cells |
US5940612A (en) * | 1995-09-27 | 1999-08-17 | International Business Machines Corporation | System and method for queuing of tasks in a multiprocessing system |
US6353844B1 (en) * | 1996-12-23 | 2002-03-05 | Silicon Graphics, Inc. | Guaranteeing completion times for batch jobs without static partitioning |
JPH10301793A (en) * | 1997-04-30 | 1998-11-13 | Toshiba Corp | Information processor and scheduling method |
US6170042B1 (en) * | 1998-02-24 | 2001-01-02 | Seagate Technology Llc | Disc drive data storage system and method for dynamically scheduling queued commands |
-
1998
- 1998-05-28 US US09/086,147 patent/US6411982B2/en not_active Expired - Fee Related
- 1998-12-10 EP EP98123604A patent/EP0961204A3/en not_active Withdrawn
-
1999
- 1999-05-26 JP JP11146012A patent/JPH11353196A/en active Pending
Cited By (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7099855B1 (en) | 2000-01-13 | 2006-08-29 | International Business Machines Corporation | System and method for electronic communication management |
US9699129B1 (en) | 2000-06-21 | 2017-07-04 | International Business Machines Corporation | System and method for increasing email productivity |
US6961720B1 (en) | 2000-06-21 | 2005-11-01 | Iphrase Technologies, Inc. | System and method for automatic task prioritization |
US9584665B2 (en) | 2000-06-21 | 2017-02-28 | International Business Machines Corporation | System and method for optimizing timing of responses to customer communications |
US8290768B1 (en) | 2000-06-21 | 2012-10-16 | International Business Machines Corporation | System and method for determining a set of attributes based on content of communications |
US7849044B2 (en) | 2000-06-21 | 2010-12-07 | International Business Machines Corporation | System and method for automatic task prioritization |
US20070198871A1 (en) * | 2000-06-21 | 2007-08-23 | International Business Machines Corporation | System and method for optimizing timing of responses to customer communications |
US7752159B2 (en) | 2001-01-03 | 2010-07-06 | International Business Machines Corporation | System and method for classifying text |
US7076781B2 (en) * | 2002-05-31 | 2006-07-11 | International Business Machines Corporation | Resource reservation for large-scale job scheduling |
US20040015973A1 (en) * | 2002-05-31 | 2004-01-22 | International Business Machines Corporation | Resource reservation for large-scale job scheduling |
US20040162941A1 (en) * | 2003-02-18 | 2004-08-19 | Nec Corporation | Disk array control apparatus and method |
US7512753B2 (en) * | 2003-02-18 | 2009-03-31 | Nec Corporation | Disk array control apparatus and method |
US7756810B2 (en) | 2003-05-06 | 2010-07-13 | International Business Machines Corporation | Software tool for training and testing a knowledge base |
US10055501B2 (en) | 2003-05-06 | 2018-08-21 | International Business Machines Corporation | Web-based customer service interface |
US8495002B2 (en) | 2003-05-06 | 2013-07-23 | International Business Machines Corporation | Software tool for training and testing a knowledge base |
US20050149932A1 (en) * | 2003-12-10 | 2005-07-07 | Hasink Lee Z. | Methods and systems for performing operations in response to detecting a computer idle condition |
US7945914B2 (en) * | 2003-12-10 | 2011-05-17 | X1 Technologies, Inc. | Methods and systems for performing operations in response to detecting a computer idle condition |
US8756605B2 (en) | 2004-12-17 | 2014-06-17 | Oracle America, Inc. | Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline |
US20060136915A1 (en) * | 2004-12-17 | 2006-06-22 | Sun Microsystems, Inc. | Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline |
US7802259B2 (en) * | 2005-08-08 | 2010-09-21 | Freescale Semiconductor, Inc. | System and method for wireless broadband context switching |
US20070033593A1 (en) * | 2005-08-08 | 2007-02-08 | Commasic, Inc. | System and method for wireless broadband context switching |
US8140110B2 (en) | 2005-08-08 | 2012-03-20 | Freescale Semiconductor, Inc. | Controlling input and output in a multi-mode wireless processing system |
US20070050771A1 (en) * | 2005-08-30 | 2007-03-01 | Howland Melissa K | System and method for scheduling tasks for execution |
US7793299B2 (en) * | 2005-08-30 | 2010-09-07 | International Business Machines Corporation | System and method for scheduling tasks for execution |
US8621470B2 (en) * | 2008-01-24 | 2013-12-31 | Hewlett-Packard Development Company, L.P. | Wakeup-attribute-based allocation of threads to processors |
US20090193423A1 (en) * | 2008-01-24 | 2009-07-30 | Hewlett-Packard Development Company, L.P. | Wakeup pattern-based colocation of threads |
US20100161549A1 (en) * | 2008-12-19 | 2010-06-24 | Microsoft Corporation | Masterless distributed batch scheduling engine |
US8332443B2 (en) * | 2008-12-19 | 2012-12-11 | Microsoft Corporation | Masterless distributed batch scheduling engine |
US10402384B2 (en) | 2012-05-18 | 2019-09-03 | Splunk Inc. | Query handling for field searchable raw machine data |
US10061807B2 (en) | 2012-05-18 | 2018-08-28 | Splunk Inc. | Collection query driven generation of inverted index for raw machine data |
US11003644B2 (en) | 2012-05-18 | 2021-05-11 | Splunk Inc. | Directly searchable and indirectly searchable using associated inverted indexes raw machine datastore |
US10409794B2 (en) | 2012-05-18 | 2019-09-10 | Splunk Inc. | Directly field searchable and indirectly searchable by inverted indexes raw machine datastore |
US10423595B2 (en) | 2012-05-18 | 2019-09-24 | Splunk Inc. | Query handling for field searchable raw machine data and associated inverted indexes |
US10997138B2 (en) | 2012-05-18 | 2021-05-04 | Splunk, Inc. | Query handling for field searchable raw machine data using a field searchable datastore and an inverted index |
US9990386B2 (en) | 2013-01-31 | 2018-06-05 | Splunk Inc. | Generating and storing summarization tables for sets of searchable events |
US10685001B2 (en) | 2013-01-31 | 2020-06-16 | Splunk Inc. | Query handling using summarization tables |
US10387396B2 (en) | 2013-01-31 | 2019-08-20 | Splunk Inc. | Collection query driven generation of summarization information for raw machine data |
US11163738B2 (en) | 2013-01-31 | 2021-11-02 | Splunk Inc. | Parallelization of collection queries |
US20220214925A1 (en) * | 2013-11-12 | 2022-07-07 | Oxide Interactive, Inc. | Method and system of a hierarchical task scheduler for a multi-thread system |
US11797348B2 (en) * | 2013-11-12 | 2023-10-24 | Oxide Interactive, Inc. | Hierarchical task scheduling in a multi-threaded processing system |
US10229150B2 (en) * | 2015-04-23 | 2019-03-12 | Splunk Inc. | Systems and methods for concurrent summarization of indexed data |
US11604782B2 (en) * | 2015-04-23 | 2023-03-14 | Splunk, Inc. | Systems and methods for scheduling concurrent summarization of indexed data |
US20160314163A1 (en) * | 2015-04-23 | 2016-10-27 | Splunk Inc. | Systems and Methods for Concurrent Summarization of Indexed Data |
US10404825B2 (en) * | 2016-12-07 | 2019-09-03 | Sap Se | Refreshing framework |
US10474674B2 (en) | 2017-01-31 | 2019-11-12 | Splunk Inc. | Using an inverted index in a pipelined search query to determine a set of event data that is further limited by filtering and/or processing of subsequent query pipestages |
US11960545B1 (en) | 2017-01-31 | 2024-04-16 | Splunk Inc. | Retrieving event records from a field searchable data store using references values in inverted indexes |
WO2019080233A1 (en) * | 2017-10-24 | 2019-05-02 | 平安科技(深圳)有限公司 | Method and device for processing scheduled task, storage medium, and computer apparatus |
CN110187957A (en) * | 2019-05-27 | 2019-08-30 | 北京奇艺世纪科技有限公司 | A kind of queuing strategy of downloading task, device and electronic equipment |
CN110471752A (en) * | 2019-08-07 | 2019-11-19 | 网易(杭州)网络有限公司 | Task executing method, device, electronic equipment and computer readable storage medium |
CN112764890A (en) * | 2019-10-21 | 2021-05-07 | 伊姆西Ip控股有限责任公司 | Method, apparatus and computer program product for scheduling backup tasks |
CN111782295A (en) * | 2020-06-29 | 2020-10-16 | 珠海豹趣科技有限公司 | Application program running method and device, electronic equipment and storage medium |
US20220075830A1 (en) * | 2020-09-10 | 2022-03-10 | EMC IP Holding Company LLC | Resumable ordered recursive traversal of an unordered directory tree |
Also Published As
Publication number | Publication date |
---|---|
JPH11353196A (en) | 1999-12-24 |
US6411982B2 (en) | 2002-06-25 |
EP0961204A3 (en) | 2004-01-21 |
EP0961204A2 (en) | 1999-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6411982B2 (en) | Thread based governor for time scheduled process execution | |
Buchmann et al. | Time-critical database scheduling: A framework for integrating real-time scheduling and concurrency control | |
US7373640B1 (en) | Technique for dynamically restricting thread concurrency without rewriting thread code | |
US8458712B2 (en) | System and method for multi-level preemption scheduling in high performance processing | |
US8185903B2 (en) | Managing system resources | |
US20050165881A1 (en) | Event-driven queuing system and method | |
US20040158831A1 (en) | Process scheduling appratus, process scheduling method, program for process scheduling, and storage medium recording a program for process scheduling | |
JP2003044295A (en) | Sleep queue management | |
CN102096603A (en) | Task decomposition control method in MapReduce system and scheduling node equipment | |
US7920282B2 (en) | Job preempt set generation for resource management | |
US8458136B2 (en) | Scheduling highly parallel jobs having global interdependencies | |
US6480877B1 (en) | Orphan computer process identification | |
CN112363812B (en) | Database connection queue management method based on task classification and storage medium | |
US10599472B2 (en) | Information processing apparatus, stage-out processing method and recording medium recording job management program | |
CN115362434A (en) | Task scheduling for distributed data processing | |
CN115858499A (en) | Database partition processing method and device, computer equipment and storage medium | |
CN113886111A (en) | Workflow-based data analysis model calculation engine system and operation method | |
JP2009048358A (en) | Information processor and scheduling method | |
Audsley et al. | Integrating unbounded software components into hard real-time systems | |
Zuo | High level support for distributed computation in weka | |
CN111506407A (en) | Resource management and job scheduling method, system and medium combining Pull mode and Push mode | |
CN116680051B (en) | Task scheduling method, device, equipment and storage medium | |
Sebastian | Improved fair scheduling algorithm for Hadoop clustering | |
Takada et al. | Inter-and intra-processor synchronizations in multiprocessor real-time kernel | |
JP2004234643A (en) | Process scheduling device, process scheduling method, program for process scheduling, and storage medium recorded with program for process scheduling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: HEWLETT-PACKARD COMPANY, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WILLIAMS, ROY H.;REEL/FRAME:009455/0282 Effective date: 19980717 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD COMPANY;REEL/FRAME:026945/0699 Effective date: 20030131 |
|
REMI | Maintenance fee reminder mailed | ||
LAPS | Lapse for failure to pay maintenance fees | ||
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20140625 |