Software performance profiling in a multi-tenant environment
First Claim
1. A method for profiling a unit of code comprising:
- on each of a plurality of servers of a cluster of servers running at least a unit of code that is the same as is running on others of the plurality of servers, the servers including a set of one or more processors;
sampling, by a host system having a set of one or more processors, performance information from the plurality of servers within the one or more server clusters, the sampling being performed uniformly across the plurality of servers in the cluster, the performance information being of the performance of the unit of code that is running on each of the servers of the plurality of severs, and each sample including at least a stack trace dump of each of a plurality of threads running on the server from the plurality of servers at a moment in time at which the sample was taken, the plurality of threads being a plurality of tasks running concurrently, and each stack trace dump of each thread including at least an ordered list of current methods being executed followed by a subsequent method that called the current method;
aggregating the stack trace dumps of each thread over the samples to generate both a call graph and a back trace graph;
generating, by the one or more processors of the host system, a performance profile characterizing performance of the unit of code running on the plurality of servers based on the sampling, the performance profile characterizes the performance of the unit of code, the performance profile includes at least a view having performance information from each server of the plurality of servers combined and formatted as one unified profile; and
storing, by the host system, the performance profile on one or more non-transitory computer readable medium for later analysis.
1 Assignment
0 Petitions
Accused Products
Abstract
A method for software performance analysis and debugging in a multi-tenant database network system is provided. In at least one embodiment, sampling is achieved using configuration files of each server cluster. Knowledge of the host names of each server in the cluster enables a profiler to target a single server for each sample, thereby facilitating a round-robin sample across a clustered server environment such that a CPU'"'"'s load and processing cost associated to sampling is fairly and uniformly distributed across all servers in the cluster. As a result, in at least one embodiment of the analysis and debugging tool each sample is a complete stack trace dump of each thread running on the application server at that moment in time.
282 Citations
19 Claims
-
1. A method for profiling a unit of code comprising:
-
on each of a plurality of servers of a cluster of servers running at least a unit of code that is the same as is running on others of the plurality of servers, the servers including a set of one or more processors; sampling, by a host system having a set of one or more processors, performance information from the plurality of servers within the one or more server clusters, the sampling being performed uniformly across the plurality of servers in the cluster, the performance information being of the performance of the unit of code that is running on each of the servers of the plurality of severs, and each sample including at least a stack trace dump of each of a plurality of threads running on the server from the plurality of servers at a moment in time at which the sample was taken, the plurality of threads being a plurality of tasks running concurrently, and each stack trace dump of each thread including at least an ordered list of current methods being executed followed by a subsequent method that called the current method; aggregating the stack trace dumps of each thread over the samples to generate both a call graph and a back trace graph; generating, by the one or more processors of the host system, a performance profile characterizing performance of the unit of code running on the plurality of servers based on the sampling, the performance profile characterizes the performance of the unit of code, the performance profile includes at least a view having performance information from each server of the plurality of servers combined and formatted as one unified profile; and storing, by the host system, the performance profile on one or more non-transitory computer readable medium for later analysis. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A non-transitory machine-readable medium carrying one or more instructions for profiling a system, which when executed cause a method to be carried out, the method comprising:
-
creating, by a host system, a profiling log for storing a series of profiling runs at the host system for one or more server clusters in the multi-tenant database network system; creating, by the host system, a schedule for running profiles for the one or more server clusters; determining, by the host system, from the schedule when a server cluster from the one or more server clusters requires a profile run; wherein when the server cluster requires a profile run, sampling, by the host system, a plurality of servers within the server cluster, wherein the sampling is performed uniformly across the plurality of servers in the cluster at a set interval for a set duration, each sample including at least a stack trace dump of each of a plurality of threads running on the server from the plurality of servers at a moment in time at which the sample was taken, the plurality of threads being a plurality of tasks running concurrently, and each stack trace dump of each thread including at least an ordered list of a current methods being executed followed by a subsequent method that called the current method; aggregating the stack trace dumps of each thread over the samples to generate both a call graph and a back trace graph; generating, by the host system, a performance profile based on sample sets formed from the sampling; storing, by the host system, the performance profile; and retrieving, by the host system, the performance profile for analysis.
-
-
19. A computer network configured for profiling a system, the computer network comprising:
-
a plurality of clusters of servers each having a processor system including at least one processor; and a memory system including a machine readable medium having stored thereon one or more sequences of instructions which, when executed, cause a method to be carried out, the method comprising; creating, by a host system, a profiling log for storing a series of profiling runs at the host system for one or more server clusters in the multi-tenant database network system; creating, by the host system, a schedule for running profiles for the one or more server clusters; determining, by the host system, from the schedule when a server cluster from the one or more server clusters requires a profile run; wherein when the server cluster requires a profile run, sampling, by the host system, a plurality of servers within the server cluster, wherein the sampling is performed uniformly across the plurality of servers in the cluster at a set interval for a set duration, each sample including at least a stack trace dump of each of a plurality of threads running on the server from the plurality of servers at a moment in time at which the sample was taken, the plurality of threads being a plurality of tasks running concurrently, and each stack trace dump of each thread including at least an ordered list of a current methods being executed followed by a subsequent method that called the current method; aggregating the stack trace dumps of each thread over the samples to generate both a call graph and a back trace graph; generating, by the host system, a performance profile based on sample sets formed from the sampling; storing, by the host system, the performance profile; and retrieving, by the host system, the performance profile for analysis.
-
Specification