Adam Leventhal's blog

Month: November 2004

It’s been just over a week since we officially launched Solaris 10 and the reactions from the press have been all over the map. Consider these two declarations:

Not many open source aficionados will realize the impact, but by making Solaris 10 free and capable of operating on any kind of hardware, Sun is making a coup in the server market.

As a result Linux will probably not grow much beyond its current market share of about 10% leaving Red Hat and especially Novell with a big problem.


Sun’s announcement of the launch of free open source Solaris 10 has garnered a mild positive response from the investment community. However it also has raised a lot of skepticism from the technical community. The current plans are not good enough.


In case you didn’t notice the URLs: those are the same guy posted about 20ns apart. Why the sudden reversal? slashdot! Yes, the Linus-loyal quickly rose to Linux’s defence citing the multitude of reasons Open Solaris will fail.

It will be a while before anyone knows the relative success or failure of Open Solaris — we’re not even sure of the terms of the license — so this is last challenge I’m going to rise to. But look: the Linux that exists today is a direct result literally and philosophically of its community. And while Solaris has so far been developed by a closed community, it also reflects the timbre of that community. For example: Linux adheres to a spartan philosophy of debugging help — ergo no crash dumps; Solaris takes a different tack — we require projects to come with debugger commands to examine crash dumps. It’s the community that defines the project and, as is evident, it’s the community that defends it, but don’t discount the very real Solaris community.

The dumbest slight is against Solaris’s hardware compatabiIity: do you think Linux always ran on as much stuff as it does now? Of course not. A month ago, did Solaris run on the (sick) new laptop I’m typing this on? Nope. The hardware these two operating systems support doesn’t define their communities, bur rather the reverse. When people can hack up Solaris to work on their gear, they will just as they’ve been doing on Linux for years.

I can’t wait for the license to be announced, for to open for bidness, and to have people start contributing code from outside of Sun. Does anyone really doubt that these things will happen? The only question is if Open Solaris will take off — wait and see.

At the Solaris 10 launch on Monday I was talking to a sysadmin about DTrace. He was clearly very excited about it — finally he could end a fight between the database guys and the appserver guys about whose stuff was to blame — but he had one reservation: Where do I start? Since DTrace lets you look at almost anything on the system, it can be hard knowing the first thing to look at, here’s what I told him:

start with the tools you know

You’ve probably used truss(1) or mpstat(1M) or prstat(1) or iostat(1M) or whatever. They give you a static view of what’s happening on the system — static in that you can’t get any more, you can’t get any other degree of detail, and you can’t dive deeper. So start from those points, and go deeper. Each statistic in those observability tools has at least one associated probe in DTrace. If you’re looking at mpstat(1M) output, maybe cross-calls (xcal) are high, or spins on mutexes (smtx) are high. You don’t have to guess anymore; you can actually drill down and figure out what application or what user or what zone they correspond to by enabling their corresponding DTrace probes (sysinfo:::xcalls and lockstat:::*-spin respectively) and trace the data you want.

figure out what functions are being called

When you’re trying to optimize an application, it helps to know where the app is spending its time. A simple DTrace invocation like this:

# dtrace -n 'pid$target:::entry{ @[probefunc] = count() }' -p <process-id>

can give you a coarse idea of where you’re spending time. When you do this, a lot of it will make sense, but some of it will probably be a surprise: “Why am I calling malloc(3C) a bazillion times?” So find those aberrant cases and figure out what’s going on: “OK, how much are we allocating each time?” (dtrace -n 'pid$target::malloc:entry{ @ = quantize(arg0) }' -p <process-id>).

look for lock contention

In multi-threaded apps, lock contention can be huge performance killer. Run the new plockstat(1) command to see if your app suffers from lock contention. If it does, you’ll see long spin and contention times. These are pretty easy problems to solve, but if you can’t track down the source of the problem, plockstat — of course — lets you dig deeper by using the plockstat provider.

Those are a few places I’ve started from in the past, but, of course, every application is different. DTrace isn’t meant to supplant your knowledge about your app and the system at large, rather it should complement it and let you do more with what you already know.

I was at the Solaris 10 launch for most of Monday, and it was a pretty fantastic day for everyone working on Solaris 10. I spent about two hours helping to answer questions in an online chat — here’s the transcript — about Solaris 10 in what was dubbed a webchat sweatshop. There were a bunch of us from the Solaris group as well as Scott and some other execs all huddled around laptops while the HR folks beat the drum at a slow, but steady pace: These answers have to be on the streets of Hong Kong by morning.

I spent the rest of the afternoon talking to customers and the press — mostly about DTrace — and the exciting thing was that even more than before, they’re getting it and they’re excited about Solaris. One of the most indelible moments was when a group of us from the kernel group were talking to Jem Matzan of The Jem Report and he challenged the claim that Solaris 10 was the most innovative operating system ever. As we all painted the picture of Solaris 10, I realized that this was true. Solaris 10 isn’t just a random collection of neat crap, but it comes together as a cohesive whole that innovates in each and every place an operating system can innovate. Maybe that’s a stretch, but it’s not far off..

Check out LinuxInsider’s article on Solaris 10. In particular, the last paragraph has high praise for Solaris 10 and Sun’s forthcoming hardware ventures:

Bring them together in production systems and what do you get? The ability to organize your business around a single physical computer redundantly implemented in processors spread across your network — meaning that a lot of business processes now limited by technology costs and software complexity can be simplified right down to affordability. That’s what Solaris 10 is really about, and the 10-year impact is likely to be like nothing we’ve seen before.

Come Monday, I hope to see similar thoughtful analysis coming from other publications.

Inspired by the Ansari X-Prize, I thought I’d start issuing open challenges to the community of DTrace and Solaris users. This isn’t because I hate you, or even because I like you necessarily: it’s because I’m lazy. Or if not lazy, at least busy. So my first open challenge is this:

vim for .d files

The following are required of a winning entry

  • syntax hi-lighting of keywords, built-in functions, aggregations, etc.
  • smart commenting (when I hit return I want ' * ')
  • other fancy stuff
  • easy for me to install (again, I’m lazy, impatient, busy, etc.)

There’s no prize, but I’ll certainly voice my appreciation as loudly as appropriate. Submissions for emacs will be accepted, but I will extoll its virtues with less passion. If this works out, I’ll come up with tougher challenges and maybe real prizes. In some not-too-distant future, I hope to get OpenSolaris running on my TiVo — I promise a prize for that 🙂

Recent Posts

February 12, 2017
December 18, 2016
August 9, 2016
August 2, 2016