US 9,811,362 B2
Method and system for transaction controlled sampling of distributed heterogeneous transactions without source code modifications
Bernd Greifeneder, Linz (AT); Christian Schwarzbauer, Linz (AT); Stefan Chiettini, St. Georgen an der Gusen (AT); Jurgen Richtsfeld, Linz (AT); and Erich Georg Hochmuth, Linz (AT)
Assigned to Dynatrace Software GmbH, Linz (AT)
Filed by Dynatrace Software GmbH, Linz (AT)
Filed on Feb. 29, 2016, as Appl. No. 15/56,302.
Application 15/056,302 is a continuation of application No. 13/455,764, filed on Apr. 25, 2012, granted, now 9,274,919.
Claims priority of provisional application 61/480,689, filed on Apr. 29, 2011.
Claims priority of provisional application 61/482,642, filed on May 5, 2011.
Claims priority of provisional application 61/534,490, filed on Sep. 14, 2011.
Prior Publication US 2016/0314005 A1, Oct. 27, 2016
This patent is subject to a terminal disclaimer.
Int. Cl. G06F 9/455 (2006.01); G06F 11/30 (2006.01); G06F 11/34 (2006.01)
CPC G06F 9/45504 (2013.01) [G06F 11/3409 (2013.01); G06F 11/3419 (2013.01); G06F 11/3495 (2013.01); G06F 11/3024 (2013.01); G06F 11/3476 (2013.01); G06F 2201/815 (2013.01); G06F 2201/87 (2013.01)] 17 Claims
OG exemplary drawing
 
1. A computer-implemented method comprising:
(1) identifying, by instrumented bytecode, a transaction executed by a plurality of threads on at least one host system connected by a computer network, where a portion of the transaction is executed by a given thread in the plurality of threads and the instrumented bytecode is executed by the given thread;
(2) collecting, by the instrumented bytecode, performance metrics regarding the transaction during execution of the transaction;
(3) identifying, by the instrumented bytecode, when execution of the portion of the transaction by the given thread has started;
(4) sampling the given thread in response to the identification that the execution of the portion of the transaction in the given thread has started, where the given thread is sampled by cyclically fetching stack data from a call stack for the given thread and associating the stack data with the given thread, wherein the stack data defines nesting relationships of methods associated with the transaction;
(5) identifying, by the instrumented bytecode, when the execution of the portion of the transaction in the given thread has ended;
(6) stopping sampling of the given thread in response to the identification that the execution of the portion of the transaction by the given thread has ended
(7) associating the stack data for the given thread and the collected performance metrics with the identified transaction.