Solaris OS on Xeon Processor-Based Systems The purpose of this whitepaper is to discuss the advantages of running the SolarisTM operating system on the Intel® Xeon® processor and the collaborative efforts of the Sun and Intel teams that have made this combination a fast, efficient, and high-performance platform for development and deployment. Note – Intel Xeon® is a registered trademark of Intel Corporation or its subsidiaries in the United States and other countries. Table of Contents ■ “Intended Audience” on page 2 ■ “Introduction” on page 2 ■ “Advantages of Running the Solaris OS on the Xeon Processor” on page 2 ■ ■ ■ ■ ■ “Tools Optimizations” on page 3 “Device Support” on page 4 “Power Management” on page 5 “Performance and Scalability” on page 7 “Predictive Self-Healing and Solaris Fault Management Architecture (FMA)” on page 8 ■ “Conclusion” on page 9 ■ “About Solaris” on page 9 ■ “About the Xeon Processor” on page 10 Intended Audience This whitepaper discusses the advantages of running the Solaris OS on the Intel Xeon processor and provides an overview of the Solaris OS and Xeon technologies. The paper also discusses the various improvements and modifications made by both Sun and Intel to increase performance, efficiency and reliability which makes the Solaris OS on the Xeon processor a powerful and attractive option for developers and corporations. This whitepaper is intended mainly for developers on the Solaris OS and Intel Xeon platforms, ISVs, and Web 2.0 companies. People involved in Enterprise IT and others interested in learning about the results of the collaborative efforts between Sun and Intel will also find this whitepaper useful. Introduction The process of choosing an operating system to use for development and deployment is a complex one, which requires assessing both today's needs as well as forecasting technology and business trends for the future. Change is accelerating at the edges of the World Wide Web, as more Web 2.0 and Software as a Service (SaaS) solutions become common, requiring the utmost in agility and efficiency. Simultaneously, the demands of established business data centers require technology to minimize costs while maintaining reliability. Sun Microsystems' Solaris 10TM operating system and its counterpart, the OpenSolarisTM operating system , when deployed on Intel Corporation's Xeon processor-based servers, become a great choice for both leading edge applications and the established enterprise data center. Sun and Intel have formed a deep, mutual commitment and a joint and open development alliance to provide outstanding performance, energy efficiency, reliability and serviceability, device support and technology innovation for the Solaris OS on the Xeon platform. Advantages of Running the Solaris OS on the Xeon Processor Sun and Intel have been working together on performance optimizations and chip enablers to provide increased performance, power optimization and virtualization options for the Solaris OS running on Xeon-based systems. This document describes in detail some of these optimizations and techniques. Solaris OS on Xeon Processor-Based Systems 2 ■ ■ ■ ■ ■ “Tools Optimizations” on page 3 “Device Support” on page 4 “Power Management” on page 5 “Performance and Scalability” on page 7 “Predictive Self-Healing and Solaris Fault Management Architecture (FMA)” on page 8 Tools Optimizations The Solaris OS provides a wide array of development tools for developing applications. The Sun StudioTM software provides a premier development environment for the Solaris OS through its C, C++ and Fortran compilers along with a NetBeans based IDE. Sun Studio 12 is supported on both SPARC and x86 platforms. It includes tools for multi-threaded programming, debugging, performance analyzer/profiler, and programming for high-performance applications. Optimizations made to the compiler tools and runtime libraries from both Sun and Intel help developers create applications that maximize performance for the Solaris OS on Xeon platform. This section discusses the Sun Studio compiler optimizations for the Xeon processor. Sun Studio Compiler Optimizations Solaris and Sun Studio teams have made specific changes to the compiler to make optimal use of cache, chip and instruction timing characteristics of the Intel CoreTM micro-architectures. These improvements include : ■ Instruction selection. ■ Instruction scheduling. ■ Fixing issues of partial register stalls. ■ Improved microvectorization (particularly of doubles). ■ Improved alignment. ■ Tuning prefetching algorithm for these targets. ■ Using SSE3 instructions in complex arithmetic operations (with possible 30% improvements in applicable complex kernels). ■ Performance tuning of sunperflib (Sun Performance Library) and math routines. Support For New Instructions Intel has a developed a new iteration of the Streaming SIMD Extensions (SSE) instruction , the Supplemental Streaming SIMD Extension 3 (SSSE3). The SSSE3 instruction set is available on the Xeon 5100 family of processors and the Intel Core 2 processors. The SSE 4.1 instruction set is available on the PenrynTM processor. The SSE 4.2 instruction set will be available on Nehalem , Intel's next-generation microarchitecture processor. Compiler support for the new SSSE 3, SSE 4.1 and SSE 4.2 instructions is available in the assembler and MMX/XMM intrinsics. The intrinsics are available in a form compatible with the Intel compilers. If your system supports the latest instructions, the isainfo -x command may show output similar to the output shown below : $ isainfo -x i386: ssse3 ahf cx16 mon sse3 sse2 sse fxsr mmx cmov sep cx8 tsc fpu Performance Improvements The Sun Studio compiler shows dramatic improvements on the Intel Xeon processor 5100 family of processors with the Sun Studio 12 compiler patches, particularly on the SPECfp codes. The Sun Studio 12 patches are available at http://developers.sun.com/sunstudio/downloads/patches/ss12_patches.jsp. Solaris OS on Xeon Processor-Based Systems 3 Note – SPECTM, SPECintTM, SPECfpTM are registered trademarks of the Standard Performance Evaluation Corporation. Among the key improvements and support features included in the patches are : ■ On SPECfp2006TM codes, there is a 35% improvement on the Quad-Core Intel Xeon X3220 processor—based systems and a 31% improvement on the Quad-Core Intel Xeon X5355 processor which is used in the Sun Fire x4150 system. Similarly on SPECfp2000TM codes, there is a 56% improvement on the Quad-Core Intel Xeon X3230 processor-based systems and a 52% improvement on the Quad-Core X5355 processor-based systems. ■ Support for -xtarget=woodcrest , -xtarget=native and -fast options support for appropriate -xarch, -xchip and -xcache values. Device Support Sun and Intel are collaborating to provide a rich and growing set of drivers for the hardware found on Intel processor technology based desktop and laptop systems. For example, many of the mobile computers found today make use of Intel Centrino Duo processor technology and have a broad collection of devices and silicon, such as wireless LAN, wired LAN, manageability, graphics and local disk storage. Some of the areas of collaboration include : ■ Intel 4965 Wireless LAN — Intel and Sun collaborated on a new wireless LAN driver, called the iwk driver. The 4965 wireless controller is part of the Intel Centrino Pro platform, and provides 802.11ABGN support. The joint team has the initial functionality working and released, and will be enhancing the driver with additional features. ■ Wired LAN — Intel and Sun have worked together to release new drivers for Intel's 100/1000 networking as well as future LAN silicon from Intel. Driver support will be delivered in future update releases of the Solaris OS. I/O Acceleration Technology (IOAT) As ethernet networking bandwidth requirements have continued to increase, the CPU overhead involved with processing the IP protocol has increased proportionately. The overheads are usually a result of receiving data, retrieving data and processing data through the network stack. Intel's IOAT moves data more efficiently through the Xeon-processor based servers for fast, scalable, and reliable network performance. IOAT has re-architected the network software and takes advantage of a new LAN controller in the chipset to dramatically cut the processor utilization for high speed IP traffic. Primary among the changes made in the Solaris OS kernel to take advantage of the IOAT DMA hardware are : ■ The implementation of two new kernel subsystems in the network stack, the UIOA (Asynchronous User IO) and SOD (SOcket Direct Access). ■ The implementation of DCopy driver. A KAPI (Kernel API) provides the interfaces from the network stack to the device driver. ■ DCA (Direct Cache Access) – This allows the data to be cached so that it can be accessed directly by the DMA. The Solaris OS will then be able to utilize the following features of IOAT : ■ Zero CPU Copy TCP/IP – This results in lower CPU utilization on the receive side. ■ Split Header/Payload DMA – In TCP/IP based communication for transmission of application data, headers such as TCP header, IP header, a checksum, and a Ethernet header are attached along with the application data. Typically, the network controller transfers the headers and the application data onto a single buffer. However, with the split-header feature, the network interface controller splits the network data into headers and application data and copies them into two separate buffers. During network processing, the application data is rarely accessed. This results in only the network data being cached leading to better cache utilization . Solaris OS on Xeon Processor-Based Systems 4 Threading Building Blocks (TBB) Threading Building Blocks (TBB) is an open-source C++ runtime library from Intel that abstracts the low-level threading details necessary for optimal multi-core performance. TBB makes it easier to develop threaded applications for newer multi-core processors, including Quad-Core Intel Xeon processors. Software parallelism can unleash the processing power that the newer multi-core architectures provide, including the Quad-Core Intel Xeon processors. For developers, multithreading offers a software parallelism model, but many existing solutions require a lot of low-level coding. Threading Building Blocks offers a rich approach to expressing parallelism in a C++ program by offering higher-level, task-based parallelism that abstracts platform details and threading mechanism for performance and scalability. As part of the Sun Microsystems and Intel alliance, the two companies have collaborated to bring open source Threading Building Blocks (TBB) support to the Solaris Operating System and Sun Studio software toolchain. This enables the Solaris OS to take further advantage of multicore architectures, including the Intel Architecture, supporting features such as a lightweight processes (LWPs), load-balancing across cores, and processor affinities. Sun Studio software offers a complete, integrated toolchain for the Solaris OS platform, including parallelizing compilers, performance and thread analysis tools, memory and code debuggers, and a NetBeans-based IDE. Combined with Threading Building Blocks, developers for the Solaris platform now have a fully loaded toolbox that simplifies the development of optimized, multithreaded applications for multi-core Intel processors and enables developers to quickly harness the full processing power of the Solaris OS. See the Threading Building Blocks website at http://www.threadingbuildingblocks.org for more information about this project. Power Management Typically, power management features on x86 systems are exposed by the hardware through the Advanced Configuration and Power Infrastructure (ACPI) mechanism. The areas of focus by the joint teams include active power management through managing P states and idle power management using C states. When a processor core is completely occupied (100%), the core needs access to all the available power so as to be able to get the maximum performance. This is provided through setting the highest P state. But when a core is not fully occupied, then the system can lower the voltage and frequency in steps without affecting overall throughput, and provide considerable energy savings at the same time. This is achieved by placing the core in a lower P state. Sun and Intel have collaborated on P state management code which takes advantage of the Intel processor's ability to change P states with very low time penalty, so that the maximum power is saved while providing a quick power-up when needed. Although considerable power can be saved by placing the system into a very low C state, such as a C6 state as supported by many Intel processors, the time to recover to an active running state (the highest C state) can have an impact on the system. Sun and Intel are working to enhance the existing C state support in Solaris to enable the system to go into the deepest power saving state possible when a processor is idle. Any application which periodically wakes up and polls for some information tends to wake up a processor and prevents it from spending more time in a low C state during idle time. The kernel itself is designed to periodically wake up every processor to process a clock tick. The Sun and Intel teams are working to make the Solaris kernel tickless, which means it will not periodically wake up to process a clock tick, but rather stay idle until an event of interest occurs, and then wake up. This will save considerable energy when linked with an improved C state support. To identify applications or programming systems which may be responsible for polling behavior, an application called PowerTOP has been developed by the Intel and Sun teams. The PowerTOP application points the developer to areas which consume high power within the application in the following ways: ■ PowerTOP can indicate to the user the length of time the system has been resident in its various P states and C states. A P state refers to Processor Performance State or voltage/frequency operating points. A C state refers to a CPU(processor) power state. Solaris OS on Xeon Processor-Based Systems 5 A non C0 state allows you to save power while the processor is idle, whereas a C0 state saves power while the processor is active. ■ PowerTOP displays the applications which may be waking the system up unnecessarily and preventing it from going into a power-saving sleep. PowerTOP shows the areas which need to be improved to quiet the system down to minimize energy waste. The Solaris PowerTOP application is built upon the DTrace dynamic tracing framework, providing unprecedented, low (or nil) performance overhead insight into power management related operating system activity. Note – Instrumentation is zero overhead when not dynamically enabled by running PowerTOP. For more information about obtaining and using PowerTOP, see PowerTOP's project page on OpenSolaris.org at http://www.opensolaris.org/os/project/tesla/work/powertop. Intel Demand Based Switching (DBS) With the integration of the CPU frequency scaling module in the Solaris OS, the Intel Xeon processor is the first x86 system to support power management on Solaris. This technology is called the Intel DBS technology, also known as Enhanced SpeedStepTM technology. SpeedStep is the trademark for a series of technologies built into Xeon microprocessors that allows the clock speed of the processor to be dynamically changed by software. The benefits of SpeedStep include increased performance for frequently blocked workloads and enabling the processor to wake up from idle state immediately to do necessary work without wasting CPU time and power. Type the following command to display the new supported_frequencies_Hz kstat statistic that has been added to the cpu_info module : $ kstat -m cpu_info -s supported_frequencies_Hz The output is shown below: module: cpu_info name: cpu_info0 supported_frequencies_Hz module: cpu_info name: cpu_info1 supported_frequencies_Hz instance: 0 class: misc 2800000000:3200000000 instance: 1 class: misc 2800000000:3200000000 The Solaris OS supports frequency scaling for each frequency listed for the CPU instances above. Enabling SpeedStep on Your System To enable CPU power management on your Intel-based system and set its CPU idle threshold, add the following two entries to the power.conf(4) file : 1. cpupm enable 2. cpu-threshold 15s Note – In this example the cpu-threshold factor has been set to 15 seconds. Run the pmconfig(1M) command to activate the changes made to the power.conf file. Now, when the system is left idle for 15 seconds or more, the CPU consumes less power and generates less heat as a result. To see this, type the following command to display the current_clock_Hz kstat statistic : $ kstat -m cpu_info -s current_clock_Hz Solaris OS on Xeon Processor-Based Systems 6 The output is shown below: module: cpu_info name: cpu_info0 current_clock_Hz instance: 0 class: misc 2800000000 module: cpu_info name: cpu_info1 current_clock_Hz instance: 1 class: misc 2800000000 Performance and Scalability This section discusses the performance improvements made by Sun and Intel to increase performance for the Solaris OS on Xeon processor-based systems. Enhancements have been made to the Solaris OS thread scheduler (dispatcher) to enable it to adapt and to scale to a variety of system cache and processor topologies. For example, a scheduling algorithm which is not aware of the core, hardware thread and cache hierarchy, might actually lower throughput by scheduling threads in a way that causes them to contend with each other and fight over shared resources. By correctly identifying Intel processors and system topology via the CPUID instruction, the scheduling and memory placement algorithms are able to provide maximum throughput. (This change, which properly used the results of the CPUID instruction, provided a 10% performance boost on a Xeon 7000 series system running a popular standard integer CPU benchmark.) A common way to increase performance is to analyze common instruction sequences and find ways to speed up the code sequences. Intel and Sun have analyzed several instruction sequences and are working together to optimize various libc routines for use with new instructions. The following list provides examples of routines which have new and faster instructions specifically for the Solaris OS on Xeon platforms. ■ memset()– This libc routine is commonly called by applications to set a fixed-length block of memory to a particular value, for example to zero out the block. ■ memcpy()– This function is used to copy one fixed-size data block to another location. ■ memmove()– This function is used to move one fixed-size data block to another location. ■ strlen()– This function returns the length of a string (a variable-length sequence of data bytes or characters terminated by a byte value of 0) ■ strcpy() – This function copies a string from one location to another. ■ strcmp() – This function compares two strings with each other and determines where the first difference is located. These primitive functions are commonly used by programmers in a variety of settings. By using various versions of Intel's Streaming SIMD Extensions (SSE instructions) and recoding these assembly language routines, the team was able to see performance improvements. The improvements vary depending on the size and alignment of the data. Some cases can speed up as much as 300% in some of the mem cases and up to 400% for some of the str functions, when evaluated by the lib benchmark. Actual performance improvements may not be as dramatic, but if an application makes use of these routines on Intel's newest processors, they should be able to see a performance boost. Intel and Sun are continuing to analyze common usage cases where new instructions can be utilized. Intel Virtualization Technology (VT) Helping to transform IT environments, hardware-assisted Intel Virtualization Technology (Intel VT) provides greater flexibility and maximum system utilization by consolidating multiple environments into a single server, workstation, or PC. With fewer systems required for the same tasks, Intel VT delivers the following advantages : ■ Simplified resource management increasing IT efficiency. ■ Decreased disaster recovery time. ■ Greater systems reliability and availability reducing corporate risk and real-time losses from downtime. Solaris OS on Xeon Processor-Based Systems 7 ■ Lower hardware acquisition costs with increased utilization of the existing systems. As strong proponents of open source software, Intel collaborates with the Xen community to enable the Xen hypervisor to take advantage of Intel VT. Intel and Sun are working on taking advantage of this work with the latest VT features. In addition, there are future VT features under development, which Sun and Intel will continue to include in the Xen community and in the Sun xVM server, which is based on technology from the Xen community. Sun xVM Sun xVM is Sun's enterprise-class software infrastructure platform for the virtualization and management of heterogeneous IT infrastructure that provide end-to-end solutions from desktops to the data center. The Sun xVM platform is designed to deliver a combination of virtualization and management and comprises the following key software products: ■ xVM Ops Center – Manage heterogeneous data centers. ■ xVM Virtual Box – Developer environment which allows the applications to be created and run on multiple operating systems such as Windows, Linux and, Macintosh on one desktop system. ■ xVM Virtual Desktop Infrastructure (VDI) – Delivers your desktop securely on multiple platforms . ■ xVM Server – Enterprise grade bare metal hypervisor. Predictive Self-Healing and Solaris Fault Management Architecture (FMA) Predictive Self Healing is an innovative capability in Solaris 10 that automatically diagnoses, isolates, and recovers from many hardware and application faults. As a result, business-critical applications and essential system services can continue uninterrupted in the event of software failures, major hardware component failures, and even software misconfiguration problems. Solaris Fault Manager (FMA) Solaris Fault Manager is a new Predictive Self Healing facility that collects data relating to hardware and software errors. It automatically and silently detects and diagnoses the underlying problem, with an extensible set of agents automatically responding by taking the faulty component off line. Easy-to-understand diagnostic messages link to articles in Sun's knowledge base that clearly guide administrators through corrective tasks that require human intervention. The open design of the Solaris Fault Manager facility also permits administrators and field personnel to observe the activities of the diagnostic system. With the Solaris Fault Manager, the overall time to automatically detect a fault condition to any necessary human intervention is greatly reduced, increasing your application uptime. Intel and Sun have added enhancements to the FMA software to provide increased Reliability, Availability, Serviceability (RAS). The FMA software complements the RAS features of the Intel hardware to report when maintenance action is required. A key error-mapping feature enables a developer to decode memory errors and indicate the location of the specific Dual In-Line Memory Module (DIMM) that has failed. This error mapping feature adds serviceability, avoiding a trial and error search for a failing DIMM. Sun and Intel have also worked together to insert probes in the system to help FMA diagnose a hardware fault correctly. This verification ensures that users running the Solaris OS on Xeon processor-based systems will get a correct diagnosis and recovery when a hardware fault occurs. Solaris OS on Xeon Processor-Based Systems 8 Conclusion The collaboration of Sun and Intel and the joint work of engineering teams from both companies has provided a wonderful and innovative developer platform, the Solaris OS on Xeon. This alliance of technology giants combines the world's most advanced OS onto the world's most prolific chip architecture. Intel and Sun believe that the combination of Sun's open source operating system, the Solaris OS and Java environments, along with Sun Studio and NetBeans development tools, running on Intel's Xeon architecture provide a solid platform for ISVs to develop and deliver applications which provide outstanding differentiated value to enterprise customers. In the coming years, Intel and Sun will continue to evolve best of breed development environments for all classes of computing (enterprise, web, HPC) with high performance support and great debugging tools for all types of development environments. The end result is software innovation that solves the challenges and problems in today's data center and on the developer's client system. About Solaris The Solaris Operating System supported on over one thousand x86 and SPARC platforms consists of the Solaris OS release and the OpenSolaris release. The free and open Solaris OS is the industry's leading UNIX operating system with features designed to save your business time and money and the next generation of Solaris is being built in the OpenSolaris community. The latest features can be found in the OpenSolaris OS, including the latest innovations from Intel on the Xeon processor. Go to http://www.sun.com/solaris for a detailed description of all the features in the Solaris 10 operating system. Breakthrough Features Some of the major features that have helped Solaris become the OS of choice for the enterprise segment include Dynamic Tracing (DTrace), Predictive Self-Healing, ZFS, and Containers. A brief overview of each of these features is listed in the sections below. DTrace DTrace is a comprehensive dynamic tracing framework for the Solaris Operating Environment. DTrace helps the developer debug systemic problems that are difficult to diagnose using traditional debugging tools and mechanisms by allowing you to dynamically modify the operating system kernel and user processes to record data. This process helps you to understand the behavior of the operating system and user programs. For more information on DTrace and how to use it, see the DTrace Quick Reference Guide at http://developers.sun.com/solaris/articles/dtrace_quickref/dtrace_quickref.html or the Solaris Dtrace Guide at http://docs.sun.com/app/docs/doc/817-6223/. Predictive Self Healing Sun has developed a new architecture for building and deploying systems and services designed for Predictive Self-Healing. Self-healing technology enables Sun systems and services to maximize availability in the face of software and hardware faults and facilitates a simpler and more effective end-to-end experience for system administrators, which can reduce cost of ownership. For more information on Predictive Self-Healing, go to http://www.sun.com/software/solaris/availability.jsp. ZFS ZFS is a new kind of file system that provides simple administration, transactional semantics, end-to-end data integrity, and scalability. Solaris OS on Xeon Processor-Based Systems 9 For more information on ZFS, go to the ZFS Learning Center at http://www.sun.com/software/solaris/zfs_learning_center.jsp and see the Solaris ZFS Administration Guide at http://docs.sun.com/app/docs/doc/819-5461/. OS Virtualization Sun's complete desktop-to-data center virtualization portfolio includes unified management and virtualization of OS, servers, storage, networking, desktops and applications. With comprehensive architectural expertise to help design, implement, optimize and manage virtualized solutions and a full spectrum of partner offerings, Sun helps customers build a more resilient and secure data center. For information about Sun xVM and related technologies, see the virtualization products page at http://www.sun.com/software/products/virtualbox. About OpenSolaris The free and easy to use OpenSolaris operating system is a leading-edge open source release with world-class support and unique, innovative features. The OpenSolaris OS is fully redistributable and is supported on over 1,000 different types of systems from desktops, laptops, servers, and data centers. OpenSolaris contains many new and enhanced features that may not be available with the current Solaris 10 operating system release. OpenSolaris will include the latest Intel innovations, some of which may also be included in subsequent Solaris 10 updates and milestone releases, as per the OpenSolaris and Solaris release model. Some examples of the latest features in the OpenSolaris OS are : ■ Easy-to-use graphical installer. ■ ZFS as the default root file system. ■ A network-based Image Packaging System (IPS) with access to a full suite of software applications. ■ Ability to easily update to newer builds between releases of the operating system. ■ A more familiar environment for users and developers of Linux-based operating environments. The OpenSolaris OS operates on a 6 month release cycle. Software updates, new drivers, and bug fixes will be available from the new package repository in between the OpenSolaris releases. The http://www.opensolaris.com web site is a starting place for users to download the OpenSolaris software, access the new community package repository and have their OpenSolaris questions answered. About the Xeon Processor The breakthrough performance, energy efficiency, and reliability of Intel Xeon processor-based server systems make them the ideal choice for all of your data demands on standard enterprise infrastructure applications. They are also uniquely well suited for virtualization and consolidation projects or high-density deployments in power constrained data centers. You can develop and deploy your high performing Solaris applications on the ultimate solution for cooling and density challenges - all on the world's most popular server platform. By selecting a platform that is best tuned for the most common IT usages, Intel Xeon processor-based servers are able to better optimize return on investment while extending the leading performance and performance-per-watt advantages enjoyed when using Intel's proven multi-core technology. Intel Xeon processors help provide your data center or business with the performance headroom needed to confidently consolidate applications onto fewer systems using proven virtualization solutions or the compute power necessary for high-performance computing applications and workstation solutions. For more information, see the Intel Xeon product page at http://www.intel.com/products/server/processors/index.htm. Solaris OS on Xeon Processor-Based Systems 10 Copyright 2008 Sun Microsystems, Inc. All rights reserved. Sun Microsystems, Inc. has intellectual property rights relating to technology embodied in the product that is described in this document. In particular, and without limitation, these intellectual property rights may include one or more U.S. patents or pending patent applications in the U.S. and in other countries. U.S. Government Rights – Commercial software. Government users are subject to the Sun Microsystems, Inc. standard license agreement and applicable provisions of the FAR and its supplements. This distribution may include materials developed by third parties. Parts of the product may be derived from Berkeley BSD systems, licensed from the University of California. UNIX is a registered trademark in the U.S. and other countries, exclusively licensed through X/Open Company, Ltd. Sun, Sun Microsystems, the Sun logo, the Solaris logo, the Java Coffee Cup logo, docs.sun.com, Java, and Solaris are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the U.S. and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc. The OPEN LOOK and SunTM Graphical User Interface was developed by Sun Microsystems, Inc. for its users and licensees. Sun acknowledges the pioneering efforts of Xerox in researching and developing the concept of visual or graphical user interfaces for the computer industry. Sun holds a non-exclusive license from Xerox to the Xerox Graphical User Interface, which license also covers Sun's licensees who implement OPEN LOOK GUIs and otherwise comply with Sun's written license agreements. Products covered by and information contained in this publication are controlled by U.S. Export Control laws and may be subject to the export or import laws in other countries. Nuclear, missile, chemical or biological weapons or nuclear maritime end uses or end users, whether direct or indirect, are strictly prohibited. Export or reexport to countries subject to U.S. embargo or to entities identified on U.S. export exclusion lists, including, but not limited to, the denied persons and specially designated nationals lists is strictly prohibited. DOCUMENTATION IS PROVIDED “AS IS” AND ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD TO BE LEGALLY INVALID. Sun Microsystems, Inc. 4150 Network Circle, Santa Clara, CA 95054 U.S.A.