Performance Blog

Archive for the ‘Web Stack’ Category

We released Cool Stack 1.3.1 recently. This was the last release that was built to work on releases as old as Solaris 10 01/06 (Update 1). Going forward, future versions of the stack will only be supported on newer Solaris 10 updates. So I’d like to urge everyone who is running older releases to please schedule their systems for upgrade. We highly recommend that you upgrade to at least Solaris 10 01/08 (Update 5) as it has many performance, security and other fixes.

For some time now, we’ve had two different stacks for Solaris 10 and OpenSolaris – Cool Stack for Solaris 10 and Web Stack for OpenSolaris. We cannot continue to sustain this model  where we have two different source bases with slightly different versions of various components. Further, there has been interest from some large customers for a single stack to be supported on Solaris 10, OpenSolaris as well as Linux. These customers also wanted production support for the stack.

To enable a unified stack, we are now transitioning Cool Stack to Sun Web Stack. This new stack was announced in OSCON in July. It will be very similar to Cool Stack in that it will be separately downloadable but it will be a full-fledged product in that customers who want production support, can now purchase it. The stack will continue to be available free of charge with limited support via a forum.

The first version of Sun Web Stack will be 1.4 (keeping the Cool Stack versioning in place) and should be available in November. Current Cool Stack 1.3.x customers may not see new functionality in terms of upgrades to components in this release as we are trying to sync it to the current versions of components in OpenSolaris. However, Zones users may want to take a look at this release as it does separate out the binaries from the configuration/log files, making it easier for multiple zones to share a single installation in /opt and yet use custom configuration/logs which will be located in /etc, /var etc. similar to other Solaris applications.

With this transition to Sun Web Stack, I will no longer be directly associated with the development of the stack. I will however keep an eye on it’s performance and continue to push for increased performance via compiler optimizations or required source changes. We in the performance team will continue to use, test and analyze the performance of many of the components in the stack. So hopefully you will continue to monitor my blog as I talk more about the performance aspect of the stack.

Please do continue to use Cool Stack and Sun Web Stack as that product comes out. Sun is committed to a high-performing web stack of open source components on all platforms.

It’s finally here. Before you download the release, please do read the documentation. It’s over a month late, but hopefully the features will compensate for the delay.
Almost every single component in the stack has been upgraded. Two new packages, CSKpython and CSKnginx have been added. And yes – the python package does include mod_python too.
You can read about the full list of changes in the Changelog.


Significant changes have been made to the ruby package. In addition to the upgrade to ruby1.8.6p114, we include a number of gems, notably mysql, postgres and mongrel. It should also be easy to install any new gem that requires native compilation using gcc – this should just work out of the box. A word of caution if you’re running ruby on SPARC. Please DO NOT use gcc. If you’re importing native gems, take the extra step of installing Studio 12 and use the instead (simply rename it to rbconfig.rb after saving the current one). This file is located in /opt/coolstack/lib/ruby/1.8/sparc-solaris2.10.

There have also been significant performance enhancements for ruby made in this release. By changing compiler flags, we have measured 20-30% improvement. In addition, SPARC-specific patches (which are now in ruby 1.8.7) improve performance a further 8-15%. If you are a ruby user, let us know your experiences. I’d love to hear of any performance changes you see as well.
In a future post, I’ll share some performance results on the AMP stack. But for now, please try this release and let us know what you think via the forum or comments on this blog.

Cool Stack installation in Zones

For users who have installed Cool Stack in zones, I know the upgrade is a painful process. As I mentioned earlier, we do hope to fix this situation by allowing upgrade installs in future. But some users have found solutions on their own. In particular, I found this post in the forum interesting. Scroll down to reply 19.

I know many of you may be wondering why Cool Stack 1.3 isn’t out yet, so I thought I’d post an update on where we are with the release. When I first started talking about this, I was hoping to get the release out in early May. But several things have colluded to cause a delay.

  1. We took on a lot for this release. Although just looking at the proposal, it may seem like a simple matter to just update the versions of the various components, underneath the hood, we decided to do a lot more streamlining of the build and packaging process.  Since so many version updates were involved, that also meant more legal approvals.
  2. We have a more formal QA process for this release (and for future releases). The good news is that this means we will have a more quality release, but the bad news is that it now takes more time as we have to go through a couple of QA cycles at least to qualify the release.
  3. We are going to institute a patching process for releases going forward. What this means is that we can put out patches for critical bugs and provide an upgrade path for existing installations. This should especially prove useful to users who have installed in zones. Before everyone starts jumping up with joy, I want to mention that for 1.3, you will still have to go through the pain of a fresh installation after saving your config files and re-applying them. But going forward, say for 1.3.1 or 1.4, we will provide an upgrade option, so please bear with the pain for this one release.
  4. And there is now talk about making Cool Stack into a more full-fledged product with proper production support. This is one of the major reasons for all of the above enhancements and the cause of the delay, but we have got so many requests for production support now, that we felt it was worth taking the time to do some ground work to make this happen.
  5. Just to be clear, we will continue to provide free support through the Cooltools forum as we are doing now, and we hope more of you will help us out on the forum. We know there are many experienced Cool Stack users out there – if you think Cool Stack has saved you time, we hope you will consider giving back a little of your time to the forum. We have one full-time engineer assigned to the project and a few other Sun engineers who are interested in Cool Stack’s success contribute our time.  We are really short-staffed, so please, please do consider sharing your knowledge and helping out other Cool Stack users.

After reading all that, I know the big question still is : When will 1.3 be released ? We have just finished incorporating almost all components and are starting QA of build2. We have a few more things to take care of but I’m hopeful that we can get this out in the first week of June.

Thanks for your patience and your support of Cool Stack. Please do keep your feedback coming and subscribe to the forum. 

It’s been close to 4 months since we released Cool Stack 1.2, so it’s time to start thinking about the next release. Here’s what we have planned so far and as always I’m looking for feedback from current and future users on what you’d like to see. Needless to say, that all currently known bugs will be fixed and the current patches will be rolled into the release. However, if you don’t tell us about the problems you’ve run into, we won’t be able to fix them. So, once again I’d like to encourage people to please post your problem/issue/tips etc. on the forum.

Here’s a list of stuff we’re currently looking at for Cool Stack 1.3 :

Component Version in Cool Stack 1.3 Version in Coolstack 1.2
Apache 2.2.8 2.2.6
Tomcat 5.5.26 5.5.23
php 5.2.5 5.2.4
mysql 5.1 5.0.45
squid 3.0 2.6
apc 3.0.16 3.0.14
mod_perl 2.0.3 2.0.2
rails 2.0.2 1.2.3
Add php extensions: memcache , pdflib, and freetype , mcrypt
libevent 1.3e 1.3d
memcached 1.2.5 1.2.2
mod_jk 1.2.26 1.2.25
lighttpd 1.4.18 1.4.16
nginx 0.5.35
dtrace ruby extension
multithreaded perl
Improve lighttpd with more builtin extensions
mysql performance improvement with libfasttime/libmtmalloc
Add ruby gems :postgres, mysql.
Improve ruby build process (to make easier compilation of external gems)

I would like feedback on a couple of areas in particular:

  • MySQL 5.1 has many performance improvements and we’d very much like to package this version even though it’s not FCS yet (it’s been out for a looong time now and should be quite stable). Should we go ahead and use 5.1 instead of 5.0.x ?
  • We’ve heard some complaints about perl not being multi-threaded, but there is a small performance penalty associated with building it multi-threaded (especially if you’re not going to be using it’s multi-threaded features).  Any thoughts ?

Of course, please feel free to comment on anything else you’d like seen added/changed as well.


We have fixed the issue with the PHP dtrace extension not working in Cool Stack 1.2. As I mentioned in my announcement post, we had already identified the issue but didn’t have time to fix it before the release. The issue was that /usr/ccs/bin/ld was being used to do the linking but this doesn’t work for dtrace as some initialization code needs to be called from the .init section and this is not setup correctly if we don’t use ‘cc’ to do the linking (rather than ‘ld’). 

So a simple addition to the configure line:

did the trick.

We now have two files : and posted. Download the one for your machine and do the following :

  • Copy it to the php5 extensions directory of /opt/coolstack/php5/lib/php/extensions/no-debug-non-zts-20060613 and re-name it as
  • Add extension="" to your /opt/coolstack/php5/lib/php.ini. 

See my earlier post, for an example of how to use dtrace to trace through the AMP stack. 

Finally, it’s here. We missed our October 31 deadline, but hopefully that won’t matter when you see the contents of the release.

Short summary of changes in the 1.2 release.

You can download the new packages from the Sun Download Center.

Some caveats to be aware of :

  • These packages will over-write Cool Stack 1.1 packages that you may already have installed. All packages continue to install in /opt/coolstack but some of the package names have been changed. Thus, pkgadd(1M) will not know that the new CSKapache2 package will install in /opt/coolstack/apache2 and over-write the contents from a previous Cool Stack 1.1 installation of CSKamp. So, please do save your current installation. A detailed strategy to do this is  defined on the Cool Stack site. Here are some other short-cuts :
    • Move /opt/coolstack to /opt/coolstack1.1. Remove all the CSK* packages installed. Since the actual files in /opt/coolstack no longer exist (as you’ve moved the directory), pkgrm will do no harm but does change the system’s perception of what packages are installed. Then delete /opt/coolstack and start installing the new packages.
    • Save just the files you need – typically apache2/conf directory, your php.ini file etc. Then remove all the CSK* packages and delete /opt/coolstack.
  • This release was built and tested on Solaris 10. During final testing on Nevada (aka OpenSolaris or SXDE), we ran into package incompatibility issues. Some packages do not install in a straight-foward manner on OpenSolaris. Please use the work-around.
  • The php dtrace extension doesn’t work. We have identified the fix and will post a patch soon.

As always, please do read the FAQ (we will be updating this as we get feedback about the new release) and if that doesn’t help, post your question/problem on the CoolTools Forum.

Let us know what you think of this release via the forum, the feedback alias or this blog. If we don’t get feedback, it is hard to know what components to include or what bugs need to be fixed.

Sun recently announced the Sun SPARC Enterprise T5120 and T5220 and Sun Blade T6320 systems based on the UltraSPARC T2 processor.  You can find lots of information on the various features and functionality provided by these servers.

One other cool feature is that these systems ship with Cool Stack pre-loaded. The Cool Stack 1.1 packages are available in /var/spool/pkg. You can install the ones you want using the pkgadd(1M) command as follows :

root@wgs40-82 # cd /var/spool/pkg
root@wgs40-82 # ls
CSKampSrc_sparc.pkg        CSKphplibs_sparc.pkg
CSKamp_sparc.pkg           CSKrubySrc_sparc.pkg
CSKmemcachedSrc_sparc.pkg  CSKruby_sparc.pkg
CSKmemcached_sparc.pkg     CSKsquidSrc_sparc.pkg
CSKmysqlSrc_sparc.pkg      CSKsquid_sparc.pkg
CSKmysql_sparc.pkg         CSKtdsSrc_sparc.pkg
CSKncursesSrc_sparc.pkg    CSKtds_sparc.pkg
CSKncurses_sparc.pkg       CSKtomcat_sparc.pkg
CSKperlSrc_sparc.pkg       Changelog.txt
CSKperl_sparc.pkg          CoolStack1.1_sparc.pdf
CSKphplibsSrc_sparc.pkg    LICENSE.txt
root@wgs40-82 # pkgadd -d CSKamp_sparc.pkg

The following packages are available:
  1  CSKamp     Apache httpd, PHP and MySQL
                (sparc) Apache 2.2.3, PHP 5.2.0, MySQL 5.0.33

Select package(s) you wish to process (or ‘all’ to process
all packages). (default: all) [?,??,q]:


Latest Tweets