On all platforms, Sybase IQ uses memory for four primary purposes:
Main buffer cache
Temporary buffer cache
Sybase IQ memory overhead (including thread stacks)
Load buffers
See Figure 5-1 for a diagram of Sybase IQ memory use.
On all 64-bit platforms, the total amount of usable memory is effectively unlimited. The only limit is the system’s virtual memory.
For performance tuning hints on HP-UX systems, see the Sybase IQ Installation and Configuration Guide for that platform.
On 32-bit platforms restrictions apply; see the following table for details.
Platform |
Total memory available |
---|---|
RedHat Linux 2.1 |
About 1.7GB available to Sybase IQ |
RedHat Linux 3.0 |
About 2.7GB available to Sybase IQ |
Windows 2000/2003/XPa |
2.75GB available to Sybase IQ |
aYou need Windows 2000 Advanced Server or Datacenter Server, Windows Server 2003 Standard, Enterprise or Datacenter Edition, or Windows XP Professional to get this much memory, and you must set the /3GB switch. Without the switch, the limit is 2GB. This amount is the total memory available to the process. Total size of buffer caches must not exceed 2GB on Windows servers, even with the /3GB setting. For details, see the Sybase IQ Installation and Configuration Guide for Windows. |
Due to the virtual memory usage pattern within the Sybase IQ server, virtual memory fragmentation could cause excessive process growth on Windows platforms. To reduce the likelihood of this situation, Sybase IQ supports the use of Microsoft’s low-fragmentation heap (LFH) on Windows XP and Windows Server 2003.
For more performance tuning hints on Windows platforms, see Chapter 7, “Tuning Servers on Windows Systems.”
For UNIX systems only, Sybase IQ provides two command-line options that can help you manage memory.
On HP and Sun platforms, you can designate a specified amount of memory as “wired” memory. Wired memory is shared memory that is locked into physical memory. The kernel cannot page this memory out of physical memory.
Wired memory may improve Sybase IQ performance when other applications are running on the same machine at the same time. Dedicating wired memory to Sybase IQ, however, makes it unavailable to other applications on the machine.
To create a pool of “wired” memory on these UNIX platforms only, specify the -iqwmem command-line switch, indicating the number of MB of wired memory. (You must be user root to set -iqwmem, except on Sun.) On 64-bit platforms, the only upper limit on -iqwmem is the physical memory on the machine.
For example, on a machine with 14GB of memory, you may be able to set aside 10GB of wired memory. To do so, you specify:
-iqwmem 10000
WARNING! Use this switch only if you have enough memory to dedicate the amount you specify for this purpose. Otherwise, you can cause serious performance degradation.
For this version:
On Sun Solaris, -iqwmem always provides wired memory.
On HP, -iqwmem provides wired memory if you start the server as root. It provides unwired memory if you are not root when you start the server. This behavior may change in a future version.
Remember, the memory used for the server comes out of a pool of memory used by all applications and databases. If you try to run multiple servers or multiple databases on the same machine at the same time, or if you have other applications running, you may need to reduce the amount of memory your server requests.
The server log reports how much memory you actually get:
Created 1073741824 byte segement id 51205 Attached at 80000000Created 184549376 byte segement id 6151 Attached at C3576000
You can also issue the UNIX command ipcs -mb
to
see the actual number of segments.
If you have memory issues on HP-UX, check the value of the maxdsiz_64bit kernel parameter. This parameter restricts the amount of virtual memory available to Sybase IQ on 64-bit HP processors. See your Sybase IQ Installation and Configuration Guide for the recommended value.