Getting the Best AIPS Performance from Solaris

This web page suggests some ways in which you can improve the performance of AIPS under Solaris. These tips apply to both SPARC-based and IA32-based systems and require system administrator privileges.

Solaris 8 versus Earlier Versions

Sun has redesigned their memory architecture for Solaris 8. While AIPS run times could be improved considerably under Solaris 7 and earlier by tuning the system parameters as described below, Solaris 8 does not require any tuning to achieve good AIPS performance. If you are running AIPS under Solaris and have not already upgraded to Solaris 8 then I recommend that you do so at the earliest opportunity. If you have upgraded to Solaris 8 or are about to upgrade then I recommend that you remove any priority paging and UFS write throttle settings that you may have used previously from your /etc/system file.

If you are running Solaris 2.5.1, Solaris 2.6, or Solaris 7 and are not able to upgrade to Solaris 8 then the suggestions in the following sections should improve AIPS performance significantly (usually by several tens of percent).

Priority Paging

Solaris is based on UNIX System V Revision 4. This variant of UNIX performs disk I/O by mapping file data into virtual memory and paging those sections of virtual memory that correspond to the data that it wants to read into real memory. The file system cache consists of those sections of file data that have been paged into physical memory.

Prior to Solaris 8, there was no distinction between virtual memory used for file data and that used for programs. This meant that program data could be forced out of physical memory by the file system cache when there was a lot of file system activity. This tended to degrade AIPS performance since AIPS involved a lot of file access and also tended to make Solaris sluggish in switching between tasks.

This can be fixed in Solaris 7 by turning on a priority paging algorithm that causes Solaris to prefer keeping program data in physical memory over file system data. To do this, edit the file /etc/system and add the following line.

set priority_paging=1

This change will not take effect until you reboot and may increase performance on the large DDT by about 25%.

You can also enable priority paging in the same way under Solaris 2.5.1 or Solaris 2.6 provided that you install a kernel patch (105181-09 or higher for 2.6, 103640-25 or higher for 2.5.1) first. These patches are available from the SunSolve web site .

If you only have 64 megabytes of physical memory or less then the priority paging algorithm is unlikely to be effective in increasing performance and you should not bother with setting it.

Solaris 8 separates file system data from other data so that the file cache will no longer compete with programs for physical memory so it is unnecessary to turn priority paging on. Sun recommends that the priority paging setting be removed from/etc/system for Solaris 8.

The UFS Write Throttle

Solaris uses a write throttle to limit the amount of data waiting to be written to disk. For every open file there is a low water mark and a high water mark. Under normal circumstances the system runs a page scanner every 30 seconds or so that flushes the pending data to disk. If the amount of data waiting to be written to a file exceeds the low water mark then the system starts to run the scanner more frequently which will degrade performance slightly. If the high water mark is exceeded then the system will halt the program that is writing to the file until the amount of pending data drops below the low water mark. This is intended to limit the amount of memory occupied by data waiting to be written to disk. The default settings for the high and low water marks are rather small and can seriously degrade AIPS performance. You should see a 10% to 30% improvement in the time for the large DDT by adding the following settings to /etc/system.

set ufs:ufs_HW=6291456
set ufs:ufs_LW=4194304

Again, you will need to reboot for the new settings to take effect and you should not expect them to help if you only have 64 megabytes of physical memory or less.

These UFS write throttle does not appear to be so important under Solaris 8 and removing these settings from the system only increases the large DDT run time by about 2%. This is so small that I recommend that you not bother with these settings under Solaris 8.

DMA for IDE Disks

If you are using IDE disks on an Intel system then you should enable DMA unless your system has problems with this (as is possible for some older BIOS implementations). Not using DMA incurs a heavy penalty: my home machine (a cheap Celeron box) has an AIPSmark93 of 9.1 with DMA on and only 5.7 with DMA off.

DMA is disabled by default in Solaris 8 but was enabled by default for earlier versions of Solaris (including the early-access release of Solaris 8). The on-line release notes contain instructions for re-enabling DMA.

Revision Information

2000-05-04 Initial version
2000-05-18 Updated to include information about Solaris 8
2000-06-08 Added note on DMA for Solaris 8 Intel edition