Source blog: The view from the Engine Room
Controlling server configurations with IPS
I recently received a customer question regarding how they best could control which packages and which versions were used on their production Solaris 11 servers. They had considered pointing each server at its own software repository - a common initial approach. A simpler method leverages one of dependency mechanisms we introduced with Solaris 11, but is not immediately obvious to most people. Typically, most internal IT departments qualify particular versions for production use. What this customer wanted to do was insure that their operations staff only installed internally qualified versions of Solaris on their servers. The easiest way of doing this is to leverage the 'incorporate' type of dependency in a small package defined for each server type. From the reference " Packaging and Delivering Software With the Image Packaging System in Oracle® Solaris 11.1": The incorporate dependency specifies that if the given package is installed, ...
New York
I'm in New York this week, visiting Solaris customers and preparing for tomorrow's launch of Solaris 11. As readers of my occasional blog may know, I've been working on IPS, the new packaging system used in Solaris 11. We've recently finished the first version of the developer's guide for IPS. For those folks interested in how to use IPS to deliver their own software, or just want to better understand how Solaris uses IPS, we hope the developer's guide will be useful reading. You can find the new guide here.
New York
I'm in New York this week, visiting Solaris customers and preparing for tomorrow's launch of Solaris 11. As readers of my occasional blog may know, I've been working on IPS, the new packaging system used in Solaris 11. We've recently finished the first version of the developer's guide for IPS. For those folks interested in how to use IPS to deliver their own software, or just want to better understand how Solaris uses IPS, we hope the developer's guide will be useful reading. You can find the new guide here.
OTN Sys Admin Day
I'll be at the Hyatt in San Diego on Tuesday, May 17 to introduce the first OTN (Oracle Technology Network) Sys Admin day; we'll be focusing on Solaris 11 Express this time around. This is a free technical seminar w/ hands-on labs, and is a great chance to try out some of the new technology in Solaris 11. You can also offer feedback to both technical folks and Marketing (er, Product Management). I'll talk about some of the changes in S11 Express of particular interest to system administrators, and discuss the new packaging system and installers. More info, including location and registration link can be found here.
OTN Sys Admin Day
I'll be at the Hyatt in San Diego on Tuesday, May 17 to introduce the first OTN (Oracle Technology Network) Sys Admin day; we'll be focusing on Solaris 11 Express this time around. This is a free technical seminar w/ hands-on labs, and is a great chance to try out some of the new technology in Solaris 11. You can also offer feedback to both technical folks and Marketing (er, Product Management). I'll talk about some of the changes in S11 Express of particular interest to system administrators, and discuss the new packaging system and installers. More info, including location and registration link can be found here.
OTN focus on IPS
The marketing (er, product management) folks have been putting together various pieces of information on IPS. You can find all the information at this link. Thanks guys!
OTN focus on IPS
The marketing (er, product management) folks have been putting together various pieces of information on IPS. You can find all the information at this link. Thanks guys!
OTN focus on IPS
The marketing (er, product management) folks have been putting together various pieces of information on IPS. You can find all the information at this link. Thanks guys!
Publishing your own packages with IPS - getting started.
It's been a while since I blogged on packaging... and we've been busy. I've had several people ask for our developers documentation, but that's still being written, so I thought I'd blog about how to publish a simple package with IPS. I've been having mysterious networking issues (somewhere, a router doesn't like my system), so I decided I'd package a tool I use often to diagnose flaky networks - mtr. Like many open source programs, it needed some work to get it to compile properly on Solaris. The primary issue is that we've currently hidden libncurses off in /usr/gnu/lib, which is silly - there is no "Solaris" version in /usr/lib, so it should have gone there.
Publishing your own packages with IPS - getting started.
It's been a while since I blogged on packaging... and we've been busy. I've had several people ask for our developers documentation, but that's still being written, so I thought I'd blog about how to publish a simple package with IPS. I've been having mysterious networking issues (somewhere, a router doesn't like my system), so I decided I'd package a tool I use often to diagnose flaky networks - mtr. Like many open source programs, it needed some work to get it to compile properly on Solaris. The primary issue is that we've currently hidden libncurses off in /usr/gnu/lib, which is silly - there is no "Solaris" version in /usr/lib, so it should have gone there.
Publishing your own packages with IPS - getting started.
It's been a while since I blogged on packaging... and we've been busy. I've had several people ask for our developers documentation, but that's still being written, so I thought I'd blog about how to publish a simple package with IPS. I've been having mysterious networking issues (somewhere, a router doesn't like my system), so I decided I'd package a tool I use often to diagnose flaky networks - mtr. Like many open source programs, it needed some work to get it to compile properly on Solaris. The primary issue is that we've currently hidden libncurses off in /usr/gnu/lib, which is silly - there is no "Solaris" version in /usr/lib, so it should have gone there.
SATisfaction
During pkg(5) development it has become quite clear that computing the correct set of packages to install or upgrade is a non-trivial task. Initially, we started delivering pkg(5) with a solution engine that simply took the latest available packages. This worked so long as we only delivered packages that were all compatible, no third party publishers existed, and users were happy staying on the bleeding edge. Since none of these conditions were maintainable, a more sophisticated solution was essential. We gained some breathing room with the introduction of incorporation dependencies. Such a dependency in a package specifies the version (at a variable level of precision) of compatibility with another package. We have used a package full of these dependencies (termed an incorporation ) during OpenSolaris development to insure that the various operating system packages from pkg.opensolaris.org come from the same build - that there's no way to get build 123's ...
SATisfaction
During pkg(5) development it has become quite clear that computing the correct set of packages to install or upgrade is a non-trivial task. Initially, we started delivering pkg(5) with a solution engine that simply took the latest available packages. This worked so long as we only delivered packages that were all compatible, no third party publishers existed, and users were happy staying on the bleeding edge. Since none of these conditions were maintainable, a more sophisticated solution was essential. We gained some breathing room with the introduction of incorporation dependencies. Such a dependency in a package specifies the version (at a variable level of precision) of compatibility with another package. We have used a package full of these dependencies (termed an incorporation ) during OpenSolaris development to insure that the various operating system packages from pkg.opensolaris.org come from the same build - that there's no way to get build 123's ...
SATisfaction
During pkg(5) development it has become quite clear that computing the correct set of packages to install or upgrade is a non-trivial task. Initially, we started delivering pkg(5) with a solution engine that simply took the latest available packages. This worked so long as we only delivered packages that were all compatible, no third party publishers existed, and users were happy staying on the bleeding edge. Since none of these conditions were maintainable, a more sophisticated solution was essential. We gained some breathing room with the introduction of incorporation dependencies. Such a dependency in a package specifies the version (at a variable level of precision) of compatibility with another package. We have used a package full of these dependencies (termed an incorporation ) during OpenSolaris development to insure that the various operating system packages from pkg.opensolaris.org come from the same build - that there's no way to get build 123's ...
Fattening packages - supporting multiple variants in a single package
Dealing with parts of a package Traditionally, packaging systems have placed optional components of a package in separate packages, and established conventions for naming such components, such as -localization, -locale, -devel, -doc, etc. This method of ad-hoc decomposition makes it more difficult for GUI programs to offer the appropriate choices when selecting components, makes the introduction of new optional components difficult and makes installing documentation after the fact a painful process. Packaging options also exist which are mutually exclusive; the typical example is which architecture the package supports. One cannot select both sparc and x86, since the two architecture's files collide - /usr/bin/ls is either a sparc binary or a i386 binary.
Fattening packages - supporting multiple variants in a single package
Dealing with parts of a package Traditionally, packaging systems have placed optional components of a package in separate packages, and established conventions for naming such components, such as -localization, -locale, -devel, -doc, etc. This method of ad-hoc decomposition makes it more difficult for GUI programs to offer the appropriate choices when selecting components, makes the introduction of new optional components difficult and makes installing documentation after the fact a painful process. Packaging options also exist which are mutually exclusive; the typical example is which architecture the package supports. One cannot select both sparc and x86, since the two architecture's files collide - /usr/bin/ls is either a sparc binary or a i386 binary.
Fattening packages - supporting multiple variants in a single package
Dealing with parts of a package Traditionally, packaging systems have placed optional components of a package in separate packages, and established conventions for naming such components, such as -localization, -locale, -devel, -doc, etc. This method of ad-hoc decomposition makes it more difficult for GUI programs to offer the appropriate choices when selecting components, makes the introduction of new optional components difficult and makes installing documentation after the fact a painful process. Packaging options also exist which are mutually exclusive; the typical example is which architecture the package supports. One cannot select both sparc and x86, since the two architecture's files collide - /usr/bin/ls is either a sparc binary or a i386 binary.
Indiana Preview 2 - my new desktop
This weekend I decided to bite the bullet and convert my desktop to Indiana Preview 2. Since unlike most people at Sun my desktop machine also receives my email, and hosts both my home directory and calendar server, the switch-over needed some quiet concentration on my part to insure nothing important got left behind. The installation of Preview 2 (now available here) went smoothly ¿ not surprising, since I'd tested many trial builds on the same machine, a 2 x 2.8GHz Ultra 40. After installation completed and the machine rebooted, I created a second zpool with the two remaining drives; I use this for my home directory, mail spool, tunes and pkg server.
Indiana Preview 2 - my new desktop
This weekend I decided to bite the bullet and convert my desktop to Indiana Preview 2. Since unlike most people at Sun my desktop machine also receives my email, and hosts both my home directory and calendar server, the switch-over needed some quiet concentration on my part to insure nothing important got left behind. The installation of Preview 2 (now available here) went smoothly ¿ not surprising, since I'd tested many trial builds on the same machine, a 2 x 2.8GHz Ultra 40. After installation completed and the machine rebooted, I created a second zpool with the two remaining drives; I use this for my home directory, mail spool, tunes and pkg server.
Indiana Preview 2 - my new desktop
This weekend I decided to bite the bullet and convert my desktop to Indiana Preview 2. Since unlike most people at Sun my desktop machine also receives my email, and hosts both my home directory and calendar server, the switch-over needed some quiet concentration on my part to insure nothing important got left behind. The installation of Preview 2 (now available here) went smoothly not surprising, since I'd tested many trial builds on the same machine, a 2 x 2.8GHz Ultra 40. After installation completed and the machine rebooted, I created a second zpool with the two remaining drives; I use this for my home directory, mail spool, tunes and pkg server.
A programmer's ABCs
Several years ago, before blogging, I cons'd up a programmer's ABC for Stephen Hahn's first child, Benjamin. I'd forgotten about this until Stephen mentioned last week and mailed me a link to the image; I'd lost the original. It's a little SPARC-centric, but so was I at the time: A Programmer's ABC A is for algorithm, patented or not. B is for break, to jump out of this rot. C is for continue, to jump to the top of one's loops. D is for default, the case that handles the oops. E is for else, the predicate's inversion. F is for for, of the loops the most popular version.
A programmer's ABCs
Several years ago, before blogging, I cons'd up a programmer's ABC for Stephen Hahn's first child, Benjamin. I'd forgotten about this until Stephen mentioned last week and mailed me a link to the image; I'd lost the original. It's a little SPARC-centric, but so was I at the time: A Programmer's ABC A is for algorithm, patented or not. B is for break, to jump out of this rot. C is for continue, to jump to the top of one's loops. D is for default, the case that handles the oops. E is for else, the predicate's inversion. F is for for, of the loops the most popular version.
A programmer's ABCs
Several years ago, before blogging, I cons'd up a programmer's ABC for Stephen Hahn's first child, Benjamin. I'd forgotten about this until Stephen mentioned last week and mailed me a link to the image; I'd lost the original. It's a little SPARC-centric, but so was I at the time: A Programmer's ABC A is for algorithm, patented or not. B is for break, to jump out of this rot. C is for continue, to jump to the top of one's loops. D is for default, the case that handles the oops. E is for else, the predicate's inversion. F is for for, of the loops the most popular version.
Rethinking patching
As Stephen mentioned recently, several of us have been thinking about revising the way we manage software change on Solaris. I've been particularly focused on the difficulties Sun and it's customers have with the patching process, and the kinds of changes we need to make as a result in our technology and development processes. Today, most customers don't run OpenSolaris; they run a supported version of Solaris such as Solaris 8, 9 or 10. A supported release means that someone will answer the phone, and that patches for problems are available.Patches are a separate software change control mechanism distinct from package versions in Solaris. Each patch may affect portions of several packages; patches are intended to include all the files necessary to fix one or more problems, either directly or by specifying dependencies. If a patch affects packages which are not installed on this system (typically because it has been minimized), ...
Rethinking patching
As Stephen mentioned recently, several of us have been thinking about revising the way we manage software change on Solaris. I've been particularly focused on the difficulties Sun and it's customers have with the patching process, and the kinds of changes we need to make as a result in our technology and development processes. Today, most customers don't run OpenSolaris; they run a supported version of Solaris such as Solaris 8, 9 or 10. A supported release means that someone will answer the phone, and that patches for problems are available.Patches are a separate software change control mechanism distinct from package versions in Solaris. Each patch may affect portions of several packages; patches are intended to include all the files necessary to fix one or more problems, either directly or by specifying dependencies. If a patch affects packages which are not installed on this system (typically because it has been minimized), ...
Rethinking patching
As Stephen mentioned recently, several of us have been thinking about revising the way we manage software change on Solaris. I've been particularly focused on the difficulties Sun and it's customers have with the patching process, and the kinds of changes we need to make as a result in our technology and development processes. Today, most customers don't run OpenSolaris; they run a supported version of Solaris such as Solaris 8, 9 or 10. A supported release means that someone will answer the phone, and that patches for problems are available.Patches are a separate software change control mechanism distinct from package versions in Solaris. Each patch may affect portions of several packages; patches are intended to include all the files necessary to fix one or more problems, either directly or by specifying dependencies. If a patch affects packages which are not installed on this system (typically because it has been minimized), ...
Friday afternoon SPARKFUN
Mike Pogue mentioned he was considering using a USB-connected PIC controller to drive some stepper motors from a PC. He'd ordered out a USB Bit Wacker , which plugs right into a USB port and looks like a serial port to the host OS, and gives you 14 ports that can either be digital in, out or analog in. The host sends simple ASCII commands down, and the Bit Whacker sends back status/port data. Cool! Earlier this afternoon, he brought it in and we plugged it into my Tyan whitebox running Nevada 64a using a mini-USB cable. I was running a tail -f on /var/adm/messages, and saw:Jun 1 15:29:34 cyber usba: [ID 912658 kern.info] USB 2.0 device (usb4d8,a) operating at full speed (USB 1.x) on USB 1.10 root hub: communications@1, usb_mid6 at bus address 3Jun 1 15:29:34 cyber usba: [ID 349649 kern.info] Microchip Technology Inc.
Friday afternoon SPARKFUN
Mike Pogue mentioned he was considering using a USB-connected PIC controller to drive some stepper motors from a PC. He'd ordered out a USB Bit Wacker , which plugs right into a USB port and looks like a serial port to the host OS, and gives you 14 ports that can either be digital in, out or analog in. The host sends simple ASCII commands down, and the Bit Whacker sends back status/port data. Cool! Earlier this afternoon, he brought it in and we plugged it into my Tyan whitebox running Nevada 64a using a mini-USB cable. I was running a tail -f on /var/adm/messages, and saw:Jun 1 15:29:34 cyber usba: [ID 912658 kern.info] USB 2.0 device (usb4d8,a) operating at full speed (USB 1.x) on USB 1.10 root hub: communications@1, usb_mid6 at bus address 3Jun 1 15:29:34 cyber usba: [ID 349649 kern.info] Microchip Technology Inc.
Friday afternoon SPARKFUN
Mike Pogue mentioned he was considering using a USB-connected PIC controller to drive some stepper motors from a PC. He'd ordered out a USB Bit Wacker , which plugs right into a USB port and looks like a serial port to the host OS, and gives you 14 ports that can either be digital in, out or analog in. The host sends simple ASCII commands down, and the Bit Whacker sends back status/port data. Cool! Earlier this afternoon, he brought it in and we plugged it into my Tyan whitebox running Nevada 64a using a mini-USB cable. I was running a tail -f on /var/adm/messages, and saw:Jun 1 15:29:34 cyber usba: [ID 912658 kern.info] USB 2.0 device (usb4d8,a) operating at full speed (USB 1.x) on USB 1.10 root hub: communications@1, usb_mid6 at bus address 3Jun 1 15:29:34 cyber usba: [ID 349649 kern.info] Microchip Technology Inc.
New home server
Building a new household server.... Like a lot of families these days, our household IT infrastructure has had to adapt as we all became more and more fond of computers for work, school and recreation. With digital photograpy, ripping hundreds of CDs, describing our various activities and travels on web pages, two teenagers and the heavy use of email, and the need to provide stable storage for homework and digital art, we've been playing catchup for a while. This led us directly to designing and building a new server to handle storage of all the digital media, web-serving and email. At the same time, I was tired of the whine from the surplus X1 rack-mount server I had stuffed in the closet, and decided to merge my home desktop and server together to reduce power consumption. With some thinking we arrived at the following hardware design: Tyan 2865 ...
New home server
Building a new household server.... Like a lot of families these days, our household IT infrastructure has had to adapt as we all became more and more fond of computers for work, school and recreation. With digital photograpy, ripping hundreds of CDs, describing our various activities and travels on web pages, two teenagers and the heavy use of email, and the need to provide stable storage for homework and digital art, we've been playing catchup for a while. This led us directly to designing and building a new server to handle storage of all the digital media, web-serving and email. At the same time, I was tired of the whine from the surplus X1 rack-mount server I had stuffed in the closet, and decided to merge my home desktop and server together to reduce power consumption. With some thinking we arrived at the following hardware design: Tyan 2865 ...
New home server
Building a new household server.... Like a lot of families these days, our household IT infrastructure has had to adapt as we all became more and more fond of computers for work, school and recreation. With digital photograpy, ripping hundreds of CDs, describing our various activities and travels on web pages, two teenagers and the heavy use of email, and the need to provide stable storage for homework and digital art, we've been playing catchup for a while. This led us directly to designing and building a new server to handle storage of all the digital media, web-serving and email. At the same time, I was tired of the whine from the surplus X1 rack-mount server I had stuffed in the closet, and decided to merge my home desktop and server together to reduce power consumption. With some thinking we arrived at the following hardware design: Tyan 2865 ...
Some thoughts on ZFS's impact on Solaris
So ZFS is now available and we've put together lots of blogs and demos to show everyone the neat kinds of things ZFS supports - snapshots, writable snapshots (clones), simple disk management, protection against hardware and firmware errors, etc. Rather than discuss some other neat feature of ZFS or do some extreme performance demos, I thought it might be interesting to mull over some of the possible implications of this new technology on the rest of Solaris and other applications. We don't yet support booting ZFS quite yet, so some of the ideas below will have to wait a bit for implementation - but it's certainly time to start thinking about them.
Some thoughts on ZFS's impact on Solaris
So ZFS is now available and we've put together lots of blogs and demos to show everyone the neat kinds of things ZFS supports - snapshots, writable snapshots (clones), simple disk management, protection against hardware and firmware errors, etc. Rather than discuss some other neat feature of ZFS or do some extreme performance demos, I thought it might be interesting to mull over some of the possible implications of this new technology on the rest of Solaris and other applications. We don't yet support booting ZFS quite yet, so some of the ideas below will have to wait a bit for implementation - but it's certainly time to start thinking about them.
Some thoughts on ZFS's impact on Solaris
So ZFS is now available and we've put together lots of blogs and demos to show everyone the neat kinds of things ZFS supports - snapshots, writable snapshots (clones), simple disk management, protection against hardware and firmware errors, etc. Rather than discuss some other neat feature of ZFS or do some extreme performance demos, I thought it might be interesting to mull over some of the possible implications of this new technology on the rest of Solaris and other applications. We don't yet support booting ZFS quite yet, so some of the ideas below will have to wait a bit for implementation - but it's certainly time to start thinking about them.
libMicro opensourced
I've been busy with libMicro lately. LibMicro is a set of portable OS (kernel/library) benchmarks developed as part of the Solaris 10 performance effort. I've been working on a set of changes for a while to fix up some of the statistics and improve repeatability and prepare for open sourcing under the CDDL license. You can find libMicro in the performance community at opensolaris.org. There's still a lot to do on libMicro, starting with documentation on how to add new benchmarks, and how the whole thing works...
libMicro opensourced
I've been busy with libMicro lately. LibMicro is a set of portable OS (kernel/library) benchmarks developed as part of the Solaris 10 performance effort. I've been working on a set of changes for a while to fix up some of the statistics and improve repeatability and prepare for open sourcing under the CDDL license. You can find libMicro in the performance community at opensolaris.org. There's still a lot to do on libMicro, starting with documentation on how to add new benchmarks, and how the whole thing works...
libMicro opensourced
I've been busy with libMicro lately. LibMicro is a set of portable OS (kernel/library) benchmarks developed as part of the Solaris 10 performance effort. I've been working on a set of changes for a while to fix up some of the statistics and improve repeatability and prepare for open sourcing under the CDDL license. You can find libMicro in the performance community at opensolaris.org. There's still a lot to do on libMicro, starting with documentation on how to add new benchmarks, and how the whole thing works...
Most common recent benchmarking mistake
Most frequently asked performance question of late: Why is this trivial piece of code slower on Solaris than on Linux with both OSes running on the same Opteron box? Often this is because the default compilation mode using /usr/sfw/bin/gcc (or Studio, for that matter) on Solaris is always a portable binary - and 64 bit Solaris x86 isn't seen as a different architecture, since all the 32 bit programs still work just fine. So gcc -o foo foo.c produces a 32 bit binary on Solaris amd64, and a 64 bit binary when compiled on a 64 bit Linux. No wonder there's a performance difference!
Most common recent benchmarking mistake
Most frequently asked performance question of late: Why is this trivial piece of code slower on Solaris than on Linux with both OSes running on the same Opteron box? Often this is because the default compilation mode using /usr/sfw/bin/gcc (or Studio, for that matter) on Solaris is always a portable binary - and 64 bit Solaris x86 isn't seen as a different architecture, since all the 32 bit programs still work just fine. So gcc -o foo foo.c produces a 32 bit binary on Solaris amd64, and a 64 bit binary when compiled on a 64 bit Linux. No wonder there's a performance difference!
Most common recent benchmarking mistake
Most frequently asked performance question of late: Why is this trivial piece of code slower on Solaris than on Linux with both OSes running on the same Opteron box? Often this is because the default compilation mode using /usr/sfw/bin/gcc (or Studio, for that matter) on Solaris is always a portable binary - and 64 bit Solaris x86 isn't seen as a different architecture, since all the 32 bit programs still work just fine. So gcc -o foo foo.c produces a 32 bit binary on Solaris amd64, and a 64 bit binary when compiled on a 64 bit Linux. No wonder there's a performance difference!
Doing the Jitter Bug
One of the nice things about finally having OpenSolaris properly launched is that I can share Solaris source code with everyone when talking about Solaris. Since Solaris is the code, not being able to show people the code has been like having a discussion about various aspects of the flavors of wine without actually tasting any - possible perhaps, but a rather dry (heh) and uninteresting narrative.... I was happily (as I don't get to write nearly enough code) whacking away on a revised version of malloc to fix some longstanding performance and scalabilty issues when one of our marketing folks darted in asking about telcos, real time, and latency bubbles [I'll write about our malloc findings later on].
Doing the Jitter Bug
One of the nice things about finally having OpenSolaris properly launched is that I can share Solaris source code with everyone when talking about Solaris. Since Solaris is the code, not being able to show people the code has been like having a discussion about various aspects of the flavors of wine without actually tasting any - possible perhaps, but a rather dry (heh) and uninteresting narrative.... I was happily (as I don't get to write nearly enough code) whacking away on a revised version of malloc to fix some longstanding performance and scalabilty issues when one of our marketing folks darted in asking about telcos, real time, and latency bubbles [I'll write about our malloc findings later on].
Doing the Jitter Bug
One of the nice things about finally having OpenSolaris properly launched is that I can share Solaris source code with everyone when talking about Solaris. Since Solaris is the code, not being able to show people the code has been like having a discussion about various aspects of the flavors of wine without actually tasting any - possible perhaps, but a rather dry (heh) and uninteresting narrative.... I was happily (as I don't get to write nearly enough code) whacking away on a revised version of malloc to fix some longstanding performance and scalabilty issues when one of our marketing folks darted in asking about telcos, real time, and latency bubbles [I'll write about our malloc findings later on].
Putting developer-defined DTrace probe points in an application
Well, it's been a while since blogging - time to post another example. As part of the Solaris 10 developer BOF at Usenix a couple of weeks ago, Liane asked me to put together a quick DTrace demo, so I cons'ed up a quick example of how to put static probes into an application. This technique is simple and can avoid the need for debug flags, conditional logging, etc in the application. In order to have something to work with, I wrote a quick version of wc that I instrumented with two dtrace probe points. These two probe points are defined in a file called simple_probes.d: provider simple { probe saw__word(int); probe saw__line(int);}; Note that dtrace treats double underscores specially in such definitions; they're converted to dash "-" characters in the finished probe names.
Putting developer-defined DTrace probe points in an application
Well, it's been a while since blogging - time to post another example. As part of the Solaris 10 developer BOF at Usenix a couple of weeks ago, Liane asked me to put together a quick DTrace demo, so I cons'ed up a quick example of how to put static probes into an application. This technique is simple and can avoid the need for debug flags, conditional logging, etc in the application. In order to have something to work with, I wrote a quick version of wc that I instrumented with two dtrace probe points. These two probe points are defined in a file called simple_probes.d: provider simple { probe saw__word(int); probe saw__line(int);}; Note that dtrace treats double underscores specially in such definitions; they're converted to dash "-" characters in the finished probe names.
Putting developer-defined DTrace probe points in an application
Well, it's been a while since blogging - time to post another example. As part of the Solaris 10 developer BOF at Usenix a couple of weeks ago, Liane asked me to put together a quick DTrace demo, so I cons'ed up a quick example of how to put static probes into an application. This technique is simple and can avoid the need for debug flags, conditional logging, etc in the application. In order to have something to work with, I wrote a quick version of wc that I instrumented with two dtrace probe points. These two probe points are defined in a file called simple_probes.d: provider simple { probe saw__word(int); probe saw__line(int);}; Note that dtrace treats double underscores specially in such definitions; they're converted to dash "-" characters in the finished probe names.
Burning Man - what a foreign place!
I've been back from my first trip to Burning Man for more than a week, and I'm still finding it coming up in conversations and mid-meeting daydreams/doodles. Art show, rave fest, communal desert camping experience - I'm still not sure exactly what it is... I just get the feeling I'll have forgotten all about the heat, dust and porta-potties come end of August, and I'll go back for another visit. The folks are friendly there. For some images of this year's events, try here, here and here. I guess you really need a nice techno dub to get the full flavor (not to mention a snootful of playa dust :-), but I'm not really sure how to do either in roller :-).
Burning Man - what a foreign place!
I've been back from my first trip to Burning Man for more than a week, and I'm still finding it coming up in conversations and mid-meeting daydreams/doodles. Art show, rave fest, communal desert camping experience - I'm still not sure exactly what it is... I just get the feeling I'll have forgotten all about the heat, dust and porta-potties come end of August, and I'll go back for another visit. The folks are friendly there. For some images of this year's events, try here, here and here. I guess you really need a nice techno dub to get the full flavor (not to mention a snootful of playa dust :-), but I'm not really sure how to do either in roller :-).
Burning Man - what a foreign place!
I've been back from my first trip to Burning Man for more than a week, and I'm still finding it coming up in conversations and mid-meeting daydreams/doodles. Art show, rave fest, communal desert camping experience - I'm still not sure exactly what it is... I just get the feeling I'll have forgotten all about the heat, dust and porta-potties come end of August, and I'll go back for another visit. The folks are friendly there. For some images of this year's events, try here, here and here. I guess you really need a nice techno dub to get the full flavor (not to mention a snootful of playa dust :-), but I'm not really sure how to do either in roller :-).
Photos of OSCON SOlaris 10 BOF from jimgris
Look here for some candid shots of some of us kernel types talking at the OSCON Solaris 10 BOF. I was sure whacked by this point if the pictures are any indication... We'd spent a while sitting in the sun during lunch and then the airconditioning couldn't keep up in our 16th floor meeting room - it was more of a group sauna than . Kudos to everyone for dealing with the heat...
Photos of OSCON SOlaris 10 BOF from jimgris
Look here for some candid shots of some of us kernel types talking at the OSCON Solaris 10 BOF. I was sure whacked by this point if the pictures are any indication... We'd spent a while sitting in the sun during lunch and then the airconditioning couldn't keep up in our 16th floor meeting room - it was more of a group sauna than . Kudos to everyone for dealing with the heat...
Back from OSCON - misc. thoughts
Spent the last few days at OSCON attending keynotes, presentations, BOFs and meetings. Thanks to the Apple folks providing a lounge w/ good old wired internet service, I was able to stay sort of caught up w/ the usual firehose of email back at Sun using my Tecra 9100 laptop running Solaris 10 & a vpn tunnel running via IPSec through NAT. Such a nice feature - another S10 special :-).... Now I really want to get the Cisco Aironet card that's built into the Tecra working w/ Solaris so I can be like the cool kids and surf related sites while attending talks...
Back from OSCON - misc. thoughts
Spent the last few days at OSCON attending keynotes, presentations, BOFs and meetings. Thanks to the Apple folks providing a lounge w/ good old wired internet service, I was able to stay sort of caught up w/ the usual firehose of email back at Sun using my Tecra 9100 laptop running Solaris 10 & a vpn tunnel running via IPSec through NAT. Such a nice feature - another S10 special :-).... Now I really want to get the Cisco Aironet card that's built into the Tecra working w/ Solaris so I can be like the cool kids and surf related sites while attending talks...
Photos of OSCON SOlaris 10 BOF from jimgris
Look here for some candid shots of some of us kernel types talking at the OSCON Solaris 10 BOF. I was sure whacked by this point if the pictures are any indication... We'd spent a while sitting in the sun during lunch and then the airconditioning couldn't keep up in our 16th floor meeting room - it was more of a group sauna than . Kudos to everyone for dealing with the heat...
Back from OSCON - misc. thoughts
Spent the last few days at OSCON attending keynotes, presentations, BOFs and meetings. Thanks to the Apple folks providing a lounge w/ good old wired internet service, I was able to stay sort of caught up w/ the usual firehose of email back at Sun using my Tecra 9100 laptop running Solaris 10 & a vpn tunnel running via IPSec through NAT. Such a nice feature - another S10 special :-).... Now I really want to get the Cisco Aironet card that's built into the Tecra working w/ Solaris so I can be like the cool kids and surf related sites while attending talks...
Off to Portland for OSCON
Several Sun kernel people will be at OSCON this week, learning about some of the open source communities and talking to people about open sourcing Solaris. We're sponsoring a BOF on Thursday night to talk about Solaris 10 and Open Source. If you're there, stop by and talk to Andy Tucker, Adam Leventhal, Eric Scrock or me... as the BOF description says: There will be plenty of food, T-shirts, and demos. And perhaps some controversy, too.
Off to Portland for OSCON
Several Sun kernel people will be at OSCON this week, learning about some of the open source communities and talking to people about open sourcing Solaris. We're sponsoring a BOF on Thursday night to talk about Solaris 10 and Open Source. If you're there, stop by and talk to Andy Tucker, Adam Leventhal, Eric Scrock or me... as the BOF description says: There will be plenty of food, T-shirts, and demos. And perhaps some controversy, too.
Off to Portland for OSCON
Several Sun kernel people will be at OSCON this week, learning about some of the open source communities and talking to people about open sourcing Solaris. We're sponsoring a BOF on Thursday night to talk about Solaris 10 and Open Source. If you're there, stop by and talk to Andy Tucker, Adam Leventhal, Eric Scrock or me... as the BOF description says: There will be plenty of food, T-shirts, and demos. And perhaps some controversy, too.
Entry #2 - Event ports
According to Adam, event ports are the 20 th neatest thing in Solaris 10. in Solaris 10. Event ports allow programmers to wait in a single call for events from disjoint sources in a scalable fashion. Traditionally, programmers on Unix systems use poll(2) or select(3) to wait for IO from sockets,pipes or streams. Unfortunately, when the AIO interfaces were designed, new wait paradigms that didn't combine with poll(2) were introduced. Posix extended the confusion with the introduction of timers, which provide a variety of notification mechanisms - but these cannot be combined with poll or select. Furthermore, the design of poll and select left something to be desired. Since the interface is idempotent, the desired set of file descriptors to be checked had to be passed into the kernel on each call to poll.
Entry #2 - Event ports
According to Adam, event ports are the 20 th neatest thing in Solaris 10. in Solaris 10. Event ports allow programmers to wait in a single call for events from disjoint sources in a scalable fashion. Traditionally, programmers on Unix systems use poll(2) or select(3) to wait for IO from sockets,pipes or streams. Unfortunately, when the AIO interfaces were designed, new wait paradigms that didn't combine with poll(2) were introduced. Posix extended the confusion with the introduction of timers, which provide a variety of notification mechanisms - but these cannot be combined with poll or select. Furthermore, the design of poll and select left something to be desired. Since the interface is idempotent, the desired set of file descriptors to be checked had to be passed into the kernel on each call to poll.
Entry #2 - Event ports
According to Adam, event ports are the 20 th neatest thing in Solaris 10. in Solaris 10. Event ports allow programmers to wait in a single call for events from disjoint sources in a scalable fashion. Traditionally, programmers on Unix systems use poll(2) or select(3) to wait for IO from sockets,pipes or streams. Unfortunately, when the AIO interfaces were designed, new wait paradigms that didn't combine with poll(2) were introduced. Posix extended the confusion with the introduction of timers, which provide a variety of notification mechanisms - but these cannot be combined with poll or select. Furthermore, the design of poll and select left something to be desired. Since the interface is idempotent, the desired set of file descriptors to be checked had to be passed into the kernel on each call to poll.
logbook entry #1 - background
I'm an engineer in the Solaris kernel group. I've been at Sun some 15+ years, working on a wide variety of projects including: Helping out on the amd64 Solaris port - getting Solaris running on Opteron.
logbook entry #1 - background
I'm an engineer in the Solaris kernel group. I've been at Sun some 15+ years, working on a wide variety of projects including: Helping out on the amd64 Solaris port - getting Solaris running on Opteron.
logbook entry #1 - background
I'm an engineer in the Solaris kernel group. I've been at Sun some 15+ years, working on a wide variety of projects including: Helping out on the amd64 Solaris port - getting Solaris running on Opteron.
