Skip to main content

Linux on POWER: An overview for developers

Calvin Sze (calvins@us.ibm.com), Linux consultant, IBM, Software Group
Calvin Sze is a Linux consultant for the IBM eServer Solutions Enablement organization at IBM. He is based in Austin, TX. Calvin’s main role is to help solution developers bring their applications to Linux on POWER. Calvin has been involved in software development, system integration on both Linux and AIX platforms for more than 10 years. You can contact Calvin at calvins@us.ibm.com.
Chakarat Skawratananond, Linux on POWER technical consultant, IBM, Software Group
Chakarat Skawratananond is currently a technical consultant in the IBM eServer Solutions Enablement organization, where he assists ISVs in enabling their applications for Linux on POWER architecture. He has published a number of articles for IBM developerWorks in the area of Linux migration. He can be contacted at chakarat@us.ibm.com.
Brent Baude (baude@us.ibm.com), Linux on POWER technical consultant, IBM, Software Group
Brent Baude is a Linux consultant for the IBM eServer Solutions Enablement organization at IBM. He is based in Rochester, Minnesota. Brent's main role is to help solution developers bring their applications to Linux on POWER. Also while in Rochester, Brent has held various positions in the iSeries development lab.

Summary:  Linux® brings open standards, along with maximum availability and flexibility, to your business solutions. Add the proven performance and reliability of the POWER™ processor-based family of servers, and applications will reap the combined advantages of Linux on POWER. This paper introduces Linux on POWER hardware and software environments and is intended to provide application developers with the information they need to get started. [This article has been updated to reflect changes to IBM's eServer product offerings -- Ed.]

Date:  24 Jul 2006 (Published 31 Mar 2005)
Level:  Introductory
Activity:  1717 views

Introduction

This article provides overviews of the following topics:

  • Advantages of POWER5™ and POWER5+™ architectures
  • Linux on POWER5 processor-based servers, including the recently announced IBM System p5™ Express family of servers, and PowerPC® 970- and 970FX-based eServer™ BladeCenter™ JS20 servers
  • IBM® Virtualization Engine™ technology and how Linux users will benefit from it
  • The latest versions of the IBM supported Linux distributions: SUSE LINUX Enterprise Server 9 (SLES9) and Red Hat Enterprise Linux Advanced Server 4 (RHEL AS4)
  • Compilers and software available on each platform

Overview of Linux on POWER hardware

The IBM eServer p5, IBM eServer i5, and IBM System p5 Express servers are based on POWER5 and POWER5+ architectures, which are the latest generation of POWER technology.

POWER5 processor-based servers can scale up to 64-way Symmetric multi-processor (SMP) and has two 64-bit processor cores on a chip.

The POWER5+ processor uses 90 nanometer technology, which results in a 37% reduction in size and 15% higher frequencies and higher bus rates than POWER5. POWER5+ processor-based servers, depending on the model, include one of the following processor/memory packaging modules:

  • Dual-core: two 64-bit processor cores on a chip
  • Quad-core: four 64-bit processor cores on a chip
  • Multi-chip: eight 64-bit processor cores on a chip

Figure 1 shows the three different packaging options available on POWER5+ processor-based servers.


Figure 1. Hardware Management Console (HMC)

Some advantages of the POWER5 and POWER5+ processors include:

Simultaneous multi-threading (SMT)
Allows the POWER5 core to run two separate sequences of instructions at the same time.

Virtualization Engine
Designed to pool server, storage, and networking resources into a single virtual environment to optimize their use across multiple application environments and operating systems.

Mainframe-inspired Reliability, Availability, Serviceability (RAS) technology
Includes:
  • Service processors: A service processor is a separate microprocessor that implements many surveillance and failure log functions, for example, during boot time. A surveillance monitor in the service processor is automatically enabled to check for "heartbeats" from the boot firmware. If a heartbeat is not detected within a default period, the service processor is designed to cycle the system power and attempt to reboot until the system boots successfully.
  • Service processor failover: The service processor failover feature is available on the following eServer p5 models: p5 570, p5 590, and p5 595, and is required for Failover support.
  • First Failure Data Capture (FFDC): FFDC can be used by software for recording persistent failures and significant software incidents. FFDC also provides a means for associating failures with one another, allowing software to link effects of a failure to their causes, and, thereby, facilitating the quick location of the root cause of a failure.
  • IBM Chipkill™ memory: Chipkill memory allows a computer motherboard and firmware to detect problems with the computer's memory and selectively disable problematic parts of the memory.
  • Error checking and correcting (ECC) memory: The memory card has single-error correct and double-error detect ECC circuitry to correct single-bit memory failures. The double-bit detection helps maintain data integrity by detecting and reporting multiple errors beyond what the ECC circuitry can correct. The memory chips are organized such that the failure of any specific memory module only affects a single bit within an ECC word (bit scattering), thus allowing for error correction and continued operation in the presence of a complete chip failure (Chipkill recovery).
  • Dynamic Processor Deallocation and logical partition (LPAR) error containment: If a processor exceeds a threshold of recoverable errors, such as on an L2 cache access, the event is logged. In addition to logging the error, the processor will actually be marked and deconfigured from the system while the operating system continues to run. This feature allows the processor to be repaired on a deferred basis while helping prevent an unscheduled system outage.
  • Dynamic firmware maintenance: Dynamic firmware maintenance allows you to apply firmware fixes without disrupting the system.
  • Hot I/O drawer: Hot I/O drawer allows you to install remote I/O drawers without disrupting the system.

For more information about RAS, please visit the IBM eServer pSeries 690 RAS Web page. (See Resources.)

The IBM eServer BladeCenter JS20 is based on 64-bit PowerPC 970 and 970FX processors, which feature unique VMX (Multimedia extension) execution. VMX is one of the SIMD (Single Instruction Multiple Data) implementations. Normally, a single instruction to a computer does a single task. A SIMD instruction will also generally do a single task, but it will do it to multiple pieces of data at once. Applications, especially multimedia and graphic programs, can dramatically increase their performance if they utilize this feature.


IBM System p5

The IBM System p5 Express family of servers is a family of affordable, high-performance entry-level servers designed for smaller and mid-sized companies and for departmental and branch office installations in larger businesses. Innovative IBM technologies allow UNIX® and Linux applications to run on a single System p5 Express server. These servers feature POWER5 and POWER5+ technology, have small form factor, and come with InfiniBand technology and PCI-X 266 adapters.

Table 1 summarizes the configuration characteristics of IBM System p5 Express models.


Table 1. IBM System p5 models
 p5 505 Expressp5 520 Expressp5 550 Express & 550Q Express
Processors1.5 or 1.65 GHz POWER5 processor(s)1.9 GHz POWER5+ processor(s)1.5 or 1.9 GHz POWER5+ processor(s)
Processor configuration1- or 2-way configuration2-way configuration2- or 4-way Dual-Core Module, 4- or 8-way Quad-Core Module
MemoryUp to 32 GBUp to 32 GBUp to 64 GB
Rack-mount or desksideRack-mount (1U)Rack-mount (4U) or desksideRack-mount (4U) or deskside
Internal storageUp to 600 GBUp to 16.8 TBUp to 31.2 TB
Integrated Ethernet portsTwo Ethernet 10/100/1000 Mbps portsTwo integrated 1 Gigabit Ethernet portsTwo Ethernet 10/100/1000 Mbps ports
PCI-X slots365

All IBM System p5 Express servers run SUSE LINUX Enterprise Server (SLES), Version 9, Service Pack 2 and Red Hat Enterprise Linux Advance Server (RHEL AS), Version 4, Update 1.


IBM eServer p5

IBM eServer p5 servers are intended for enterprise-class UNIX® customers and for those seeking the most scalable and reliable Linux and AIX servers. In addition, support for IBM i5/OS™ is available in some models of the eServer p5 product line.

Table 2 summarizes the configuration characteristics of the IBM eServer p5 520, IBM eServer p5 550, IBM eServer p5 570, and IBM eServer p5 575 models:


Table 2. IBM eServer p5 server models
 p5 520p5 550p5 570p5 575 Cluster Node
Processors1.65 GHz POWER5 processor(s)1.65 GHz POWER5 processor(s)1.65 GHz or 1.90 GHz POWER5 processor(s)1.5 GHz or 1.90 GHz POWER5+ processor(s)
Processor configuration1- or 2-way configuration2- or 4-way configuration2-, 4-, 8-, 12-, or 16-way configuration8- or 16-way SMP configuration
MemoryUp to 32 GBUp to 32 GB2 GB to 512 GBUp to 256 GB
Rack-mount or desksideRack-mount or desksideRack-mount or desksideRack-mount only24 inch frame packing
Internal storageUp to 1.1 TBUp to 1.1 TB6 hot-swappable drive bays for up to 880 GB per building-block¹ (3.5 TB for 4 modules; 16-way) Two standard hot-swappable bays up to 2.9 TB
Integrated Ethernet portsTwo Ethernet 10/100/1000 Mbps portsTwo Ethernet 10/100/1000 Mbps portsTwo integrated 1 Gigabit Ethernet ports per building-blockFour 10/100/1000 Mbps Ethernet ports
PCI-X slots656 per building-block4

¹One building block, or module, hosts maximum 4-way configuration, so a 16-way machine has 4 building blocks, or modules.

IBM eServer p5 510, IBM eServer p5 595, and IBM eServer p5 595 models are also available. More information can be found at the IBM eServer p5 and pSeries home page. (See Resources.)


IBM eServer i5

IBM eServer i5 is the next generation of the IBM eServer iSeries server. eServer i5 servers offer an on demand computing environment for IBM i5/OS, IBM AIX 5L, Microsoft® Windows® and Linux solutions. These highly integrated servers are designed to reduce complexity and enhance productivity through server consolidation.

eServer i5 models include eServer i5 520, eServer i5 550, and eServer i5 570. These servers are very similar to their pSeries counterparts in terms of configuration, but they do have their differences. The major difference between eServer p5 and eServer i5 is in defining a service partition. In short, a service partition is a partition that is allowed to update the POWER Hypervisor, which is POWER processor-based firmware. It is the nerve center of the IBM Virtualization Engine. An eServer i5 Linux partition cannot be designated as a service partition, whereas an eServer p5 Linux partition can be designated as a service partition.

For more eServer i5 information, please visit the Linux on iSeries Web site. (See Resources.)


IBM eServer BladeCenter JS20

eServer BladeCenter JS20 offers customers a high density footprint of servers. Up to 84 2-way blades can be installed in 42U rack, which reduces space and cooling requirements. Its modular design helps customers scale securely and cost-effectively.

Table 3 describes the basic configuration characteristics of the eServer BladeCenter JS20:


Table 3. IBM eServer BladeCenter JS20
eServer BladeCenter JS20
Processors1.6GHz or 2.2 GHz PowerPC 970 or 970FX processor(s)
Processor configuration1- or 2-way configuration
MemoryUp to 4 GB
Rack-mount or desksideRack-mount
Internal storageUp to 60 GB
Integrated Ethernet portsTwo Ethernet Gigabit Ethernet ports

For more information about eServer BladeCenter JS20, please visit the IBM eServer Bladecenter JS20 home page. (See Resources.)

Table 4 lists which operating systems are supported on each POWER processor-based server. The table is a general statement about the OS support for each series; a particular OS may not be supported on a particular module or may need an optional feature. For details, see the Linux on IBM eServer Web page. (See Resources.)


Table 4. Operating Systems on each series
 SLES 8(Linux)SLES 9(Linux)RHEL AS 4(Linux)AIX 5L (5.2 & 5.3)i5/OSWindows
System p5 ExpressNoYesYesYesNoNo
eServer p5NoYesYesYesYesNo
eServer i5NoYesYesYesYesYes
eServer BladeCenterYesYesYesYesNoNo

Virtualization

The IBM Virtualization Engine is a set of comprehensive systems technologies and services that helps aggregate pools of resources and enables access to a consolidated, logical view of them throughout a heterogeneous, distributed environment. Virtualization Engine systems technologies are optionally available (except eServer i5 servers, on which virtualization is an integrated feature) and include innovations like logical partitioning, Micro-partitioning, Dynamic logical partitioning, Virtual storage, and Virtual Ethernet. Virtualization is not available on eServer BladeCenter JS20.

Virtualization Engine technologies currently supported by Linux on POWER include:

Partition managers

The Hardware Management Console (HMC) and Integrated Virtualization Manager (IVM) both provide system administrators the ability to manage the configuration and operation of partitions on a server. Each serves as a vital part of an IBM virtualization environment. While HMC consists of a 32-bit Intel®-based desktop PC with a DVD-RAM drive, IVM is a Web-based interface used for partition management. IVM is shipped with the Virtual I/O server (VIOS) and is available for entry servers up to the System p5 p550Q Express server.

Some of the functions that HMC and IVM can perform include:

  • Create and maintain a multiple-partitioned environment
  • Power on and off host partitions
  • Display a virtual operating system session terminal for each partition
  • Display virtual operator panel values for each partition
  • Detect, report, and store changes in hardware conditions
  • Act as a service focal point for service representatives to determine an appropriate service strategy and enable the Service Agent Call-Home capability

Figure 2 shows an HMC physically connected to a server with three partitions. The HMC manages the partitions through the POWER hypervisor.


Figure 2. Hardware Management Console (HMC)



Figure 3 shows the IVM, which is installed with the virtual I/O server. IVM manages partitions through a Web interface. When you install the virtual I/O Server on a supported server, if there is no HMC attached to that server, the IVM is automatically enabled. IVM cannot co-exist with HMC.


Figure 3. Integrated Virtualization Manager (IVM)

Although IVM supports LPAR and virtualization without a physical HMC, it only provides a subset of HMC service functionality. Table 5 provides a comparison between HMC and IVM.


Table 5. Comparison of HMC and IVM supported functions
 HMCIVM
Managed system power on/offYesNo (done via AMSI)
VIO server per system41
Virtual Ethernet per system4,0944
Virtual Ethernet adapters per client partition65,5342
Virtual SCSI adapters per client partition65,5341
Dynamic LPARYesNo
Client partition owns physical devicesYesNo
Capacity on demand (CoD)YesNo
Concurrent maintenance supportYesNo

Logical partitioning (LPAR)

Logical partitioning allows multiple operating systems to reside on a hardware platform simultaneously. System resources are divided so that partitions cannot interfere with each other. Managing LPARs in the system is made possible by the hardware management console (HMC).

Micro-partitioning

Micro-partitioning allows Linux partitions as small as 1/10th of a processor to be defined in increments as small as 1/100th of a processor.

Dynamic logical partitioning (dynamic LPAR)

Dynamic LPAR allows processors and I/O slots to be added to and removed from Linux partitions running the 2.6 kernel without reboot. This is implemented on eServer p5, and eServer i5 by the POWER Hypervisor firmware, which provides hardware resource management, partitioning, and Capacity Upgrade on Demand (CUoD). The dynamic movement of memory is currently not supported. Dynamic LPAR offers greater flexibility in using available capacity and dynamically matching resources to changing business requirements.

Shared processor pool

The shared processor pool is a group of physical processors that provide processing capacity that can be shared among multiple logical partitions. The shared processor function allows you to assign partial processors to a logical partition. A minimum of 0.10 processing units can be configured for any partition using shared processors. The maximum number of logical partitions supported depends on the number of processors in the server model; the system limit is 254. Consider Figure 4 as an example of an environment using the shared processor pool.


Figure 4. Shared processors

Figure 4 represents a fictional set up of a 4-way machine running either i5/OS, or AIX 5L. It also has three additional logical partitions. Assume the second partition is a transactional server that processes financial transactions; furthermore, assume that this transaction application interacts with either AIX 5L, or i5/OS to store and retrieve its information in a database. The partition labeled “Report" is the sister application to the transaction server and it generates financial reports. For the purpose of load balancing, the company has separated the transaction and report partitions because the transaction server is time and response sensitive, while the report generation can be done at off-peak times. The last partition is the company’s development and test partition. This partition serves as a development space for their engineers. Notice how the processors have been divided between the four partitions based on workload.

Partitions in the shared processing pool can have a sharing mode of capped or uncapped. A capped partition indicates that the logical partition will never exceed its assigned processing capacity. Any unused processing resources will only be used by the uncapped partitions in the shared processing pool.

You can specify whether a partition is capped or uncapped when you define the partition’s profile. While defining a partition, you can also set a minimum and maximum processor value for number or fractions of processor power.

Figure 5 expands upon this example by adding the minimum and maximum processor values:


Figure 5. Dynamic movement of processor power based on workloads

The advantage of being able to dynamically move processors based on demand is evident in this fictitious example. As shown in Figure 2, the transaction server has one and a half processors allocated (this being the minimum). It also has the ability to consume the second half of the second and all of the third virtual processors based on demand. If you assume the reports are run on off-peak hours, during which the system may have more idle time, then the report partition and its applications can consume up to two virtual processors but no less than three-quarters of one processor. The same goes for the test partition. Suppose the engineers need to compile their applications. If the compile is done while there is idle processing power, the test partition can consume up to three virtual processors, allowing their compiles to complete quicker.

The capability of utilizing any unused processing resources by the uncapped partitions is enabled by the POWER Hypervisor. Unlike dynamic LPAR, this feature is supported by both the 2.4 and 2.6 kernels. The instances for processor sharing in these examples are based on parts of the system being idle so that other partitions can use the available resources; however, there will certainly be times when multiple partitions simultaneously require more processing power. Consider an example where both the report and transaction servers require more processor power because of peaking workloads. Timely response from the transaction server is critical to your business, so you would prefer that the transaction server receives virtual processing power before the report partition. This is a good example of when setting weights for processing power becomes important. Uncapped weight is a number in the range of zero through 255 that you set for each uncapped partition in the shared processing pool. By setting the uncapped weight, any available, unused capacity is distributed to contending logical partitions in proportion to the established value of the uncapped weight. The default uncapped weight value is 128.

In a scenario where both the transaction and report servers are peaking, weights can be set to determine how processors should be allocated. For example, Figure 6 shows that the weights for the transaction server are set to two processor units and the report server is set to one. This means that for every three processing units that are available during the peak, the POWER Hypervisor will assign two processor units to the transaction server and one to the report server.


Figure 6. Weights can be set to determine processor allocation

Virtual storage

For storage and I/O, Linux can take advantage of a variety of real and virtual devices. This flexibility allows for cost-effective setup of Linux partitions. In the case of disks, Linux logical partitions support three different storage options:

  • Internal storage using SCSI adapters and drives dedicated to the partition
  • External storage using SAN adapters dedicated to the partition
  • Virtual storage using a virtual SCSI adapter and storage in a different partition

Virtual disk

Virtual storage allows multiple partitions within a POWER5 processor-based system to share storage. One partition, the I/O server partition, owns the physical adapters and storage (which may be internal or external). Virtual adapters allow other partitions, I/O client partitions, to use storage from the I/O server partition. I/O server partitions can be AIX 5L, Linux (the 2.6 kernel), or i5/OS.

Saving expense on disk drives isn't the only benefit of virtual disks. For example, on smaller machines, adding disks and controllers may be a challenge and may also require the purchase of an expansion unit. Also, virtual disks can be managed, backed-up, and quickly replicated by the hosting system. Figure 7 illustrates how a hosting partition can provide virtual disks to Linux partitions:


Figure 7. AIX 5L or I5/OS partition providing virtual disk to other Linux partitions

CD-ROM, Tape, and DVD-ROM

You can also share SCSI devices owned by AIX 5L V5.3, Linux (the 2.6 kernel), or i5/OS with Linux partitions. This works similar to the virtual disk function described in the previous section. If AIX 5L, Linux (the 2.6 kernel) or i5/OS has a CD-ROM, tape device, or DVD-ROM drive, Linux can use these devices as though they were physically attached to the Linux partition, if the hosting partition is not actively using the device. The benefits of virtual SCSI devices are much the same as virtual disk: less hardware expense and no need to dedicate a device to each partition.

Virtual Ethernet (VLAN)

Linux on POWER5 processor-based systems can establish a TCP/IP connection through either a directly attached network interface, or through a virtual Ethernet interface. Virtual Ethernet provides roughly the same function as a one Gigabit Ethernet adapter. Partitions in POWER5 processor-based servers can communicate with each other using TCP/IP over the virtual Ethernet communication ports.

You can define up to 4,094 separate virtual Ethernet LANs (VLANs). Each partition can have up to 65,534 virtual Ethernet adapters connected to the virtual switch. Each adapter can be connected to 21 VLANs. Enabling and setting up virtual Ethernet does not require any special hardware or software. After you enable a specific virtual Ethernet for a partition, a network device named ethXX is created in the partition. You can then configure TCP/IP to communicate with other partitions.

Let’s reconsider the example from "Shared processor pool." In the description of the scenario, the transaction server uses a database in the AIX 5L or i5/OS partition for storing and retrieving information. This is a very typical use of virtual Ethernet because the communication is very fast and no additional hardware is required. Figure 8 depicts the example with the addition of a two virtual Ethernet LANs:


Figure 8. VLAN is a fast and cost-effective way for partitions to communicate with each other

In most cases, however, you will want to allow partitions connected to a virtual Ethernet to also communicate with the physical network. This requires that at least one partition have both a physical Ethernet adapter, as well as a virtual Ethernet adapter that is connected to the other partitions, as shown in Figure 9. The partition that owns both adapters can route traffic between the physical and virtual Ethernets.


Figure 9. A partition that has both a physical and virtual network connection can route traffic to a physical LAN

A common way to connect your partitions to a physical network is to run a firewall in one of your partitions. In the firewall partition, you can have a network interface card that connects directly to the physical network, as seen in Figure 9. The other partitions can then communicate with the physical network by passing traffic through the VLAN and the firewall. VLAN is available on Linux, i5/OS, and AIX 5L V5.3.


Overview of the Linux on POWER operating environment

There are many Linux distributions that run on POWER and PowerPC architecture. IBM currently provides support for the following distributions on its POWER processor-based servers:

  • SUSE LINUX Enterprise Server (SLES): Version 9 is the latest release of SLES and is referred to as SLES9 throughout the rest of the document.
  • Red Hat Enterprise Linux Advance Server (RHEL AS): Version 4 is the latest release of RHEL AS and is referred to as RHEL4 throughout the rest of this document.

The latest versions of both distributions are built on the Linux 2.6 kernel, which features many functional improvements over its earlier 2.4 kernel version and also enables many of the new POWER5 virtualization features described in the first part of this paper.


Binary compatibility

Binary compatibility is the ability to take a binary and run it on multiple Linux distributions of a given processor family. These environments could be different versions of the same distribution or they could be completely different distributions. For example, a binary that was compiled and run on a POWER4 processor-based system running SLES9 can run on a POWER5 processor-based system also running SLES9. Another example is taking a binary that was compiled and run on a POWER4 processor-based system running RHEL3 and executing the same binary on a POWER5 processor-based system running SLES9.

From the standpoint of the hardware instruction sets, code compiled on POWER4 hardware has a very high probability of running unchanged on POWER5 and PowerPC 970(FX) hardware. However, it is really the supported levels of gcc, libc, middleware, Java, and the distributions themselves that ultimately determine binary compatibility for applications between hardware versions. For example, if an installed distribution was exactly the same on POWER4 hardware and POWER5 hardware, an application compiled on either hardware platform would be compatible.

Red Hat supports 32-bit and 64-bit forward and backward compatibility between RHEL3 and RHEL4, while SLES8 only supports 32-bit backward compatibility when migrating from SLES8 to SLES9. This means that applications developed on SLES 8 for POWER processor-based systems in 32-bit mode should require only moderate regression testing to confirm compatibility when deploying on SLES 9. For all 64-bit applications developed on SLES 8, recompilation and regression testing are required when moving to SLES 9. The following table summarizes the forward and backward compatibility between RHEL3 and RHEL4 and between SLES8 and SLES9.


Table 6. Forward and backward compatibility between Linux distributions
Distribution32-bit64-bit
RHEL3 to RHEL4YesYes
RHEL4 to RHEL3 YesYes
SLES8 to SLES9YesNo
SLES9 to SLES8NoNo

Both 32-bit and 64-bit addressing is fully supported by the same 64-bit Linux kernel on eServer p5, eServer i5, and eServer BladeCenter JS20 servers. Moreover, there is no performance penalty to be expected in executing 32-bit applications on 64-bit systems. POWER5 and PowerPC 970(FX) chips support the two addressing types directly.

Both SLES 9 and RHEL4 are based on the 2.6 kernel.


Features of the 2.6 kernel

The 2.6 kernel is the latest evolution of the Linux kernel. By running the 2.6 kernel, Linux will benefit from many new features not previously available in the 2.4 kernel. While you can download and compile your own customized kernel, it is worth noting that the Linux distributors themselves determine which kernels they release and support. Therefore, if your distribution happens to run the patched 2.4 kernel, then the following features of the 2.6 kernel will not be available, with the exception of the new threading model that was available in some 2.4 kernels.

PCI hot plug

This function allows you to insert a new PCI hot plug adapter into an available PCI slot while the operating system is running. The adapter can be the same type that is currently installed or a different type of PCI adapter. New resources become available to the operating system and applications without having to restart. You can also replace a defective PCI hot plug adapter with another of the same type without shutting down the system. When you exchange the adapter, the existing device driver supports the adapter because it is of the same type. Device configuration and configuration information about devices below the adapter are retained for the replacement device.

Virtual memory (VM)

The 2.6 kernel implements an efficient algorithm for virtual-to-physical page mapping, called reverse mapping. It enables more intelligent decisions on memory swapping. This results in a significant improvement in VM behavior under certain loads.

Scheduler

The scheduler used in the 2.4 kernel causes most of the CPUs in an SMP system to be idle as processes complete their time slices and wait for recalculation. In addition, it sometimes causes processes to bounce among processors when idle CPUs start executing the waiting processes. The new scheduler in the 2.6 kernel addresses these issues. The new scheduler also improves load balancing and the performance of interactive applications.

Kernel preemption

In the 2.4 kernel, it is not possible to preempt a task executing in kernel mode, including user tasks that enter kernel mode using system calls until (or unless) the task voluntarily relinquishes the CPU. In the 2.6 kernel, a kernel task can be preempted. This not only improves performance for user-interactive applications, but also benefits embedded devices and real-time systems.

Threading model

The improved threading model in the 2.6 kernel, Native POSIX Thread Library (NPTL), is based on a 1:1 threading model where one kernel thread is associated with one user thread. NPTL significantly surpasses the performance offered by Linux Threads (the threading model implemented in the 2.4 kernel). NPTL is valuable for multi-threaded enterprise level applications, especially Web server and Java-based applications. Moreover, the 2.6 kernel can handle up to one billion process ids (PIDs), which is limited to 32,000 in the 2.4 kernel.

Block I/O

Block I/O has been rewritten in the 2.6 kernel, resulting in improved performance and error handling. The new Block I/O buffer allows I/O requests of size larger than PAGE_SIZE. There are also major improvements to SCSI support.

Asynchronous I/O (AIO)

Even though asynchronous I/O operations had already been supported based on threads at the user level, the implementation of these functions did not use the kernel support until the 2.6 kernel release. AIO operations run in the background and do not block user applications, improving performance since I/O operations and applications can run simultaneously. Many applications, such as Web servers, databases, and file servers, take advantage of this ability to overlap processing and I/O.

Other improvements

Other improvements to the 2.6 kernel include:

  • The number of users and groups has been increased from 65,000 to over four billion
  • The number of PIDs has been increased from 32,000 to one billion
  • Support for up to 16 TB of file systems
  • The limit of the number of open files is no longer required to be set in advance

Compilers

The following compilers are available for Linux on POWER:

  • IBM XL C/C++
  • IBM XL Fortran
  • GNU Compiler Collection (GCC)

The high performance compiler, IBM XL C/C++ Version 7.0, is available for RHEL4 and SLES9 and adds performance improvements for POWER5 processor-based systems. The -qarch and -qtune options are used to optimize for their respective architectures. For example, to optimize for POWER5, you would use the following options -qarch=pwr5 and -qtune=pwr5.

The -qaltivec option in the IBM XL C/C++ compiler is used to enable the VMX feature on the PowerPC 970 and 970FX processors in IBM eServer BladeCenter JS20 servers.

The GNU Compiler Collection contains compilers for many different programming languages. Many improvements were made from version 3.2 to 3.3, including POWER processor-specific optimizations to its C compiler, gcc.

The -mcpu=power5 and -mtune=power5 flags are now supported and result in instructions that are only for the POWER5 architecture. There are also VMX vector extensions for the IBM PowerPC 970 and 970FX processor that can increase the performance of vectorized code.

Since the IBM XL C/C++ compiler uses more POWER5 advanced hardware features, it provides better performance for the programs compiled with it, while programs compiled using gcc are more portable.

The following table compares the commonly used compiler options from GCC and XL C/C++:


Table 7. The commonly used compiler options from GCC and XL C/C++
GCCXL C/C++Description
-v-v, -V, -#Turn on verbose mode.
-m32, -m64-q32, -q64, or set OBJECT_MODE environment variableCreate 32 or 64-bit objects. GCC 64-bit compilers are located at /opt/cross/bin.
-fsyntax-only-qsyntaxonlyPerform syntax checking without generating object files.
-fpic-qpic=smallGenerate Position-Independent Code for use in shared libraries. In XL C/C++, the size of the Global Offset Table is no larger than 64 Kb. If –qpic is specified without any suboptions, -qpic=small is assumed. The -qpic option is enabled if the -qmkshrobj compiler option is specified.
-fPIC-qpic=largeAllows the Global Offset Table to be larger than 64 Kb in size.
-pthread-qthreaded or _r invocation modeCreate programs running in multi-threaded environment.
-fno-rtti -qnorttiDisable generation of run-time type –qrtti identification (RTTI) for exception handling and for use by typeid and dynamic_cast operators. On XL C/C++, the default is -qnortti.
-static-qstaticlinkObject generated with this option won’t link with shared libraries.
-static-libgcc-qstaticlink=libgccInstruct compiler to link with the static version of libgcc.
-shared –qmkshrobjInstruct compiler to produce a shared object.
-shared-libgcc -qnostaticlink=libgccInstruct compiler to link with the shared version of libgcc.
-Wl,-rpath -Wl,-rpath or –R Passes a colon-separated list of directories used to specify directories searched by run-time linker.
-fno-implicit-templates, -frepo -qtempinc,
-qtemplateregistry,
-qtemplaterecompile
Template instantiation.
-w-wSuppress warning messages.
 -warn64Enable checking for long-to-integer truncation.
 -qinfo=<…> Produce informational messages.
-fpack-struct-qalign=bit_packedUse bit_packed alignment rules.
 -qalign=linuxppcUse default GCC alignment rules to maintain compatibility with GCC objects. This is the default.
-O,-O2,-O3-O,-O2,-O3,-O4,-O5Optimization levels.
 -qarch, -qtune, -qcache Optimization options for a particular processor.

More information about using the XL C/C++ compiler for Linux on POWER can be found in the article "How to use IBM XL C/C++ Advanced Edition V7.0 for Linux on POWER: A guide for GCC users" (developerWorks, December 2004).


Software and middleware

IBM has ported much of its software, including principle portions of DB2® Universal Database, Tivoli®, WebSphere®, and Java™, to Linux on Power. For a complete list, please see the IBM Middleware Available on Linux matrix. (See Resources.)

Many other commercial companies, such as SAP, Informix, and Sybase have also ported their software to Linux on POWER. For a complete list, please see the Linux on POWER applications Web page. (See Resources.)


Summary

This paper presented Linux developers an overview of the latest IBM POWER5, POWER5+ and PowerPC 970(FX) processor-based systems and highlighted several of the new technologies being made available on them. It then introduced the IBM Virtualization Engine and described how Linux users can benefit from it. And finally, it provided information about the Linux distributions for System p5, eServer p5, eServer i5, and eServer BladeCenter JS20, including information about binary compatibility, the compilers, and the software available on them.


Acknowledgments

I would like to acknowledge Linda Kinnunen for her document template and helpful reviews and Chakarat Skawratananond and Matt Davis for their technical assistance and reviews of this document.


Resources

About the authors

Calvin Sze is a Linux consultant for the IBM eServer Solutions Enablement organization at IBM. He is based in Austin, TX. Calvin’s main role is to help solution developers bring their applications to Linux on POWER. Calvin has been involved in software development, system integration on both Linux and AIX platforms for more than 10 years. You can contact Calvin at calvins@us.ibm.com.

Chakarat Skawratananond is currently a technical consultant in the IBM eServer Solutions Enablement organization, where he assists ISVs in enabling their applications for Linux on POWER architecture. He has published a number of articles for IBM developerWorks in the area of Linux migration. He can be contacted at chakarat@us.ibm.com.

Brent Baude is a Linux consultant for the IBM eServer Solutions Enablement organization at IBM. He is based in Rochester, Minnesota. Brent's main role is to help solution developers bring their applications to Linux on POWER. Also while in Rochester, Brent has held various positions in the iSeries development lab.

Comments (Undergoing maintenance)



Trademarks  |  My developerWorks terms and conditions

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=Linux
ArticleID=86601
ArticleTitle=Linux on POWER: An overview for developers
publish-date=07242006
author1-email=calvins@us.ibm.com
author1-email-cc=chakarat@us.ibm.com, baude@us.ibm.com
author2-email=chakarat@us.ibm.com
author2-email-cc=
author3-email=baude@us.ibm.com
author3-email-cc=

My developerWorks community

Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere).

My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Rate a product. Write a review.

Special offers