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).
-
Publication number: 20150347268Abstract: 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: ApplicationFiled: August 7, 2015Publication date: December 3, 2015Inventors: Charles D. Garrett, Christopher W. Fraser
-
Patent number: 9158515Abstract: 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: GrantFiled: June 19, 2013Date of Patent: October 13, 2015Assignee: Microsoft Technology Licensing, LLCInventors: Alexander G. Gounares, Charles D. Garrett
-
Publication number: 20150161385Abstract: Optimized memory management settings may be derived from a mathematical model of an execution environment. The settings may be optimized for each application or workload, and the settings may be implemented per application, per process, or with other granularity. The settings may be determined after an initial run of a workload, which may observe and characterize the execution. The workload may be executed a second time using the optimized settings. The settings may be stored as tags for the executable code, which may be in the form of a metadata file or as tags embedded in the source code, intermediate code, or executable code. The settings may change the performance of memory management operations in both interpreted and compiled environments. The memory management operations may include memory allocation, garbage collection, and other related functions.Type: ApplicationFiled: February 23, 2015Publication date: June 11, 2015Applicant: CONCURIX CORPORATIONInventors: Alexander G. GOUNARES, Ying LI, Charles D. GARRETT
-
Patent number: 9043788Abstract: An execution environment may have a monitoring, analysis, and feedback loop that may configure and tune the execution environment for currently executing workloads. A monitoring or instrumentation system may collect operational and performance data from hardware and software components within the system. A modeling system may create an operational model of the execution environment, then may determine different sets of parameters for the execution environment. A feedback loop may change various operational characteristics of the execution environment. The monitoring, analysis, and feedback loop may optimize the performance of a computer system for various metrics, including throughput, performance, energy conservation, or other metrics based on the applications that are currently executing. The performance model of the execution environment may be persisted and applied to new applications to optimize the performance of applications that have not been executed on the system.Type: GrantFiled: August 10, 2012Date of Patent: May 26, 2015Assignee: Concurix CorporationInventors: Charles D. Garrett, Ying Li, Alexander G. Gounares
-
Patent number: 9021444Abstract: A tracing and debugging system may collect both performance related tracer data and snapshot data. The tracer data may contain aggregated performance and operational data, while the snapshot data may contain call stack, source code, and other information that may be useful for debugging and detailed understanding of an application. The snapshot data may be stored in a separate database from the tracer data, as the snapshot data may contain data that may be private or sensitive, while the tracer data may be aggregated information that may be less sensitive. A debugging user interface may be used to access, display, and browse the stored snapshot data.Type: GrantFiled: August 19, 2013Date of Patent: April 28, 2015Assignee: Concurix CorporationInventors: Charles D. Garrett, Alexander G. Gounares
-
Publication number: 20150082285Abstract: 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: ApplicationFiled: November 20, 2014Publication date: March 19, 2015Inventors: Ying LI, Alexander G. GOUNARES, Charles D. GARRETT, Russell S. KRAJEC
-
Patent number: 8966462Abstract: Optimized memory management settings may be derived from a mathematical model of an execution environment. The settings may be optimized for each application or workload, and the settings may be implemented per application, per process, or with other granularity. The settings may be determined after an initial run of a workload, which may observe and characterize the execution. The workload may be executed a second time using the optimized settings. The settings may be stored as tags for the executable code, which may be in the form of a metadata file or as tags embedded in the source code, intermediate code, or executable code. The settings may change the performance of memory management operations in both interpreted and compiled environments. The memory management operations may include memory allocation, garbage collection, and other related functions.Type: GrantFiled: August 10, 2012Date of Patent: February 24, 2015Assignee: Concurix CorporationInventors: Alexander G. Gounares, Ying Li, Charles D. Garrett
-
Patent number: 8966460Abstract: 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: GrantFiled: April 8, 2014Date of Patent: February 24, 2015Assignee: Concurix CorporationInventor: Charles D. Garrett
-
Publication number: 20150052400Abstract: 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: ApplicationFiled: August 19, 2013Publication date: February 19, 2015Applicant: CONCURIX CORPORATIONInventors: Charles D. GARRETT, Alexander G. Gounares
-
Publication number: 20150052406Abstract: A tracing and debugging system may collect both performance related tracer data and snapshot data. The tracer data may contain aggregated performance and operational data, while the snapshot data may contain call stack, source code, and other information that may be useful for debugging and detailed understanding of an application. The snapshot data may be stored in a separate database from the tracer data, as the snapshot data may contain data that may be private or sensitive, while the tracer data may be aggregated information that may be less sensitive. A debugging user interface may be used to access, display, and browse the stored snapshot data.Type: ApplicationFiled: August 19, 2013Publication date: February 19, 2015Applicant: CONCURIX CORPORATIONInventors: Charles D. Garrett, Alexander G. Gounares
-
Publication number: 20150052403Abstract: 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: ApplicationFiled: August 19, 2013Publication date: February 19, 2015Applicant: Concurix CorporationInventors: Charles D. GARRETT, Alexander G. Gounares
-
Publication number: 20140298304Abstract: 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: ApplicationFiled: April 8, 2014Publication date: October 2, 2014Applicant: Concurix CorporationInventor: Charles D. GARRETT
-
Publication number: 20140281726Abstract: 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: ApplicationFiled: April 18, 2013Publication date: September 18, 2014Applicant: Concurix CorporationInventors: Charles D. Garrett, Christopher W. Fraser
-
Publication number: 20140282597Abstract: 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: ApplicationFiled: April 18, 2013Publication date: September 18, 2014Applicant: Concurix CorporationInventors: Charles D. Garrett, Christopher W. Fraser
-
Patent number: 8839204Abstract: The purity of a function may be determined after examining the performance history of a function and analyzing the conditions under which the function behaves as pure. In some cases, a function may be classified as pure when any side effects are de minimis or are otherwise considered trivial. A control flow graph may also be traversed to identify conditions in which a side effect may occur as well as to classify the side effects as trivial or non-trivial. The function purity may be used to identify functions for memoization. In some embodiments, the purity analysis may be performed by a remote server and communicated to a client device, where the client device may memoize the function.Type: GrantFiled: November 8, 2012Date of Patent: September 16, 2014Assignee: Concurix CorporationInventors: Alexander G. Gounares, Ying Li, Charles D. Garrett, Michael D. Noakes
-
Patent number: 8826254Abstract: A function may be memoized when a side effect is a read only side effect. Provided that the read only side effect does not mutate a memory object, the side effect may be considered as an input to a function for purity and memoization analysis. When a read only side effect may be encountered during memoization analysis, the read only side effect may be treated as an input to a function for memoization analysis. In some cases, such side effects may enable an impure function to behave as a pure function for the purposes of memoization.Type: GrantFiled: November 8, 2012Date of Patent: September 2, 2014Assignee: Concurix CorporationInventors: Alexadner G. Gounares, Ying Li, Charles D. Garrett, Michael D. Noakes
-
Patent number: 8793669Abstract: 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: GrantFiled: July 17, 2012Date of Patent: July 29, 2014Assignee: Concurix CorporationInventor: Charles D. Garrett
-
Patent number: 8789030Abstract: Memoization may be deployed using a configuration file or database that identifies functions to memorize, and in some cases, includes input and result values for those functions. The configuration file or database may be created by profiling target code and offline or otherwise separate analysis of the profiling results. The configuration file may be used by an execution environment to identify which functions to memorize during execution. The offline or separate analysis of the profiling results may enable more sophisticated analysis than could otherwise be performed in parallel with executing the target code, including historical analysis of multiple instances of the target code and sophisticated cost/benefit analysis.Type: GrantFiled: September 18, 2012Date of Patent: July 22, 2014Assignee: Concurix CorporationInventors: Alexander G. Gounares, Ying Li, Charles D. Garrett
-
Patent number: 8752034Abstract: Memoization may be deployed using a configuration file or database that identifies functions to memorize, and in some cases, includes input and result values for those functions. As an application is executed, functions defined in the configuration file may be captured and memoized. During the first execution of the function, the return value may be captured and stored in the configuration file. For subsequent executions of the function, the return value may be stored in the configuration file. In some cases, the configuration file may be distributed with the return values to client computers. The configuration file may be created by one device and deployed to other devices in some deployments.Type: GrantFiled: November 8, 2012Date of Patent: June 10, 2014Assignee: Concurix CorporationInventors: Alexander G. Gounares, Ying Li, Charles D. Garrett, Michael D. Noakes
-
Patent number: 8752021Abstract: A function's purity may be estimated by comparing a new input vector to previously analyzed input vectors. When a new input vector is within a confidence boundary, the new input vector may be treated as a known vector, even when that vector has not been evaluated. The input vector may reflect the input parameters passed to a function, and the function may be analyzed to determine whether to memoize with the input vector. The function may be a function that behaves as a pure function in some circumstances and with some input vectors, but not with others. By memoizing the function when possible, the function may be executed much faster, thereby improving performance.Type: GrantFiled: November 8, 2012Date of Patent: June 10, 2014Assignee: Concurix CorporationInventors: Ying Li, Charles D. Garrett, Michael D. Noakes, Alexander G. Gounares