1.1 Basic GemStone/S 64 Bit Architecture
1.2 Starting GemStone and Logging In
Stone
Shared Page Cache
Shared Cache Size
OS memory and Swapping
NetLDI
Logging in Gem Sessions
Linked vs. RPC
Gemservers for Large Configurations
NRS (Network Resource String)
1.3 Authentication and Authorization
GemStone UserIds and login
Authorization to Access Data
File access and authorization
1.4 Transactions and commit records
Object snapshot views
Session transactional state
Commit records
1.5 Files and Directories
GemStone Installation
GemStone shared libraries
Lock file directory
Host Identifier
Extents, Tranlogs, and disk space
Disk Usage for Extents and Transaction Logs
Raw Partitions
Process Log Files
System Clock and GemStone times
TimeZones
1.6 Options for Configuring
Configuration files
Environment variables
Utility command arguments
Run-time configurations
Example Configurations
1.7 Avoiding risk of Data loss
Recovery vs. Restore
Developing a Failover Strategy
Verifying strategy
1.8 Running a Second Repository
2.1 Server Components
The Server Configuration File
Before you begin
Number of User Sessions
Verifying OS support for sufficient Shared Memory
Other shared page caches
2.2 Configuring Extents and Transaction Logs
Encrypted Extents
Recommendations About Disk Usage
NFS
Keyfile limits on repository size
Configuring the Repository Extents
Estimating Extent Size
Choosing the Extent Location
Extent disk configuration
Setting a Maximum Size for an Extent
Pregrowing Extents to a Fixed Size
Pregrowing Extents to the Maximum Size
Allocating Data to Multiple Extents
Configuring the Transaction Logs
Logging Mode
Estimating Disk Space for Transaction Logs
Choosing the Log Location and Size Limit
How To Set Up a Raw Partition
Sample Setup for Extent on Raw Partition
Changing Between Files and Raw Partitions
Moving an Extent to a Raw Partition
Moving an Extent to the File System
Moving Transaction Logging to a Raw Partition
Moving Transaction Logging to the File System
Server Response to Gem Fatal Errors
2.3 How To Access the Server Configuration at Run Time
To Access Current Settings at Run Time
To Change Settings at Run Time
2.4 Tuning Server Performance
Tuning the Shared Page Cache
Adjusting the Cache Size
Clustering Objects That Are Accessed Together
Controlling Checkpoint Frequency
Tuning Page Server Behavior
AIO Page Server Threads
Free Frame Page Server Threads
Process Free Frame Caches
Running Cache Warming
Configure what is loaded into the cache
Configure when warming is run
3.1 Overview
Linked and RPC Applications
Note on terminology
The Session Configuration File
3.2 Configure the Gem Host
Local vs. Remote
Local
Remote
Gem Memory Requirements
Additional Configuration for Remote Gems
3.3 Set the Gem Configuration Options
Configure Temporary Object Space
Configure SSL for remote Gem sessions
Native Code
3.4 How To Access the Configuration at Run Time
4.1 Overview
Administrative user account
Login Parameters and Gem process
4.2 The NetLDI
NetLDI Ports and Names
4.3 NetLDI configuration
Configuration Decisions
NetLDI behavior: who will own spawned processes?
Authentication: which requests need to be authenticated?
Setting up the NetLDI Configuration
1. Setting up NetLDI as root with Authentication
Starting the NetLDI
Login parameters
Using Kerberos authentication
2. Setting up NetLDI in Guest Mode with Captive Account
Starting the netldi
Login
4.4 File Permissions
Using the Setuid Bit
Alternative: Use Group Write Permission
File Permissions for Other Files and Directories
4.5 Linked Gem Sessions
5.1 Overview
Distributed configuration with Local Gem
Distributed configuration with Remote Gem
Network
GemStone NetLDIs
NRS Syntax
Connecting to the RPC Gem
GemStone Page Servers
Port use in GemStone
Disrupted Communications
5.2 Configuring GemStone on Remote Nodes
Local Gems only
Remote Gems
Configuration Examples
RPC Application on a Remote Node with Local Gem
Linked Application on a Remote Node
RPC Application on a Remote Node with Remote Gem
RPC Application, Gem, and Stone on Three Nodes
Distributed System with a Mid-Level Cache
5.3 Troubleshooting Remote Logins
How the Login Process starts Session Processes
RPC Application with Gem on Server Node
Linked Application on Remote Node
If You Still Have Trouble
Check NetLDI Log Files
6.1 Starting the GemStone Server
To Start GemStone
To Troubleshoot Stone Startup Failures
Missing or Invalid Key File
Shared Page Cache Cannot Be Attached
Extent Missing or Access Denied
Extent Open by Another Process
Extent Already Exists
Other Extent Failures
Transaction Log Missing
Other Startup Failures
Listing Running Servers
Cache Warming
6.2 Starting a NetLDI
To Troubleshoot NetLDI Startup Failures
6.3 Running GemStone and NetLDI as services using Linux systemd
6.4 Starting a GemStone Session
To Define a GemStone Session Environment
To Start a Linked Session
To Start an RPC Session
To Troubleshoot Session Login Failures
Identifying and Stopping Logged-in Sessions
6.5 Shutting Down Sessions, the Object Server, and NetLDI
Stopping Logged-in Sessions
Stopping the Stone
Stopping the NetLDI
Using OS kill
Handling “Zombie” Sessions
6.6 Logins without a stone running
Solo login from topaz
Object creation and memory use
Solo sessions other than from topaz
6.7 Recovering from an Unexpected Shutdown
Automatic recovery
Clean shutdown
Disk failure or file system corruption
Shared Page Cache error
Fatal error detected by a Gem
Out of disk space for extents or transaction logs
Other errors
7.1 GemStone Process Logs
Finding log files
Stone Log
Shared Page Cache Monitor Log
Admin Gem Log
Reclaim Gem Log
Page Manager Log
Symbol Gem Log
NetLDI Log
Gem Logs and logs related to Gem Sessions
Linked Gems
RPC Gems on Stone’s host
Additional processes for Remote RPC or Linked Gems
Further control over log file location and name
Logsender and logreceiver Logs
Other Log Files
Summary of GemStone Process Log Behaviors
Managing log files
Retaining or deleting all log files
Customizing individual process deletion behavior
Localizing timestamps in log files
Programmatically adding messages to logs
7.2 Repository Page and Object Audit
Page Audit
Object Audit and Repair
Performing the Object Audit
Error Recovery
7.3 Profiling Repository Contents
7.4 Monitoring Performance
Statmonitor and VSD
Reliable constant monitoring
Programmatic Access to Cache Statistics
Host Statistics
Host Statistics for processes
Host Statistics for OS
Memory Statistics in with NetLDI in authenticated mode on Linux
Programmatic access
Monitoring with Prometheus
8.1 GemStone Users
UserProfiles
AllUsers
Special System Users
UserProfile Data
User ID
Authentication Scheme
Password
Default Object Security Policy
Symbol Lists
Privileges
The inverse privileges, NoGsPerformOnServer and related
Allowlist for performOnServer:
DeletedUserProfile and AllDeletedUsers
8.2 UserProfileGroups
AllGroups
Groups for object authorization
Create a group
Delete a group
8.3 Creating and Removing Users
Creating Users
Removing Users
Users and Group membership
Adding a user to a group
Removing a user from a group
Querying for Group members
Querying for a User’s Groups
8.4 Administering Users
List Existing Users
Modifying the UserId
Modifying Password
Modifying defaultObjectSecurityPolicy
Modifying Privileges
Modifying SymbolLists
Disable and Enable User Logins
Disable and Enable Commits by User
8.5 Configuring GemStone Authentication
Configuring GemStone Login Security
Limiting Choice of Passwords
Disallowing Particular Passwords
Disallowing Reuse of Passwords
Password Aging – Require Periodic Password Changes
Account Aging – Disable Inactive Accounts
Enabling Account Aging and lastLoginTime
Limit Logins Until Password Is Changed
Limit Concurrent Sessions by a Particular UserId
Limit Login Failures
8.6 Configuring UNIX Authentication
8.7 Configuring LDAP Authentication
Validating passwords
LdapDirectoryServers for authenticated binds
LdapDirectoryServers with TLS
Special note on Environment variables in root NetLDI mode
8.8 Configure SingleSignOn Authentication
Kerberos concepts
KerberosPrincipal and AllKerberosPrincipals
Setting up Kerberos Authentication in GemStone
Using Groups to authenticate with Kerberos
KerberosPrincipal available to all users
8.9 One-time passwords
Creating and Using a one-time password
One-time passwords for other UserProfiles
8.10 Tracking User Logins
Login logging
8.11 Performing specific operations on Login
Debugging
9.1 The Repository and Extents
Repository Growth
How To Check Free Space
9.2 Adding and Removing Extents
To Add an Extent While the Stone is Running
Possible Effects on Other Sessions
Repository>>createExtent:
Repository>>createExtent:withMaxSize:
To Remove an Extent
9.3 Reallocating Existing Objects Among Extents
To Reallocate Objects Among a Different Number of Extents
To Reallocate Objects Among the Same Number of Extents
9.4 Shrinking the Repository
9.5 Checking Page Fragmentation
9.6 Disk Space and Commit Record Backlogs
Handling signals indicating a commit record backlog
9.7 Recovering from Disk-Full Conditions
Repository full
Keyfile limits reached
Recovering from Out of disk space with keyfile repository size limit
10.1 Overview
Tranlogs with Encrypted Extents
Logging Modes
Restoring Transactions to a Restored Backup
How the Logs Are Used
10.2 How To Manage Full Logging
To Archive Logs
To Add a Log at Run Time
To Force a New Transaction Log
To Initiate a Checkpoint
To Change to Partial Logging
10.3 How To Manage Partial Logging
To Change to Full Logging
10.4 How To Recover from Tranlog-Full Conditions
Transaction Log Space Full
11.1 Overview
Warm and Hot Standbys
Version Compatibility
SystemUser password for archived backups
11.2 Types of Backups
Full vs. Partial Transaction logging
Verify Backup Process
Backups with Encrypted Extents
11.3 How To Make an Extent Snapshot Backup
Offline Extent Snapshot Backup (Repository is shutdown)
Online Extent Snapshot Backup (Repository is running)
11.4 How To Make a Smalltalk Full Backup
Compressed Backups
Performance Optimization
Impact on other sessions
Increasing session threads
Backups and Garbage Collection
Monitoring and Verification
statmonitor and cache statistics
Verifying a Backup is Readable
Checking Backup Start and Completion
Details about the backup
11.5 How to Restore from Backup
Restoring from an Extent Snapshot Backup
Restoring from a Full Backup
Steps in restoring a full backup
11.6 How to Make and Restore a Secure Backup
Creating a secure backup
Setting the certificate directories
Create an unencrypted secure backup
Create an encrypted backup
Restoring a secure backup
Restore an unencrypted backup
Restore an encrypted backup
Verifying the digital signature
11.7 How to Restore Transaction Logs
Compressed Tranlogs
Restoring Encrypted Transaction Logs
Process for Restoring Transaction Logs
Finalize by commitRestore
commitRestore without restoreFromCurrentLogs
After restoring a backup with corrupted objects
11.8 Special Cases and Errors in Restore
Missing or Corrupted Objects in Full Backup
Restoring Logs up to a Specific Log
Restoring Logs to a Point in Time
Precautions When Restoring a Subset of Transaction Logs
Fork-in-Time Scenario
Errors While Restoring Transaction Logs
Missing Transaction Log File
Truncated or Corrupt Transaction Log File
Recovering from File System Problems
Restore from Programmatic Backup specifying SystemUser password
Post-restore login as SystemUser
12.1 Overview
12.2 Encrypted Extents
Internal handling
Transaction Logs
Restart and Recovery
Programmatic Backups
Extent Copy Backup
Example Setting up Encrypted Extents
12.3 Encrypted Extents with Backup and Restore
Restoring Backups
Restoring transaction logs
No changes in encryption keys
Changes in encryption keys
Hot Standby
12.4 Modifying Encrypted Files
Examples
To encrypt an extent
To start a stone on an encrypted extent
To decrypt an extent or extent snapshot backup
To change the key of an encrypted extent or extent snapshot backup
To change the key of an encrypted transaction log
To change the encryption key of an encrypted fullbackup
To decrypt a fullbackup
13.1 Overview
13.2 Warm Standby
Setup and run the warm standby
Activate the warm standby in case of failure in the primary
13.3 Hot Standby
Encrypted Extents and Transaction logs
Multiple Slaves
Hot standby processes
logsender
logreceiver
Continuous Restore Mode
Transaction Record Transmittal
Multiple standby repositories
Reporting all status for a logsender
To setup and run the hot standby
Activating hot standby when master system is not usable
Controlled failover with immediate role reversal
Upgrade via hot standby
Connecting using SSL Mode
Handling encrypted extents on the master Stone
Master and Slave have the same encryption
Slave encryption independent of Master
Added transaction logs to the master
13.4 Tuning a Warm or Hot Standby
Tuning Reclaim
14.1 Memory Organization
14.2 Configuring Temporary Memory Usage
Configuration Options
Methods for Computing Temporary Object Space
Debugging out-of-memory errors
Recording Out of Memory Information to CSV file
Signal on low memory condition
15.1 Basic Concepts
Shadow or Dead?
What Happens to Garbage?
Admin and Reclaim Gems
Admin and Reclaim Gem configuration parameters
GemStone’s Garbage Collection Mechanisms
Marking
Reclaiming
GcLocks
Symbol Garbage Collection
15.2 MarkForCollection
Impact on Other Sessions
Scheduling markForCollection
15.3 Epoch Garbage Collection
Running Epoch Garbage Collection
Tuning Epoch
Cache Statistics
15.4 Reclaim
Reclaim Configuration Parameters
Reclaim Commit Frequency
Controlling the impact of reclaim
Speeding up reclaim
Avoiding disk space issues
Reclaim Logging
15.5 Running Admin and Reclaim Gems
Configuring Admin Gem
Configuring Reclaim Gem
Starting GcGems
Stopping GcGems
Adjusting the number of Reclaim sessions
15.6 Further Tuning Garbage Collection
Multi-Threaded Scan
Methods with “fast”
Methods with threads: keyword
Large Repositories
Tuning a running Multi-Threaded Scan
Memory Impact
Identifying Sessions Holding Up Voting
Tuning Write Set Union Sweep
Identifying Sessions Holding Up Page Reclaim
Finding References to Objects that prevent garbage collection
Using GsBitmaps
Finding all references
Full reference path
Finding large objects that are using excessive space
Identify Larger Objects in the Repository
Finding named objects that are large
A.1 GemStone Configuration Parameters
Naming Conventions for Configuration Options
Configuration Files
Creating or Using a Configuration File
Template Configuration Files
Default Configuration File Setup
Shared GemStone Installations
Nesting Configuration Files
Configuration Syntax
Errors and Warnings in Configuration Files
A.2 How GemStone Processes Find Configuration Files
The -E option
Stone configuration files
System Configuration File for Stone
Executable Configuration File for Stone
Linked Gem configuration files
System Configuration File for Linked Gem
Executable Configuration File for Linked Gem
RPC Gem Configuration Files
System Configuration File for RPC Gem
Executable Configuration File for RPC Gem
System Gems
Determining which Configuration Files are used
A.3 Other Gem customizations
Specifying configuration parameter values
Additional arguments to the gem
Environment Variables
Creating a custom gemnetobject
services.dat
A.4 Configuration Options
CONFIG_WARNINGS_FATAL
DBF_ALLOCATION_MODE
DBF_EXTENT_NAMES
DBF_EXTENT_SIZES
DBF_PRE_GROW
DUMP_OPTIONS
GEM_ABORT_MAX_CRS
GEM_CACHE_WARMER_ARGS
GEM_CACHE_WARMER_MID_CACHE_ARGS
GEM_ENV
GEM_COMPRESS_TRANLOG_RECORDS
GEM_FREE_FRAME_CACHE_SIZE
GEM_FREE_FRAME_LIMIT
GEM_FREE_PAGEIDS_CACHE
GEM_HALT_ON_ERROR
GEM_KEEP_MIN_SOFTREFS
GEM_KERBEROS_KEYTAB_FILE
GEM_KEYRING_DIRS
GEM_LISTEN_FOR_DEBUG
GEM_MAX_SMALLTALK_STACK_DEPTH
GEM_NATIVE_CODE_ENABLED
GEM_PGSVR_COMPRESS_PAGE_TRANSFERS
GEM_PGSVR_FREE_FRAME_CACHE_SIZE
GEM_PGSVR_FREE_FRAME_LIMIT
GEM_PGSVR_UPDATE_CACHE_ON_READ
GEM_PGSVR_USE_SSL
GEM_READ_AUTH_ERR_STUBS
GemRemoteCommit
GEM_REPOSITORY_IN_MEMORY
GEM_RPC_KEEPALIVE_INTERVAL
GEM_RPC_USE_SSL
GEM_SOFTREF_CLEANUP_PERCENT_MEM
GEM_SOLO_EXTENT
GEM_STATMONITOR_ARGS
GEM_STATMONITOR_MID_CACHE_ARGS
GEM_TEMPOBJ_AGGRESSIVE_STUBBING
GEM_TEMPOBJ_CACHE_SIZE
GEM_TEMPOBJ_CONSECUTIVE_MARKSWEEP_LIMIT
GEM_TEMPOBJ_MESPACE_SIZE
GEM_TEMPOBJ_OOMSTATS_CSV
GEM_TEMPOBJ_OOPMAP_SIZE
GEM_TEMPOBJ_PERMGEN_SIZE
GEM_TEMPOBJ_POMGEN_PRUNE_ON_VOTE
GEM_TEMPOBJ_POMGEN_SCAVENGE_INTERVAL
GEM_TEMPOBJ_POMGEN_SIZE
GEM_TEMPOBJ_SCOPES_SIZE
GEM_TEMPOBJ_START_ADDR
INCLUDE
KEYFILE
LOG_WARNINGS
NETLDI_HostAgentUser_cert
NETLDI_HostAgentUser_key
NETLDI_PORT_RANGE
NETLDI_START_MIDCACHE
NETLDI_WARMER_ARGS
SHR_NUM_FREE_FRAME_SERVERS
SHR_PAGE_CACHE_LARGE_MEMORY_PAGE_POLICY
SHR_PAGE_CACHE_LARGE_MEMORY_PAGE_SIZE_MB
SHR_PAGE_CACHE_LOCKED
SHR_PAGE_CACHE_NUM_PROCS
SHR_PAGE_CACHE_NUM_SHARED_COUNTERS
SHR_PAGE_CACHE_PERMISSIONS
SHR_PAGE_CACHE_SIZE_KB
SHR_PUSH_TO_MIDCACHES_THREADS
SHR_SPIN_LOCK_COUNT
SHR_TARGET_FREE_FRAME_COUNT
SHR_WELL_KNOWN_PORT_NUMBER
STN_ADMIN_GC_SESSION_ENABLED
STN_ALLOCATE_HIGH_OOPS
STN_ALLOW_NFS_EXTENTS
STN_ALLOW_NO_SESSION_INIT
STN_ANONYMOUS_SSL
STN_CACHE_WARMER_ARGS
STN_CACHE_WARMER_WAIT_MODE
STN_CHECKPOINT_INTERVAL
STN_COMMIT_QUEUE_THRESHOLD
STN_COMMIT_RECORD_BM_CACHING
STN_COMMIT_RECORD_QUEUE_SIZE
STN_COMMIT_TOKEN_TIMEOUT
STN_COMMITS_ASYNC
STN_CR_BACKLOG_THRESHOLD
STN_DISABLE_LOGIN_FAILURE_LIMIT
STN_DISABLE_LOGIN_FAILURE_TIME_LIMIT
STN_DISKFULL_TERMINATION_INTERVAL
STN_EPOCH_GC_ENABLED
STN_EXTENT_IO_FLAGS
STN_FREE_FRAME_CACHE_SIZE
STN_FREE_SPACE_THRESHOLD
STN_GEM_ABORT_TIMEOUT
STN_GEM_INITIAL_TRANSACTION_MODE
STN_GEM_LOSTOT_TIMEOUT
STN_GEM_PGSVR_CONNECT_TIMEOUT
STN_GEM_PRIVATE_PGSVR_ENABLED
STN_GEM_TIMEOUT
STN_GROUP_COMMITS
STN_HALT_ON_FATAL_ERR
STN_LISTENING_ADDRESSES
STN_LOGIN_LOG_DIR
STN_LOGIN_LOG_ENABLED
STN_LOGIN_LOG_HALT_ON_ERROR
STN_LOGIN_LOG_MAX_SIZE
STN_LOG_IO_FLAGS
STN_LOG_LOGIN_FAILURE_LIMIT
STN_LOG_LOGIN_FAILURE_TIME_LIMIT
STN_LOOP_NO_WORK_THRESHOLD
STN_MAX_AIO_RATE
STN_MAX_AIO_REQUESTS
STN_MAX_GC_RECLAIM_SESSIONS
STN_MAX_LOGIN_LOCK_SPIN_COUNT
STN_MAX_REMOTE_CACHES
STN_MAX_SESSIONS
STN_MAX_VOTING_SESSIONS
STN_NUM_AIO_WRITE_THREADS
STN_NUM_GC_RECLAIM_SESSIONS
STN_NUM_LOCAL_AIO_SERVERS
STN_OBJ_LOCK_TIMEOUT
STN_OBJECT_READ_LOG_DIRECTORIES
STN_OBJECT_READ_LOG_ENABLED
STN_OBJECT_READ_LOG_MAX_FILE_SIZE
STN_PAGE_MGR_COMPRESSION_ENABLED
STN_PAGE_MGR_MAX_WAIT_TIME
STN_PAGE_MGR_PRINT_TIMEOUT_THRESHOLD
STN_PAGE_MGR_REMOVE_MAX_PAGES
STN_PAGE_MGR_REMOVE_MIN_PAGES
STN_PGSVR_PORT_RANGE
STN_RC_LOOKAHEAD_LIMIT
STN_REMOTE_CACHE_PGSVR_TIMEOUT
STN_REMOTE_CACHE_STARTUP_TIMEOUT
STN_REMOTE_CACHE_TIMEOUT
STN_SHR_TARGET_PERCENT_DIRTY
STN_SIGNAL_ABORT_AGGRESSIVE
STN_SIGNAL_ABORT_CR_BACKLOG
STN_SMC_SPIN_LOCK_COUNT
STN_STATMONITOR_ARGS
STN_STONE_CACHE_STARTUP_TIMEOUT
STN_SYMBOL_GC_ENABLED
STN_SYMBOL_GEM_TEMPOBJ_CACHE_SIZE
STN_TRAN_FULL_LOGGING
STN_TRAN_INCREMENTAL_LOGGING
STN_TRAN_LOG_DEBUG_LEVEL
STN_TRAN_LOG_DIRECTORIES
STN_TRAN_LOG_LIMIT
STN_TRAN_LOG_PREFIX
STN_TRAN_LOG_SIZES
STN_TRANQ_TO_RUNQ_THRESHOLD
STN_WELL_KNOWN_PORT_NUMBER
A.5 Runtime-only Configuration Options
DelayAutoServiceSigAbort
GemAutoServiceSigAbort
GemCommitConflictDetails
GemCommitStubsForNpObjects
GemConvertArrayBuilder
GemConfigFileNames
GemDebuggerActive
GemDropCommittedExportedObjs
GemExceptionSignalCapturesStack
GemFailSafeNscEnumerate
LogOriginTime
StnReverseDns
SessionInBackup
StnConfigFileNames
StnCurrentTranLogDirId
StnCurrentTranLogNames
StnLogFileName
StnLogGemErrors
StnLoginsSuspended
StnMaxReposSize
StnMaxSessions
StnStandbyRole
StnSunsetDate
StnTranLogOriginTime
copydbf
Compression of copydbf output
Byte Order
Using copydbf to access information on a file
copydbf with raw partitions
copydbf with encrypted backups, extents, and transaction logs
gemnetobject
Custom gemnetobject scripts
gslist
Json output
largememorypages
netldidebug
pageaudit
printlogs
pstack
removedbf
searchlogs
secure_backup_extract
startcachewarmer
startlogreceiver
startlogsender
startnetldi
netldid
startstone
stoned
statmonitor
Statmonitor Compression
Statmonitor Filenames and locations
Automatic restart
Automatic deletion of older statmonitor files
Limiting what is recorded
statprom
Configuration file JSON format
stoplogreceiver
stoplogsender
stopnetldi
stopstone
topaz
updatesecuredbf
verify_backup_with_openssl
vsd
waitstone
A.1 Using NRS
GsNetworkResourceString
GEMSTONE_NRS_ALL
Arguments to startnetldi
Arguments to gemnetobject
Controlling log file directory locations
Controlling log file names
A.2 NRS Syntax
Non-Numeric Constants
Numeric Constants
Repository and GsObjectSecurityPolicies
Global Variables and Collections
Current TimeZone
Zoneinfo
Utilities
Public Environment Variables
System Variables Used by GemStone
Reserved Environment Variables