Archive for the ‘smartos’ Category

Debugging dynamic library dependencies on illumos

In this short follow-up to my post on illumos process tools, I’ll expand a bit on ldd and pldd, which print the dynamic linking dependencies of binaries and processes, respectively, and crle, which prints out the runtime linker configuration. These tools are available in most illumos distributions including SmartOS. Understanding builds (and broken builds in [...]

Posted on September 18, 2012 at 9:29 am by dap · Permalink · Comments Closed
In: smartos

illumos tools for observing processes

illumos, with Solaris before it, has a history of delivering rich tools for understanding the system, but discovering these tools can be difficult for new users. Sometimes, tools just have different names than people are used to. In many cases, users don’t even know such tools might exist. In this post I’ll describe some tools [...]

Posted on August 4, 2012 at 12:16 pm by dap · Permalink · Comments Closed
In: smartos

OSCON Slides

Thanks to all who attended my talk at OSCON on Node.js in production: postmortem debugging and performance analysis. Just a reminder: all of the technology I described is open source, most of it part of illumos. For more info, check out the links in slide 22. For the curious, there are also some slides on [...]

Posted on July 19, 2012 at 12:32 pm by dap · Permalink · Comments Closed
In: joyent, Node.js, smartos

Profiling Node.js

(For returning readers, this is basically a “tl;dr” version of my previous post on Node.js performance. The post below also appears on the Node.js blog.) It’s incredibly easy to visualize where your Node program spends its time using DTrace and node-stackvis (a Node port of Brendan Gregg’s FlameGraph tool): Run your Node.js program as usual. [...]

Posted on April 25, 2012 at 10:21 am by dap · Permalink · Comments Closed
In: DTrace, joyent, Node.js, Production, smartos

Playing with Node/V8 postmortem debugging

“Post Mortem” by C. MacLaurin Several weeks ago I posted about postmortem debugging for Node.js, a critical technique for understanding fatal software failure (and thereby keeping up software quality). Now that the underlying pieces are freely available[1], you can use the documentation below to start debugging your own Node programs. With these tools you can [...]

Posted on January 13, 2012 at 11:42 am by dap · Permalink · Comments Closed
In: joyent, Node.js, Production, smartos

Where does your Node program spend its time?

Photo by Julian Lim (flickr) Performance analysis is one of the most difficult challenges in building production software. If a slow application isn’t spending much time on CPU, it could be waiting on filesystem (disk) I/O, network traffic, garbage collection, or many other things. We built the Cloud Analytics tool to help administrators and developers quickly [...]

Posted on January 5, 2012 at 3:32 pm by dap · Permalink · Comments Closed
In: DTrace, joyent, Node.js, Production, smartos

USDT Providers Redux

In this post I’m going to review DTrace USDT providers and show a complete working example that I hope will be a useful reference for people interested in building providers for their own applications. First, the prerequisites: DTrace is the comprehensive dynamic tracing framework available on Illumos-based, BSD, and MacOS systems. If you’ve never used [...]

Posted on December 13, 2011 at 11:13 am by dap · Permalink · Comments Closed
In: DTrace, joyent, smartos

2000x performance win

I recently helped analyze a performance issue in an unexpected but common place, where the fix improved performance of a task by around 2000x (two thousand times faster). As this is short, interesting and useful, I’ve reproduced it here in a lab environment to share details and screenshots. Issue In a production SmartOS cloud environment, [...]

Posted on December 9, 2011 at 12:57 am by Brendan Gregg · Permalink · Comments Closed
In: DTrace, performance, smartos

Node.js/V8 postmortem debugging

Photo by Auntie P (flickr) I recently wrote an article for ACM Queue discussing postmortem debugging for dynamic environments. I argued that while native environments for years have provided rich tools for understanding software failures postmortem, most popular dynamic environments have not developed similar facilities, and this gap is becoming more important as these environments grow [...]

Posted on October 31, 2011 at 4:42 pm by dap · Permalink · Comments Closed
In: joyent, Node.js, Production, smartos

JavaScript Lint on SmartOS

Photo by Sam Fraser-Smith Back at Fishworks, we used a tool called JavaScript Lint (JSL) for static code analysis. You may know that lint was originally written to identify potential semantic problems in C code, like use of uninitialized variables or blocks of unreachable code. Lint warnings are usually static checks that could reasonably have been [...]

Posted on August 23, 2011 at 3:12 pm by dap · Permalink · Comments Closed
In: joyent, Node.js, smartos