Patents by Inventor Charles D. Garrett

Charles D. Garrett 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: 10050797
    Abstract: A debugging system may display snapshot information that may be collected in response to an event identified while an application executes. The debugging system may allow a user to browse the various data elements in the snapshot, and may allow the user to modify a snapshot configuration by including or excluding various data elements within the snapshot data. The user interface may have a mechanism for including or excluding data elements that may be presented during browsing, as well as options to change the events that may trigger a snapshot. The updated snapshot configuration may be saved for future execution when the event conditions are satisfied.
    Type: Grant
    Filed: August 7, 2015
    Date of Patent: August 14, 2018
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Charles D. Garrett, Alexander G. Gounares
  • Patent number: 9864676
    Abstract: An application programming interface may receive workload identifiers and checkpoint identifiers from which bottleneck detection may be performed. Workloads may be tracked through various checkpoints in an application and timestamps collected at each checkpoint. From these data, bottlenecks may be identified in real time or by analyzing the data in a subsequent analysis. The workloads may be processed by multiple devices which may comprise a large application. In some cases, the workloads may be processed by different devices in sequence or in a serial fashion, while in other cases workloads may be processed in parallel by different devices. The application programming interface may be part of a bottleneck detection service which may be sold on a pay-per-use model, a subscription model, or some other payment scheme.
    Type: Grant
    Filed: August 7, 2015
    Date of Patent: January 9, 2018
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Charles D. Garrett, Christopher W. Fraser
  • Patent number: 9772927
    Abstract: A tracing system may define an origin for consolidating and comparing trace paths within a traced application. A tracer may define an identifier that may be passed through a tracing route, and the identifier may be defined to capture specific instances or groups of instances of traces. The traces may be consolidated into a graphical representation of the program flow. The identifier may be passed across various boundaries, including function boundaries, library boundaries, application boundaries, device boundaries. An analysis system may consolidate or aggregate trace results having the same identifier, and may render such data graphically or provide statistics using the identified datasets.
    Type: Grant
    Filed: March 27, 2014
    Date of Patent: September 26, 2017
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Alexander G. Gounares, Bryce B. Baril, Charles D. Garrett
  • Patent number: 9747086
    Abstract: Extractable annotations are created and stored for different transmission points. In some instances, this occurs during compiling. One type of transmission point is a message being passed to another process. Once the transmission point is identified, a pattern defining output for the transmission point is then identified. A first extractable annotation defining the first patter is then created and stored for subsequent use.
    Type: Grant
    Filed: February 23, 2015
    Date of Patent: August 29, 2017
    Assignee: Microsoft Technology Licensing, LLC
    Inventor: Charles D. Garrett
  • Patent number: 9665474
    Abstract: An analysis system may perform network analysis on data gathered from an executing application. The analysis system may identify relationships between code elements and use tracer data to quantify and classify various code elements. In some cases, the analysis system may operate with only data gathered while tracing an application, while other cases may combine static analysis data with tracing data. The network analysis may identify groups of related code elements through cluster analysis, as well as identify bottlenecks from one to many and many to one relationships. The analysis system may generate visualizations showing the interconnections or relationships within the executing code, along with highlighted elements that may be limiting performance.
    Type: Grant
    Filed: March 29, 2013
    Date of Patent: May 30, 2017
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Ying Li, Alexander G. Gounares, Charles D. Garrett, Russell S. Krajec
  • Patent number: 9594754
    Abstract: Memoizable functions may be identified by analyzing a function's side effects. The side effects may be evaluated using a white list, black list, or other definition. The side effects may also be classified into conditions which may or may not permit memoization. Side effects that may have de minimus or trivial effects may be ignored in some cases where the accuracy of a function may not be significantly affected when the function may be memoized.
    Type: Grant
    Filed: January 25, 2016
    Date of Patent: March 14, 2017
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Alexander G. Gounares, Ying Li, Charles D. Garrett, Michael D. Noakes
  • Patent number: 9575813
    Abstract: Processes in a message passing system may be launched when messages having data patterns match a function on a receiving process. The function may be identified by an execution pointer within the process. When the match occurs, the process may be added to a runnable queue, and in some embodiments, may be raised to the top of a runnable queue. When a match does not occur, the process may remain in a blocked or non-executing state. In some embodiments, a blocked process may be placed in an idle queue and may not be executed until a process scheduler determines that a message has been received that fulfills a function waiting for input. When the message fulfills the function, the process may be moved to a runnable queue.
    Type: Grant
    Filed: July 17, 2012
    Date of Patent: February 21, 2017
    Assignee: Microsoft Technology Licensing, LLC
    Inventor: Charles D. Garrett
  • Patent number: 9465721
    Abstract: A tracing and debugging system may take a snapshot of an application in response to an event, and may continue executing the program after the snapshot is captured. The snapshot may be stored and retrieved later in a debugging tool where a programmer may browse the snapshot or the snapshot may have some other analysis performed. The snapshot may contain a subset of the state of the application, such as call stacks, portions of source code, the values of local and global variables, and various metadata. The snapshot may be defined in a snapshot configuration that may include an event description and data to be collected.
    Type: Grant
    Filed: August 19, 2013
    Date of Patent: October 11, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Charles D. Garrett, Alexander G. Gounares
  • Publication number: 20160283345
    Abstract: A tracing system may define an origin for consolidating and comparing trace paths within a traced application. A tracer may define an identifier that may be passed through a tracing route, and the identifier may be defined to capture specific instances or groups of instances of traces. The traces may be consolidated into a graphical representation of the program flow. The identifier may be passed across various boundaries, including function boundaries, library boundaries, application boundaries, device boundaries. An analysis system may consolidate or aggregate trace results having the same identifier, and may render such data graphically or provide statistics using the identified datasets.
    Type: Application
    Filed: March 27, 2014
    Publication date: September 29, 2016
    Inventors: Alexander G. Gounares, Bryce B. Baril, Charles D. Garrett
  • Patent number: 9436589
    Abstract: An analysis system may perform network analysis on data gathered from an executing application. The analysis system may identify relationships between code elements and use tracer data to quantify and classify various code elements. In some cases, the analysis system may operate with only data gathered while tracing an application, while other cases may combine static analysis data with tracing data. The network analysis may identify groups of related code elements through cluster analysis, as well as identify bottlenecks from one to many and many to one relationships. The analysis system may generate visualizations showing the interconnections or relationships within the executing code, along with highlighted elements that may be limiting performance.
    Type: Grant
    Filed: March 29, 2013
    Date of Patent: September 6, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Ying Li, Alexander G. Gounares, Charles D. Garrett, Russell S. Krajec
  • Patent number: 9417859
    Abstract: Memoizable functions may be identified by analyzing a function's side effects. The side effects may be evaluated using a white list, black list, or other definition. The side effects may also be classified into conditions which may or may not permit memoization. Side effects that may have de minimus or trivial effects may be ignored in some cases where the accuracy of a function may not be significantly affected when the function may be memoized.
    Type: Grant
    Filed: January 4, 2016
    Date of Patent: August 16, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Alexander G. Gounares, Ying Li, Charles D. Garrett, Michael D. Noakes
  • Patent number: 9417935
    Abstract: A process scheduler for multi-core and many-core processors may place related executable elements that share common data on the same cores. When executed on a common core, sequential elements may store data in memory caches that are very quickly accessed, as opposed to main memory which may take many clock cycles to access the data. The sequential elements may be identified from messages passed between elements or other relationships that may link the elements. In one embodiment, a scheduling graph may be constructed that contains the executable elements and relationships between those elements. The scheduling graph may be traversed to identify related executable elements and a process scheduler may attempt to place consecutive or related executable elements on the same core so that commonly shared data may be retrieved from a memory cache rather than main memory.
    Type: Grant
    Filed: May 1, 2012
    Date of Patent: August 16, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Alexander G. Gounares, Charles D. Garrett
  • Publication number: 20160140018
    Abstract: Memoizable functions may be identified by analyzing a function's side effects. The side effects may be evaluated using a white list, black list, or other definition. The side effects may also be classified into conditions which may or may not permit memoization. Side effects that may have de minimus or trivial effects may be ignored in some cases where the accuracy of a function may not be significantly affected when the function may be memoized.
    Type: Application
    Filed: January 25, 2016
    Publication date: May 19, 2016
    Inventors: Alexander G. Gounares, Ying Li, Charles D. Garrett, Michael D. Noakes
  • Publication number: 20160132306
    Abstract: Memoizable functions may be identified by analyzing a function's side effects. The side effects may be evaluated using a white list, black list, or other definition. The side effects may also be classified into conditions which may or may not permit memoization. Side effects that may have de minimus or trivial effects may be ignored in some cases where the accuracy of a function may not be significantly affected when the function may be memoized.
    Type: Application
    Filed: January 4, 2016
    Publication date: May 12, 2016
    Inventors: Alexander G. Gounares, Ying Li, Charles D. Garrett, Michael D. Noakes
  • Patent number: 9323651
    Abstract: A bottleneck detector may analyze individual workloads processed by an application by logging times when the workload may be processed at different checkpoints in the application. For each checkpoint, a curve fitting algorithm may be applied, and the fitted curves may be compared between different checkpoints to identify bottlenecks or other poorly performing sections of the application. A real time implementation of a detection system may compare newly captured data points against historical curves to detect a shift in the curve, which may indicate a bottleneck. In some cases, the fitted curves from neighboring checkpoints may be compared to identify sections of the application that may be a bottleneck. An automated system may apply one set of checkpoints in an application, identify an area for further investigation, and apply a second set of checkpoints in the identified area. Such a system may recursively search for bottlenecks in an executing application.
    Type: Grant
    Filed: April 18, 2013
    Date of Patent: April 26, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Charles D. Garrett, Christopher W. Fraser
  • Patent number: 9323652
    Abstract: A bottleneck detector may use an iterative method to identify a bottleneck with specificity. An automated checkpoint inserter may place checkpoints in an application. When a bottleneck is detected in an area of an application, the first set of checkpoints may be removed and a new set of checkpoints may be placed in the area of the bottleneck. The process may iterate until a bottleneck may be identified with enough specificity to aid a developer or administrator of an application. In some cases, the process may identify a specific function or line of code where a bottleneck occurs.
    Type: Grant
    Filed: April 18, 2013
    Date of Patent: April 26, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Charles D. Garrett, Christopher W. Fraser
  • Patent number: 9286042
    Abstract: An operating system may be configured using a control flow graph that defines relationships between each executable module. The operating system may be configured by analyzing an application and identifying the operating system modules called from the application, then building a control flow graph for the configuration. The operating system may be deployed to a server or other computer containing only those components identified in the control flow graph. Such a lightweight deployment may be used on a large scale for datacenter servers as well as for small scale deployments on sensors and other devices with little processing power.
    Type: Grant
    Filed: June 19, 2013
    Date of Patent: March 15, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Alexander G. Gounares, Charles D. Garrett
  • Patent number: 9262416
    Abstract: Memoizable functions may be identified by analyzing a function's side effects. The side effects may be evaluated using a white list, black list, or other definition. The side effects may also be classified into conditions which may or may not permit memoization. Side effects that may have de minimus or trivial effects may be ignored in some cases where the accuracy of a function may not be significantly affected when the function may be memoized.
    Type: Grant
    Filed: November 8, 2012
    Date of Patent: February 16, 2016
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Alexander G. Gounares, Ying Li, Charles D. Garrett, Michael D. Noakes
  • Publication number: 20160034262
    Abstract: Processes in a message passing system may be launched when messages having data patterns match a function on a receiving process. The function may be identified by an execution pointer within the process. When the match occurs, the process may be added to a runnable queue, and in some embodiments, may be raised to the top of a runnable queue. When a match does not occur, the process may remain in a blocked or non-executing state. In some embodiments, a blocked process may be placed in an idle queue and may not be executed until a process scheduler determines that a message has been received that fulfills a function waiting for input. When the message fulfills the function, the process may be moved to a runnable queue.
    Type: Application
    Filed: February 23, 2015
    Publication date: February 4, 2016
    Inventor: Charles D. GARRETT
  • Publication number: 20150347275
    Abstract: A debugging system may display snapshot information that may be collected in response to an event identified while an application executes. The debugging system may allow a user to browse the various data elements in the snapshot, and may allow the user to modify a snapshot configuration by including or excluding various data elements within the snapshot data. The user interface may have a mechanism for including or excluding data elements that may be presented during browsing, as well as options to change the events that may trigger a snapshot. The updated snapshot configuration may be saved for future execution when the event conditions are satisfied.
    Type: Application
    Filed: August 7, 2015
    Publication date: December 3, 2015
    Inventors: Charles D. Garrett, Alexander G. Gounares