Patents by Inventor Paul Ringseth
Paul Ringseth has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).
-
Patent number: 9875141Abstract: 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.Type: GrantFiled: October 1, 2008Date of Patent: January 23, 2018Assignee: Microsoft Technology Licensing, LLCInventors: Joseph L. Hellerstein, Eric Lynn Eilebrecht, Vance Morrison, Paul Ringseth
-
Patent number: 9720729Abstract: 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.Type: GrantFiled: June 2, 2008Date of Patent: August 1, 2017Assignee: Microsoft Technology Licensing, LLCInventors: Paul Ringseth, Genevieve Fernandes, Rick Molloy, Rahul Patil
-
Patent number: 9417914Abstract: 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.Type: GrantFiled: June 2, 2008Date of Patent: August 16, 2016Assignee: Microsoft Technology Licensing, LLCInventors: Paul Ringseth, Genevieve Fernandes
-
Patent number: 9384063Abstract: 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.Type: GrantFiled: June 18, 2009Date of Patent: July 5, 2016Assignee: Microsoft Technology Licensing, LLCInventors: Paul Ringseth, Michael L. Chu, William R. Messmer, Marko Radmilac, Genevieve Fernandes
-
Monitoring and updating tasks arrival and completion statistics without data locking synchronization
Patent number: 8843927Abstract: 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.Type: GrantFiled: April 23, 2009Date of Patent: September 23, 2014Assignee: Microsoft CorporationInventors: Marko Radmilac, Paul Ringseth, Genevieve Fernandes, William R. Messmer, Niklas Gustafsson -
Patent number: 8799629Abstract: 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.Type: GrantFiled: December 4, 2008Date of Patent: August 5, 2014Assignee: Microsoft CorporationInventors: Huseyin S. Yildiz, Stephen S. Toub, Paul Ringseth, John Duffy
-
Patent number: 8719831Abstract: 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.Type: GrantFiled: June 18, 2009Date of Patent: May 6, 2014Assignee: Microsoft CorporationInventors: Marko Radmilac, Genevieve Fernandes, Paul Ringseth
-
Patent number: 8650570Abstract: 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.Type: GrantFiled: June 2, 2008Date of Patent: February 11, 2014Assignee: Microsoft CorporationInventors: Paul Ringseth, Genevieve Fernandes, Niklas Gustafsson, Rick Molloy, Rahul Patil, Philip Lucido
-
Patent number: 8468528Abstract: 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.Type: GrantFiled: June 2, 2008Date of Patent: June 18, 2013Assignee: Microsoft CorporationInventors: Rahul Patil, Paul Ringseth, Philip Lucido
-
Patent number: 8291426Abstract: 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.Type: GrantFiled: June 2, 2008Date of Patent: October 16, 2012Assignee: Microsoft CorporationInventors: Niklas Gustafsson, Paul Ringseth, Philip Lucido
-
Publication number: 20100325098Abstract: 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.Type: ApplicationFiled: June 18, 2009Publication date: December 23, 2010Applicant: MICROSOFT CORPORATIONInventors: Paul Ringseth, Michael L. Chu, William R. Messmer, Marko Radmilac, Genevieve Fernandes
-
Publication number: 20100325637Abstract: 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.Type: ApplicationFiled: June 18, 2009Publication date: December 23, 2010Applicant: MICROSOFT CORPORATIONInventors: Marko Radmilac, Genevieve Fernandes, Paul Ringseth
-
Publication number: 20100275207Abstract: 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.Type: ApplicationFiled: April 23, 2009Publication date: October 28, 2010Applicant: Microsoft CorporationInventors: Marko Radmilac, Paul Ringseth, Genevieve Fernandes, William R. Messmer, Niklas Gustafsson
-
Publication number: 20100146245Abstract: 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.Type: ApplicationFiled: December 4, 2008Publication date: June 10, 2010Applicant: Microsoft CorporationInventors: Huseyin S. Yildiz, Stephen S. Toub, Paul Ringseth, John Duffy
-
Publication number: 20100083272Abstract: 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.Type: ApplicationFiled: October 1, 2008Publication date: April 1, 2010Applicant: MICROSOFT CORPORATIONInventors: Joseph L. Hellerstein, Eric Lynn Eilebrecht, Vance Morrison, Paul Ringseth
-
Publication number: 20090300638Abstract: 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.Type: ApplicationFiled: June 2, 2008Publication date: December 3, 2009Applicant: MICROSOFT CORPORATIONInventors: Niklas Gustafsson, Paul Ringseth, Philip Lucido
-
Publication number: 20090300627Abstract: 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.Type: ApplicationFiled: June 2, 2008Publication date: December 3, 2009Applicant: MICROSOFT CORPORATIONInventors: Paul Ringseth, Genevieve Fernandes, Rick Molloy, Rahul Patil
-
Publication number: 20090300628Abstract: 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.Type: ApplicationFiled: June 2, 2008Publication date: December 3, 2009Applicant: MICROSOFT CORPORATIONInventors: Rahul Patil, Paul Ringseth, Philip Lucido
-
Publication number: 20090300637Abstract: 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.Type: ApplicationFiled: June 2, 2008Publication date: December 3, 2009Applicant: MICROSOFT CORPORATIONInventors: Paul Ringseth, Genevieve Fernandes, Niklas Gustafsson, Rick Molloy, Rahul Patil, Phillp Lucido
-
Publication number: 20090300636Abstract: 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.Type: ApplicationFiled: June 2, 2008Publication date: December 3, 2009Applicant: MICROSOFT CORPORATIONInventors: Paul Ringseth, Genevieve Fernandes