4 ms·
Profile Ruby 2.0 apps using DTrace – Part 1
- profquail 14y agoDTrace is a great tool that doesn't get enough attention. I'm glad to see articles like this that show off the basics of how to use it. DTrace support is also one reason I'd really like to see FreeBSD supported as a first-class platform on AWS and/or Azure. Maybe this'll be the year...
- iffyuva 14y agothanks for your input. indeed, we are going to follow it up with some live examples.
- wazari972 14y agoI don't see any info about the version they're running, commands "dtrace -l" and "dtrace -f write" just fail and print the usage on my Fedora 18 (package systemtap-sdt-devel-2.1-2.fc18.x86_64). Too bad, DTrace seems interesting !
- gnufied 14y agoI am not sure about how well DTrace works on Fedora. What Oracle is shipping with Oracle Linux is not compatible with GPL licensing (read CDDL) and hence can't be included as it is by other Linux distributions. Having said, I will try the fedora 18 package when I get a chance and reply back here. But in the meanwhile, for best results - please try it on one of the OSes I mentioned in blog post. Also, just to double check you are running those commands with sudo right? dtrace won't work without root access. Also forgot to mention, I am using DTrace that ships with Mountain Lion and DTrace api version is - Sun D 1.6.2.
- profquail 14y agoDTrace requires support from the kernel to work. It started out in Solaris, then was ported to FreeBSD (which is why it's in Mac OS X). I don't think it's supported by Linux in general, but it appears that Oracle ported DTrace to Oracle Linux just recently: https://www.networkworld.com/news/2013/030113-oracle-ports-dtrace-to-oracle-267298.html https://www.networkworld.com/news/2013/030113-oracle-ports-d... If you want to give DTrace a try, you could try PC-BSD (the desktop version of FreeBSD) -- there are preinstalled images for VMWare, VirtualBox, etc., and live USB images if you prefer: http://www.pcbsd.org/en/download.html http://www.pcbsd.org/en/download.html
- wereHamster 14y agoYou are using SystemTap and not DTrace. It probably has different and incompatible CLI.
- wazari972 14y agooh you're certainly right ! I just queried yum for a bin/dtrace binary, got this package, and assumed dtrace was part of systemtap!
- pron 14y agoFor the JVM we have btrace (https://kenai.com/projects/btrace https://kenai.com/projects/btrace), which also integrates nicely with dtrace. It also has a good VisualVM plugin (http://visualvm.java.net/plugins.html http://visualvm.java.net/plugins.html).
- profquail 14y agoMono also supports DTrace on Mac OS X and FreeBSD: http://www.mono-project.com/DTrace http://www.mono-project.com/DTrace http://www.mono-project.com/SGen_DTrace http://www.mono-project.com/SGen_DTrace
- pron 14y agobtrace is a complete DTrace-like implementation for the JVM that doesn't require DTrace (but can integrate with it if you want). It allows complete runtime instrumentation of the code - you can profile specific methods, trace argument values and much more.
- profquail 14y agoIf anyone is interested in learning DTrace in detail, Amazon has a fairly comprehensive text: http://www.amazon.com/DTrace-Dynamic-Tracing-Solaris-FreeBSD/dp/0132091518/ http://www.amazon.com/DTrace-Dynamic-Tracing-Solaris-FreeBSD...
- profquail 14y agoI found the book's website -- it has the errata and you can download all of the scripts from the book: http://www.dtracebook.com/index.php/Main_Page http://www.dtracebook.com/index.php/Main_Page There's another very detailed book available for free from illumos (the OpenSolaris fork): http://dtrace.org/guide/preface.html http://dtrace.org/guide/preface.html
- jonathanwallace 14y agoMark Dalrymple recently wrote a great series of posts at Big Nerd Ranch's blog on dtrace: https://www.google.com/search?q=dtrace+site%3Ablog.bignerdranch.com&aq=f&oq=dtrace+site%3Ablog.bignerdranch.com&aqs=chrome.0.57.8616j0&sourceid=chrome&ie=UTF-8 https://www.google.com/search?q=dtrace+site%3Ablog.bignerdra.... Full disclosure: I work at Big Nerd Ranch.
- doublerebel 14y agoReally great to see more articles on dtrace recently. The one feature I was missing from them all, is a way to sort and parse dtrace logs programmatically. Since dtrace can dump method calls out-of-order, some sorting is necessary to see the correct program flow. So here's a start: dtrace-json https://github.com/doublerebel/dtrace-json https://github.com/doublerebel/dtrace-json It's in IcedCoffeeScript but could easily be adapted to Ruby or another language. I used it to debug a native iOS module for a Titanium Mobile app. HTH others as much as it did me!