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: 9875141
    Abstract: 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: Grant
    Filed: October 1, 2008
    Date of Patent: January 23, 2018
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Joseph L. Hellerstein, Eric Lynn Eilebrecht, Vance Morrison, Paul Ringseth
  • Patent number: 9720729
    Abstract: 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: Grant
    Filed: June 2, 2008
    Date of Patent: August 1, 2017
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Paul Ringseth, Genevieve Fernandes, Rick Molloy, Rahul Patil
  • Patent number: 9417914
    Abstract: 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: Grant
    Filed: June 2, 2008
    Date of Patent: August 16, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Paul Ringseth, Genevieve Fernandes
  • Patent number: 9384063
    Abstract: 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: Grant
    Filed: June 18, 2009
    Date of Patent: July 5, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Paul Ringseth, Michael L. Chu, William R. Messmer, Marko Radmilac, Genevieve Fernandes
  • Patent number: 8843927
    Abstract: 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: Grant
    Filed: April 23, 2009
    Date of Patent: September 23, 2014
    Assignee: Microsoft Corporation
    Inventors: Marko Radmilac, Paul Ringseth, Genevieve Fernandes, William R. Messmer, Niklas Gustafsson
  • Patent number: 8799629
    Abstract: 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: Grant
    Filed: December 4, 2008
    Date of Patent: August 5, 2014
    Assignee: Microsoft Corporation
    Inventors: Huseyin S. Yildiz, Stephen S. Toub, Paul Ringseth, John Duffy
  • Patent number: 8719831
    Abstract: 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: Grant
    Filed: June 18, 2009
    Date of Patent: May 6, 2014
    Assignee: Microsoft Corporation
    Inventors: Marko Radmilac, Genevieve Fernandes, Paul Ringseth
  • Patent number: 8650570
    Abstract: 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: Grant
    Filed: June 2, 2008
    Date of Patent: February 11, 2014
    Assignee: Microsoft Corporation
    Inventors: Paul Ringseth, Genevieve Fernandes, Niklas Gustafsson, Rick Molloy, Rahul Patil, Philip Lucido
  • Patent number: 8468528
    Abstract: 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: Grant
    Filed: June 2, 2008
    Date of Patent: June 18, 2013
    Assignee: Microsoft Corporation
    Inventors: Rahul Patil, Paul Ringseth, Philip Lucido
  • Patent number: 8291426
    Abstract: 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: Grant
    Filed: June 2, 2008
    Date of Patent: October 16, 2012
    Assignee: Microsoft Corporation
    Inventors: Niklas Gustafsson, Paul Ringseth, Philip Lucido
  • Publication number: 20100325098
    Abstract: 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: Application
    Filed: June 18, 2009
    Publication date: December 23, 2010
    Applicant: MICROSOFT CORPORATION
    Inventors: Paul Ringseth, Michael L. Chu, William R. Messmer, Marko Radmilac, Genevieve Fernandes
  • Publication number: 20100325637
    Abstract: 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: Application
    Filed: June 18, 2009
    Publication date: December 23, 2010
    Applicant: MICROSOFT CORPORATION
    Inventors: Marko Radmilac, Genevieve Fernandes, Paul Ringseth
  • Publication number: 20100275207
    Abstract: 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: Application
    Filed: April 23, 2009
    Publication date: October 28, 2010
    Applicant: Microsoft Corporation
    Inventors: Marko Radmilac, Paul Ringseth, Genevieve Fernandes, William R. Messmer, Niklas Gustafsson
  • Publication number: 20100146245
    Abstract: 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: Application
    Filed: December 4, 2008
    Publication date: June 10, 2010
    Applicant: Microsoft Corporation
    Inventors: Huseyin S. Yildiz, Stephen S. Toub, Paul Ringseth, John Duffy
  • Publication number: 20100083272
    Abstract: 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: Application
    Filed: October 1, 2008
    Publication date: April 1, 2010
    Applicant: MICROSOFT CORPORATION
    Inventors: Joseph L. Hellerstein, Eric Lynn Eilebrecht, Vance Morrison, Paul Ringseth
  • Publication number: 20090300638
    Abstract: 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: Application
    Filed: June 2, 2008
    Publication date: December 3, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Niklas Gustafsson, Paul Ringseth, Philip Lucido
  • Publication number: 20090300627
    Abstract: 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: Application
    Filed: June 2, 2008
    Publication date: December 3, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Paul Ringseth, Genevieve Fernandes, Rick Molloy, Rahul Patil
  • Publication number: 20090300636
    Abstract: 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: Application
    Filed: June 2, 2008
    Publication date: December 3, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Paul Ringseth, Genevieve Fernandes
  • Publication number: 20090300637
    Abstract: 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: Application
    Filed: June 2, 2008
    Publication date: December 3, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Paul Ringseth, Genevieve Fernandes, Niklas Gustafsson, Rick Molloy, Rahul Patil, Phillp Lucido
  • Publication number: 20090300628
    Abstract: 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: Application
    Filed: June 2, 2008
    Publication date: December 3, 2009
    Applicant: MICROSOFT CORPORATION
    Inventors: Rahul Patil, Paul Ringseth, Philip Lucido