Coolthreads and Optimization

The collected expertise of a group of people dedicated to making things go faster

Last week I stumbled across a very interesting T2000 test blog from digitar in which the authors report having a single 1Ghz, eight core, T2000 running Solaris 10 with ZFS outperform an HP DL145 G2 with two Opteron 244s and Gentoo by up to 14.5 times.

The most interesting thing about this report wasn't the result or the excessive zeal the authors put into showing Sun how much they cherish their relationship with Sun, but their recounting of the optimization steps needed to achieve their results.

In particular they followed Sun's application specific configuaration guidelines and:

  • reset a list of system boot time parameters (/etc/system) to optimize for mysql operation;

  • changed some mysql code to use Solaris, rather than generic, mutexes; and,

  • used Sun's studio 11 compilers with high levels of automatic optimization for the hardware.

At the end of the report they first state that switching to the T2000 let them double capacity, eliminate eight HP DL145-G2 machines, and reduce their power, administration, and space costs. Duh, but then they go ahead and make some useful recommendations to Sun - including providing pre-optimized applications and ensuring that coolthreads optimized applications and related information become easier for customers to find.

Since the digitar report is dated in early May (2006) I think it preceeds creation of Sun's coolthreads optimization site which might therefore be considered a response.

That site is important: it has forums, links to downloadable code, and pre-optimized SAMP and other binaries. Got a T1000 or T2000 that isn't meeting expectations set by Sun ads and the blogosphere? Get your ready made code there - or get your questions answered there. Either way, you benefit from the collected expertise of a group of people dedicated to making things go faster - sometimes much faster. Here's what they claim:

Cool Stack is built using Sun Studio (TM) 11 Compiler using the -xO4 option for high levels of optimization. This results in anywhere between 30-200% performance improvement (depending on workload/application) over standard compilations performed using gcc.

And here's their current list of downloadable binaries:

CSQamp. This package includes Apache HTTP Server 2.0.58, MySQL 5.0.22 and PHP 5.1.4 built to work together. Apache httpd is built with MPM pre-fork and modules to support PHP, SSL and Perl. PHP has support for MySQL. Note, to work with PHP, MySQL included in this package is a 32-bit version. For the database server, we recommend you install the CSQmysql package which is a 64-bit version, allowing the use of larger caches to deliver improved performance for large databases. Note that the CSQamp package will work with the CSQmysql database server.
  • CSQmysql. This package includes a 64bit version of MySQL 5.0.22 and is built with innodb. See the README file in /usr/local/mysql for details.
  • CSQperl. This package includes Perl 5.8.8. Note that Solaris 10 ships with the same version of Perl. However, CSQperl is compiled with optimization and the Sun Studio compiler and will provide better performance. To use this version of perl, rather than the default one, include /usr/local/bin in your PATH before /usr/bin.
  • CSQphp. This package provides a stand-alone installation of PHP 5.1.4 and installs in /usr/local/php_fastcgi. This PHP can also be used via FastCGI from any other web server. This package should not be confused with the version of PHP in CSQamp - that version installs in /usr/local/php and is only for use with Apache HTTP Server. For instance, there is no 'php' executable in CSQamp.
  • CSQsquid. This package includes Squid 2.5.STABLE14 Web Proxy Cache. Squid is a single-threaded application and as such does not scale well on SMP platforms. You may need to run multiple instances to achieve scalability.
  • CSQtomcat. This package includes Apache Tomcat 5.5.17 which is a pure Java application. It is provided for convenience as it is no different from the one on tomcat.apache.org.
  • And that's a pretty cool list.