Patent application number | Description | Published |
20090300627 | SCHEDULER FINALIZATION - A runtime environment allows a scheduler in a process of a computer system to be finalized prior to the process completing. The runtime environment causes execution contexts that are inducted into the scheduler and execution contexts created by the scheduler to be tracked. The runtime environment finalizes the scheduler subsequent to each inducted execution context exiting the scheduler and each created execution context being retired by the scheduler. | 12-03-2009 |
20090300628 | LOG QUEUES IN A PROCESS - A logger in a process of a computer system creates a log queue for each execution context and/or processing resource in the process. A log is created in the log queue for each log request and log information associated with the log request is stored into the log. All logs in each log queue except for the most recently added log in each log queue are flushed prior to the process completing. | 12-03-2009 |
20090300636 | REGAINING CONTROL OF A PROCESSING RESOURCE THAT EXECUTES AN EXTERNAL EXECUTION CONTEXT - A scheduler in a process of a computer system allows an external execution context to execute on a processing resource allocated to the scheduler. The scheduler provides control of the processing resource to the external execution context. The scheduler registers for a notification of an exit event associated with the external execution context. In response to receiving the notification that the exit event has occurred, the scheduler regains control of the processing resource and causes a task associated with an execution context controlled by the scheduler to be executed by the processing resource. | 12-03-2009 |
20090300637 | SCHEDULER INSTANCES IN A PROCESS - A runtime environment of a computer system is provided that creates first and second scheduler instances in a process. Each scheduler instance includes allocated processing resources and is assigned a set of tasks for execution. Each scheduler instance schedules tasks for execution using the allocated processing resources to perform the work of the process. | 12-03-2009 |
20090300638 | MEMORY ALLOCATORS CORRESPONDING TO PROCESSOR RESOURCES - A memory allocator is provided for each processor resource in a process of a computer system. Each memory allocator includes a set of pages, a locally freed list of objects, and a remotely freed list of objects. Each memory allocator requests the pages from an operating system and allocates objects to all execution contexts executing on a corresponding processing resource. Each memory allocator attempts to allocate an object from the locally freed list before allocating an object from the remotely freed list or an allocated page. | 12-03-2009 |
20100083272 | MANAGING POOLS OF DYNAMIC RESOURCES - Computer systems attempt to manage resource pools of a dynamic number of similar resources and work tasks in order to optimize system performance. Work requests are received into the resource pool having a dynamic number of resources instances. An instance-throughput curve is determined that relates a number of resource instances in the resource pool to throughput of the work requests. A slope of a point on the instance-throughput curve is estimated with stochastic gradient approximation. The number of resource instances for the resource pool is selected when the estimated slope of the instance-throughput curve is zero. | 04-01-2010 |
20100146245 | PARALLEL EXECUTION OF A LOOP - A method of executing a loop over an integer index range of indices in a parallel manner includes assigning a plurality of index subsets of the integer index range to a corresponding plurality of threads, and defining for each index subset a start point of the index subset, an end point of the index subset, and a boundary point of the index subset positioned between the start point and the end point of the index subset. A portion of the index subset between the start point and the boundary point represents a private range and the portion of the index subset between the boundary point and the end point represents a public range. Loop code is executed by each thread based on the index subset of the integer index range assigned to the thread. | 06-10-2010 |
20100275207 | GATHERING STATISTICS IN A PROCESS WITHOUT SYNCHRONIZATION - Each processing resource in a scheduler of a process executing on a computer system maintains counts of the number of tasks that arrive at the processing resource and the number of tasks that complete on the processing resource. The counts are maintained in storage that is only writeable by the corresponding processing resource. The scheduler collects and sums the counts from each processing resource and provides statistics based on the summed counts and previous summed counts to a resource manager in response to a request from the resource manager. The scheduler does not reset the counts when the counts are collected and stores copies of the summed counts for use with the next request from the resource manager. The counts may be maintained without synchronization and with thread safety to minimize the impact of gathering statistics on the application. | 10-28-2010 |
20100325098 | ELIDING SYNCHRONIZATION IN A CONCURRENT DATA STRUCTURE - A concurrent data structure allows synchronization to be elided for read accesses. Processing resources that remove one or more elements of the concurrent data structure are allowed to delete the elements only after all other processing resources have reached a safe point. Each processing resource maintains an indicator that indicates whether the processing resource has reached as safe point (i.e., will not access the concurrent data structure). When the indicators indicate that all processing resources have reached a safe point, elements of the data structure may be deleted. | 12-23-2010 |
20100325637 | ALLOCATION OF RESOURCES TO A SCHEDULER IN A PROCESS - A resource manager manages processing and other resources of schedulers of one or more processes executing on one or more computer systems. For each scheduler, the resource manager determines an initial allocation of resources based on the policy of the scheduler, the availability of resources, and the policies of other schedulers. The resource manager receives feedback from the schedulers and dynamically changes the allocation of resources of schedulers based on the feedback. The resource manager determines if changes improved the performance of schedulers and commits or rolls back the changes based on the determination. | 12-23-2010 |