SAS® Fraud Management Rule Estimation fails with "Insufficient memory" errors


The Rule Estimation in SAS Fraud Management might fail to run due to insufficient memory.

As a result, error messages similar to the following occur in the Estimation log file.

ERROR: Hash object added 942164 items when memory failure occurred.

FATAL: Insufficient memory to execute DATA step program. Aborted during the AUTO-LOADING STORED PROGRAM phase.

ERROR: The DATA step view has been abnormally terminated.

ERROR: The SAS System stopped processing this step because of insufficient memory.

This issue occurs because the default memory allocation for SAS processes (that is, 2GB) or the currently configured MEMSIZE is not sufficient for the SAS Fraud Management Rule Estimation.

Workaround

To circumvent this issue, set the MEMSIZE parameter to MAX.

You can set the MEMSIZE parameter in two different configuration files:

/<SASHome>/SASFoundation/9.4/sasv9.cfg

/<SASConfig>/Lev1/<SASApp>/PooledWorkspaceServer/sasv9_usermods.cfg

If the MEMSIZE parameter is not already configured in the above file, include the line below at the end of the file.

-MEMSIZE MAX

The above MEMSIZE configuration will be used while running SAS Fraud Management batch jobs and any ad hoc SAS process (via /<SASHome>/SASFoundation/9.4/sas).

Note that MEMSIZE under /<SASConfig>/Lev1/<SASApp>/PooledWorkspaceServer/sasv9_usermods.cfg will be confined to only SAS® Pooled Workspace Server and overrides what is set in /<SASHome>/SASFoundation/9.4/sasv9.cfg.

Any SAS process that originates from the SAS Fraud Management SAS® Rules Studio and SAS Fraud Management SAS® Rule Estimation Server would trigger the above MEMSIZE configuration.

Activities on the SAS Fraud Management user interface that involve LookUp List (LUL) will also invoke SAS Pooled Workspace Server.

Additional Information

I) The estimation log files are created at the location defined by the following two properties below:

Navigate to the SAS Fraud Management UIPreferences tab ► System Properties  ► Estimationestimate_results_dir_webapp or estimate_results_dir_sasiom.

select property_value from FCMCORE.FCM_PROPERTY

where property_name in ('estimate_results_dir_webapp','estimate_results_dir_sasiom');

II) A SAS Fraud Management rule estimation process runs a SAS session/process internally.

 

III) The amount of memory consumed during the SAS Fraud Management Rule Estimation depends on several factors like User-Defined Variables (UDV) Segment size, distinct UDV keys, associated LookUp List (LUL) size, transaction length, transactions per day, the number of days associated with the estimation, and so on.

IV) MEMSIZE is a SAS System Option (not specific to SAS Fraud Management) in UNIX that specifies the limit on the total amount of virtual memory that a SAS session can use.

V) The MAX value for MEMSIZE automatically considers both page size and virtual memory limit and adjusts the MEMSIZE value accordingly.

For example, a DATA step might require only 20 MB of memory. Even though MEMSIZE is set to MAX, SAS uses only 20 MB of memory.

VI) Check the memory allocated on your SAS Fraud Management Rules Estimation Server (RES) host before setting MEMSIZE to MAX.

VII) As a good practice, it is recommended that you test setting MEMSIZE to MAX and run SAS Fraud Management Rule Estimations on the lower-level environment before you perform the change in the Production environment.

VIII) SAS processes will not hamper or interfere with the memory that other processes already use. So, the memory JVMs (Java Virtual Machines) use will not be consumed (forcibly) by SAS processes.

 

IX) For more information about the MEMSIZE parameter, see MEMSIZE System Option: UNIX

 

X) For more information about SAS Pooled Workspace Server, see SAS® Pooled Workspace Servers.

 

XI) For more information about SAS® Application Servers, see Overview of SAS® Application Servers