Chapter 2. Software Features

This chapter describes features supported in previous releases that enhance the features of your base Linux distribution. For a description of new features, please read Chapter 1, “Release Features”.

The Visual Workstation Environment (VWE) software provides the Linux kernel version 2.4.2. The VWE software adds functionality to base Linux distributions that is specific to SGI visual workstations.

Some of the most significant features that Linux provides are listed below:

Open Inventor

VWE supports Open Inventor, an object-oriented 3D toolkit that offers a comprehensive solution to traditional 3D programming problems. Its programming model, based on a 3D scene database, includes a rich set of objects such as cubes, polygons, materials, cameras, lights, trackballs, engines, 3D viewers, and editors that speed up programming time and extend 3D programming capabilities.

OpenGL Performer

VWE supports the OpenGL Performer, a high-performance 3D rendering toolkit for developers of real-time, interactive graphics applications. Performer simplifies development of complex applications such as those for visual simulation, simulation-based design, virtual reality, interactive entertainment, broadcast video, CAD, and architectural walk-through, while providing a high-performance portability path across the entire SGI product line.

Performer for Linux is fully API-compatible with existing Performer applications running on IRIX and is a full distribution, including the core run-time libraries and file loaders, development header files, sample source code, and man pages.

Process Aggregates (PAGGs)

Process Aggregates (PAGGs) are modifications to the Linux kernel that let developers create loadable kernel modules to group processes into aggregates. PAGGs provides functions that allow loadable kernel modules to register as providers of a specific type of process aggregate implementation. Additionally, this feature ensures that membership in a process aggregate, or group, is inherited across process forks.

PAGGs can be used to support a formal job container on Linux. To learn more about Process Aggregates and the job container module for Linux, consult the following URL:

http://oss.sgi.com/projects/pagg
 

Comprehensive System Accounting provides enhanced job accounting, which will make use of the job container kernel module. For more information, see “Comprehensive System Accounting (CSA)” in Chapter 1, and the following URL:

http://oss.sgi.com/projects/csa


Advanced Linux Sound Architecture (ALSA) Drivers

VWE contains support for the Advanced Linux Sound Architecture (ALSA) drivers for users who want to use the digital media SDK or who use Silicon Graphics Visual Workstations for intensive audio purposes.

ALSA's mixer model provides fine control over muting and volumes of audio channels. Unlike the standard Linux audio drivers (Open Sound System or OSS), ALSA drivers offer a mute separate from volume and distinguish between input gains for recording and output feedback volumes for input sources.

The main advantages of using the ALSA drivers are as follows:

  • Full support for digital media SDK

  • Advanced multimedia capabilities

  • Audio capabilities essential to professional audio use

  • Advanced synchronization and timing features not available in the standard sound drivers

Performance Co-Pilot

Performance Co-Pilot (PCP) provides a framework and set of services to support system-level performance monitoring and performance management. The PCP open source release provides a unifying abstraction for all of the interesting performance data in a system, and allows client applications to easily retrieve and process any subset of that data using a single API.

A client-server architecture allows multiple clients to monitor the same host and a single client to monitor multiple hosts (for example, in a Beowulf cluster). This enables centralized monitoring of distributed processing.

Integrated archive logging and replay allow client applications to use the same API to process real-time data from a host or historical data from an archive.

The framework supports APIs and configuration file formats that enable the scope of performance monitoring to be extended at all levels.

The open source release of PCP provides a subset of the features of SGI's Performance Co-Pilot products for IRIX (see http://www.sgi.com/software/co-pilot/ ).

A brief list of features supported in LBS follows:

  • The pmsocks utility allows PCP to monitor TCP applications through socks4 firewalls. With this utility, you can monitor systems on the Internet at large from within a firewall.

  • XFS and pagebuf metrics (these are only available if you run XFS).

  • Support for NFS (version 3) PCP metrics.

  • An extension of the weblogs PCP agent lets PCP report proxy HTTP servers and adds assorted HTTP cache statistics.

  • An accounting patch to the kernel (syscall accounting) counts per-CPU system calls, and corresponding new metrics are included in PCP (kernel.all.syscall and kernel.perCPU.syscall). This feature is used by PCP in layered products that integrate with SGI's Embedded Support Partner (ESP) using VWE as a base.

NFS Enhancements

VWE includes support for NFS V3, with some bug fixes included to allow compatibility with IRIX systems.

Large Physical Memory Support

Large amounts of physical memory coupled with the ability to create large (multi-gigabyte) shared memory segments provide a boost in performance to various types of workloads. SGI includes a configuration parameter to configure the Linux community standard implementation: that is, i686 UP and SMP kernels have 4GB memory support, the i686 enterprise kernel has 64GB max memory support, and all others have 960MB memory support.

Fast Synchronization Mechanism

While the UNIX System V IPC semaphore facility does provide exceptional capability, its performance leaves much to be desired. Many UNIX vendors have released a low-overhead interapplication synchronization primitive known as “post /wait.”

SGI has included in this release a kernel level implementation of post/wait along with the library containing application API's. The post allows for a process to “wait” for an event. This event can either be a timeout or a “post” from another process. A group of cooperating processes can use these “post” and “wait” facilities to synchronize among themselves.

In order to use post/wait, the kernel must be compiled with the CONFIG_PW configuration variable, and you may optionally set an additional configuration variable, CONFIG_PW_VMAX. These variables are described in the configuration help. For a user program to use the post/wait facilities, it must link against libdba.so.

For more information on post/wait, please refer to the postwait(3) man page.

POSIX Asynchronous I/O

The ability to overlap I/O and processing activities has always been important to high-performance applications. To allow this type of overlap in single-threaded applications, SGI has included a kernel-level implementation of POSIX asynchronous I/O and the associated API library.

VWE works with raw devices as well as with file systems including pipes and sockets.

This facility is turned on by setting the CONFIG_AIO kernel option. User code can get access to the facility by linking with libdba.so. Further information can be found in the /lib/libdba/README file.

Kernel Spinlock Metering

VWE does not include kernel spinlock metering by default, but you can check the following URL for its availability and for additional information:

http://oss.sgi.com/projects/lockmeter

Spinlock metering allows developers to gather statistical information about the SMP kernel's use of spinlocks and mrlocks (multiple-reader single-writer spinlocks). This functionality is called spinlock metering, or lockmetering.

If spinlock metering is available from http://oss.sgi.com/projects/lockmeter , it can be built into the kernel using the CONFIG_LOCKMETER configuration option (in the Kernel Hacking section of make xconfig). A kernel built with lockmetering will exhibit a small (roughly 1%) performance degradation relative to a kernel that is not configured for lockmetering.

Crash Functionality

Changes have been made to the Linux crash utility, which are explained briefly below. VWE uses version 3.1.1, which supports lcrash on IDE drives as well as SCSI drives. General information about lcrash can be found in the /cmd/lcrash/README file. Major changes follow:

  • Linux kernel crash dump enhancements. VWE provides a configuration option to allow kernel crash dumps to be available. This option is configured to be on by default, and the default dump space is the first swap partition found when booting. If you are building a new kernel, you can specify Support kernel crash dump capabilities in the Kernel Hacking section of make xconfig.

    The crash dump capabilities in the kernel allow the system to create a crash dump when a failure occurs due to a panic() call or an exception. For more details on the dump method, compression used, and so on, please read the LKCD FAQ at the following URL:

    http://oss.sgi.com/projects/lkcd/faq.html
    
    

    Information about LKCD is also available in the file /cmd/lcrash/README.lkcd.

  • Boot up process changes. As the system boots up, the /sbin/vmdump script will be run out of /etc/rc.d/rc.sysinit. This script saves crash dumps and reads sysconfig variables to open the dump device and configure the system for crash dumps.

  • Crash dump configuration options. There are a number of configurable options to save system crash dumps. Please read /etc/sysconfig/vmdump for more details on the options available. The following list describes what the options allow you to do:

    • Determine if you want to implement crash dumps in the kernel

    • Choose whether to save crash dumps to disk or not

    • Change the location to which the crash dumps are saved

    • Specify any block dump device you want

    • Compress (or not compress) the crash dumps

    • Configure the system to reset (or not reset) after a failure

  • The lcrash utility uses the new librl library for command line input.

Patches, Configuration Options, Commands, and Libraries

The following list describes patches that have been implemented as well as enhancements to configuration options, commands, and libraries:

  • librl library. This new library supplies command line editing and command history functionality. See the /cmd/lcrash/lib/librl/README file for information on how to use this library. The lcrash command uses this library.

  • SMP PTE patch. In stock Linux, the page stealing code that is used under high memory load has a bug that might cause it to steal a page from a process without writing out the contents to swap if the page has been modified by the process. This bug is only present in a multiprocessor machine. VWE provides a fix for this bug.