--0016e644d5045d56c20464b7246b Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, Sample patch attached for discussion. There are style and best practice issues with this patch due to my lack of ruby experience. Please forgive and be so kind as to suggest improvements. It is intended to highlight some of the areas that must be considered when making the change to provide thread-safe profiling. The patch alters the code to make the capture of the data thread-safe AFAICT. There may be some issues with the data fields / calculations. I wasn't completely clear what each field in the array was supposed to be storing. The main issue unresolved by this patch is how best to present the information. I've opted for showing information per-thread and a summary as well. * Should there be a version number outputted, in case downstream tools are doing something with this information? * Any comments on how the information is being presented?? * Should profiling be configurable, so that it may not show output per thread, etc. Cheers, James --0016e644d5045d56c20464b7246b Content-Type: text/x-patch; charset=US-ASCII; name="1152-2009-03-09.patch" Content-Disposition: attachment; filename="1152-2009-03-09.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fs3pxfgl0 SW5kZXg6IGxpYi9wcm9maWxlci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaWIvcHJvZmlsZXIucmIJKHJl dmlzaW9uIDIyODY2KQorKysgbGliL3Byb2ZpbGVyLnJiCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI5 ICsxLDM0IEBACiBtb2R1bGUgUHJvZmlsZXJfXwogICAjIGludGVybmFsIHZhbHVlcwotICBAQHN0 YXJ0ID0gQEBzdGFjayA9IEBAbWFwID0gbmlsCisgIEBAc3RhcnQgPSBuaWwgIyB0aGUgc3RhcnQg dGltZSB0aGF0IHByb2ZpbGluZyBiZWdhbgorICBAQHN0YWNrcyA9IG5pbCAjIHRoZSBtYXAgb2Yg c3RhY2sgYXJyYXlzIGtleWVkIGJ5IHRocmVhZAorICBAQG1hcHMgPSBuaWwgIyB0aGUgbWFwIG9m IG1hcCBvZiBjYWxsIGRhdGEga2V5ZWQgYnkgdGhyZWFkLCB0aGVuIGJ5IGNsYXNzIGFuZCBpZC4g Q2FsbCBkYXRhIGFycmF5cyBjb250YWlucyB0aGUgY2FsbCBjb3VudCwgdG90YWwgdGltZSwgCiAg IFBST0ZJTEVfUFJPQyA9IHByb2N7fGV2ZW50LCBmaWxlLCBsaW5lLCBpZCwgYmluZGluZywga2xh c3N8CiAgICAgY2FzZSBldmVudAogICAgIHdoZW4gImNhbGwiLCAiYy1jYWxsIgogICAgICAgbm93 ID0gUHJvY2Vzcy50aW1lc1swXQotICAgICAgQEBzdGFjay5wdXNoIFtub3csIDAuMF0KKyAgICAg IHN0YWNrID0gKEBAc3RhY2tzW1RocmVhZC5jdXJyZW50XSB8fD0gW10pCisgICAgICBzdGFjay5w dXNoIFtub3csIDAuMF0KICAgICB3aGVuICJyZXR1cm4iLCAiYy1yZXR1cm4iCiAgICAgICBub3cg PSBQcm9jZXNzLnRpbWVzWzBdCiAgICAgICBrZXkgPSBba2xhc3MsIGlkXQotICAgICAgaWYgdGlj ayA9IEBAc3RhY2sucG9wCi0gICAgICAgIGRhdGEgPSAoQEBtYXBba2V5XSB8fD0gWzAsIDAuMCwg MC4wLCBrZXldKQorICAgICAgc3RhY2sgPSBAQHN0YWNrc1tUaHJlYWQuY3VycmVudF0KKyAgICAg IGlmIHRpY2sgPSBzdGFjay5wb3AKKyAgICAgICAgdGhyZWFkTWFwID0gKEBAbWFwc1tUaHJlYWQu Y3VycmVudF0gfHw9IHt9KQorICAgICAgICBkYXRhID0gKHRocmVhZE1hcFtrZXldIHx8PSBbMCwg MC4wLCAwLjAsIGtleV0pCiAgICAgICAgIGRhdGFbMF0gKz0gMQogICAgICAgICBjb3N0ID0gbm93 IC0gdGlja1swXQogICAgICAgICBkYXRhWzFdICs9IGNvc3QKICAgICAgICAgZGF0YVsyXSArPSBj b3N0IC0gdGlja1sxXQotICAgICAgICBAQHN0YWNrWy0xXVsxXSArPSBjb3N0IGlmIEBAc3RhY2tb LTFdCisgICAgICAgIHN0YWNrWy0xXVsxXSArPSBjb3N0IGlmIHN0YWNrWy0xXQogICAgICAgZW5k CiAgICAgZW5kCiAgIH0KIG1vZHVsZV9mdW5jdGlvbgogICBkZWYgc3RhcnRfcHJvZmlsZQogICAg IEBAc3RhcnQgPSBQcm9jZXNzLnRpbWVzWzBdCi0gICAgQEBzdGFjayA9IFtdCi0gICAgQEBtYXAg PSB7fQorICAgIEBAc3RhY2tzID0ge30KKyAgICBAQG1hcHMgPSB7fQogICAgIHNldF90cmFjZV9m dW5jIFBST0ZJTEVfUFJPQwogICBlbmQKICAgZGVmIHN0b3BfcHJvZmlsZQpAQCAtMzMsMjcgKzM4 LDYyIEBACiAgICAgc3RvcF9wcm9maWxlCiAgICAgdG90YWwgPSBQcm9jZXNzLnRpbWVzWzBdIC0g QEBzdGFydAogICAgIGlmIHRvdGFsID09IDAgdGhlbiB0b3RhbCA9IDAuMDEgZW5kCi0gICAgZGF0 YSA9IEBAbWFwLnZhbHVlcworICAgIHRvdGFscyA9IHt9CisgICAgQEBtYXBzLmVhY2ggeyB8dGhy ZWFkLCB0aHJlYWRNYXB8CisgICAgICB0aHJlYWRNYXAuZWFjaCB7fGtleSwgZGF0YXwKKyAgICAg ICAgdG90YWxfZGF0YSA9ICh0b3RhbHNba2V5XSB8fD0gWzAsIDAuMCwgMC4wLCBrZXldKQorICAg ICAgICB0b3RhbF9kYXRhWzBdICs9IGRhdGFbMF0KKyAgICAgICAgdG90YWxfZGF0YVsxXSArPSBk YXRhWzFdICNUT0RPIHN1bW1pbmcgdGhpcyBmaWVsZCBkb2Vzbid0IG1ha2UgbXVjaCBzZW5zZT8g TmVlZHMgZGlzY3Vzc2lvbiBvbiBydWJ5LWNvcmUKKyAgICAgICAgdG90YWxfZGF0YVsyXSArPSBk YXRhWzJdIAorICAgICAgfQorICAgICAgIyBQcmludCB0aGUgdGhyZWFkIG91dHB1dAorICAgICAg cHJpbnRfdGhyZWFkKGYsIHRocmVhZCwgdGhyZWFkTWFwLnZhbHVlcywgdG90YWwpIGlmIEBAbWFw cy5sZW5ndGggPiAxCisgICAgfQorCisgICAgZGF0YSA9IHRvdGFscy52YWx1ZXMKICAgICBkYXRh ID0gZGF0YS5zb3J0X2J5e3x4fCAteFsyXX0KLSAgICBzdW0gPSAwCisKKyAgICBmLnByaW50ZiAi U3VtbWFyeVxuIiBpZiBAQG1hcHMubGVuZ3RoID4gMQorICAgIHByaW50X2hlYWRlcihmKQorICAg IHByaW50X2NhbGxfc2l0ZXMoZiwgZGF0YSwgdG90YWwpCisgICAgcHJpbnRfZm9vdGVyKGYsIHRv dGFsKQorICBlbmQKKyAgZGVmIGdldF9uYW1lKGtsYXNzLCBpZCkKKyAgICBuYW1lID0ga2xhc3Mu dG9fcyB8fCAiIgorICAgIGlmIGtsYXNzLmtpbmRfb2Y/IENsYXNzCisgICAgICBuYW1lICs9ICIj IgorICAgIGVsc2UKKyAgICAgIG5hbWUgKz0gIi4iCisgICAgZW5kCisgICAgbmFtZSArIGlkLmlk Mm5hbWUKKyAgZW5kCisgIGRlZiBwcmludF90aHJlYWQoZiwgdGhyZWFkLCBkYXRhLCB0b3RhbCkK KyAgICBkYXRhID0gZGF0YS5zb3J0X2J5e3x4fCAteFsyXX0KKyAgICBmLnByaW50ZiAiICVzXG4i LCB0aHJlYWQKKyAgICBwcmludF9oZWFkZXIoZikKKyAgICBwcmludF9jYWxsX3NpdGVzKGYsIGRh dGEsIHRvdGFsKQorICAgIHByaW50X2Zvb3RlcihmLCB0b3RhbCkKKyAgICBmLnByaW50ZiAiXG4i CisgIGVuZAorICBkZWYgcHJpbnRfaGVhZGVyKGYpCiAgICAgZi5wcmludGYgIiAgJSUgICBjdW11 bGF0aXZlICAgc2VsZiAgICAgICAgICAgICAgc2VsZiAgICAgdG90YWxcbiIKICAgICBmLnByaW50 ZiAiIHRpbWUgICBzZWNvbmRzICAgc2Vjb25kcyAgICBjYWxscyAgbXMvY2FsbCAgbXMvY2FsbCAg bmFtZVxuIgorICBlbmQKKyAgZGVmIHByaW50X2NhbGxfc2l0ZXMoZiwgZGF0YSwgdG90YWwpCisg ICAgc3VtID0gMAogICAgIGZvciBkIGluIGRhdGEKICAgICAgIHN1bSArPSBkWzJdCiAgICAgICBm LnByaW50ZiAiJTYuMmYgJTguMmYgICU4LjJmICU4ZCAiLCBkWzJdL3RvdGFsKjEwMCwgc3VtLCBk WzJdLCBkWzBdCiAgICAgICBmLnByaW50ZiAiJTguMmYgJTguMmYgICVzXG4iLCBkWzJdKjEwMDAv ZFswXSwgZFsxXSoxMDAwL2RbMF0sIGdldF9uYW1lKCpkWzNdKQogICAgIGVuZAorICBlbmQKKyAg ZGVmIHByaW50X2Zvb3RlcihmLCB0b3RhbCkKICAgICBmLnByaW50ZiAiJTYuMmYgJTguMmYgICU4 LjJmICU4ZCAiLCAwLjAsIHRvdGFsLCAwLjAsIDEgICAgICMgPz8/CiAgICAgZi5wcmludGYgIiU4 LjJmICU4LjJmICAlc1xuIiwgMC4wLCB0b3RhbCoxMDAwLCAiI3RvcGxldmVsIiAjID8/PwogICBl bmQKLSAgZGVmIGdldF9uYW1lKGtsYXNzLCBpZCkKLSAgICBuYW1lID0ga2xhc3MudG9fcyB8fCAi IgotICAgIGlmIGtsYXNzLmtpbmRfb2Y/IENsYXNzCi0gICAgICBuYW1lICs9ICIjIgotICAgIGVs c2UKLSAgICAgIG5hbWUgKz0gIi4iCi0gICAgZW5kCi0gICAgbmFtZSArIGlkLmlkMm5hbWUKLSAg ZW5kCiAgIHByaXZhdGUgOmdldF9uYW1lCisgIHByaXZhdGUgOnByaW50X3RocmVhZAorICBwcml2 YXRlIDpwcmludF9oZWFkZXIKKyAgcHJpdmF0ZSA6cHJpbnRfY2FsbF9zaXRlcworICBwcml2YXRl IDpwcmludF9mb290ZXIKIGVuZAo--0016e644d5045d56c20464b7246b--