Information Library for Solaris 2.6 (SPARC Platform Edition)

Performance Improvements

Solaris 2.6 performance enhancements focused on improving database and web performance while maintaining the already high levels of file server and time-share performance seen in the Solaris 2.5.1 release.

Database Performance

Significant efforts were made to improve performance of the system for database engines. Work focused on two areas: virtual memory (VM) improvements and I/O throughput improvements.

VM changes focused on reducing overhead by using larger pages for the shared memory area used by database engines to share and store data. Instead of using the default system page size for pages in this area, a large page size of 4 Mbytes is used. This reduces the amount of internal work the system has to do when managing the descriptions attached to each process for pages the process is using. When coupled with existing mechanisms for sharing these descriptions, a performance increase of about 12% was achieved on various industry standard tests.

I/O throughput jumped as the result of low-level changes that minimized the overhead associated with processing large lists of pages for I/O. These modifications reduced the overhead associated with converting the virtual address used by the system to the physical address needed by the device drivers to execute I/O requests. With these improvements, the cost of doing I/O to physical devices dropped dramatically.

Throughput improvements have been demonstrated in a recent Informix TPC-C benchmark which

This produced the highest Informix TPC-C number ever produced and reflects the best price/performance in the mid-range class.

TPC-C is a benchmark conducted under the auspices of the Transaction Performance Processing Council (TPC). It simulates a warehouse distribution system. Data is contained in nine tables and five transactions are executed against this data in prespecified mixes. The figure of merit is tpmC, which is shorthand for transactions per minute" in the TPC-C benchmark.

UFS Direct I/O

Many customers are interested in placing data directly on disk without buffering it in memory. The Solaris 2.6 release provides direct I/O to do this. Bulk I/O operations use large buffer sizes to transfer large files (files larger than physical memory). An example of a bulk I/O operation is downloading large amounts of satellite data to a file.

Direct I/O data is read or written into a process's address space without incurring the overhead of the operating system's page caching mechanism.

See the directio(3C)man page for more information.

Raw I/O

Improvements were made to low-level I/O support routines that dramatically improved throughput for I/O to disk devices without a file system (raw devices). (Raw devices are often used for database files.) The driver for the SPARCstorage Array was rewritten to improve its throughput.

Network/Web Server Performance

Previous efforts in improving network throughput had focused on improving throughput for long-lived connections. These efforts resulted in the highest NFS server performance numbers in the industry. The web server area represents an entirely different paradigm since it emphasizes short-lived connections with little bandwidth demand during the connection. Some of the work for the Solaris 2.6 release to greatly improve that aspect of performance was packaged and released as the Solaris Internet Server Supplement (SISS) for the Solaris 2.5.1 release.

Web server performance improvements were achieved in several places, ranging from the socket interface layer, the TCP/IP protocol stack, and the STREAMS framework. The socket interface layer was redesigned as a file system (sockfs), thereby removing the need to duplicate socket code in the socket library as well as the STREAMS socket module. This significantly improved the performance for the short-lived connections that are common on the Web. The TCP/IP changes consist both of improvements to efficiently handle large numbers of connections as well as further improvements to the multithreading of the opening and closing of connections and sockets. Finally, the STREAMS framework has been restructured to allow more efficient opening and closing of TCP/IP sockets.

The Standard Performance Evaluation Corporation (SPEC) has released SPECweb96, a standardized benchmark for comparing web server performance. The benchmark is designed to provide comparable measures of how well systems can handle HTTP GET requests. SPEC based the work load on analysis of server logs from Web sites ranging from a small personal server up through some of the Internet's most-popular servers. Built upon the framework of the SPEC SFS benchmark, SPECweb96 can coordinate the driving of HTTP protocol requests from single- or multiple-client systems. For the latest Solaris 2.6 SPECweb96 submissions and more information on SPECweb96 benchmarks, please visit the SPEC web site: http://www.specbench.org.

Kernel Sockets

The kernel sockets implementation provides improved compatibility with SunOSTM 4.x and BSD sockets, enabling higher socket performance.

TCP Large Windows

TCP large windows provides the support described in RFC1323. It is designed to improve performance over high bandwidth networks such as ATM, or high-delay networks such as satellite links, by expanding the amount of data that can be outstanding in a TCP session from 65535 bytes to approximately 1 Gbyte.

Zero Copy TCP/Hardware Checksum

Zero copy TCP/hardware checksum functionality can be used to increase TCP throughput in certain situations. It does so by avoiding the copying of data and by using hardware checksum logic in the network interface when available. Currently, the only network interface that contains the hardware checksum logic is the SunATM 622 interface.

For more information, see Transport Interfaces Programming Guide.