If optimization for SAS® High-Performance Markdown Optimization fails, the following error will show up in the HiPerfMerchIntelGridSvr.log:
ERROR - Error in TKMIWorker java.lang.RuntimeException: error (RC=255) on host 'HOSTNODE88.company.com' while executing remote shell command 'set -o pipefail ( ... <removed text> at java.lang.Thread.run(Unknown Source)
The cause of this problem is due to an out-of-memory condition. The above error message can be logged for two different situations. It will be necessary to determine which case applies to you.
Determine which case applies to you
Copy/paste the SAS code on the Full Code tab, and run it within a SAS session configured to use the High Performance Markdown Optimization libraries. The code will indicate which case applies. See the Output tab for sample output of the code.
Next Steps
Contact Technical Support (open a track) with the results of the above code. The Technical Support representative will provide the next steps to remediate/prevent the problem from recurring.
Product Family | Product | System | Product Release | SAS Release | ||
Reported | Fixed* | Reported | Fixed* | |||
SAS System | SAS High-Performance Markdown Optimization | Linux for x64 | 4.3_M1 | 4.3_M2 | 9.2 TS2M3 | 9.2 TS2M3 |
***************************************************************************;
* SAS Note 44232 - Use this code to determine whether the out of memory *;
* condition was caused by CASE 1 or CASE 2. *;
* This should be run in a SAS environment where the Merchandise *;
* Intelligence autoexec.sas has executed so that the solution libraries *;
* are preallocated. *;
***************************************************************************;
* Determine if CASE 1 applies;
proc sql;
* Get CURRENT_DATE_SK global setting value and put into current_date_sk macro variable;
select spec_value into :current_date_sk
from di_dm.global_setting
where spec_nm = 'CURRENT_DATE_SK';
* Determine fisical start date for CURRENT_DATE_SK and put it into fiscal_start_dt macro variable;
select put(fiscal_start_dt, 6.) into: fiscal_start_dt
from di_dm.date_dm
where date_sk=¤t_date_sk;
* Determine if there are any historical records in mpln_price_chg_appr table and ;
* place count into case1_row_cnt macro variable;
select count(*) into :case1_row_cnt
from di_trans.mpln_price_chg_appr
where start_dt < &fiscal_start_dt;
quit;
* print out results;
data _null_;
format row_cnt 9.;
row_cnt = symget('case1_row_cnt');
put '******************************************************************************************';
put ' CASE 1 ASSESSMENT';
put "CURRENT_DATE_SK = &CURRENT_DATE_SK";
if row_cnt > 0 then put 'CASE 1 applies to your data. Corrective action is necessary.';
else put 'CASE 1 does NOT apply to your data. No action is necessary.';
put '******************************************************************************************';
run;
* Determine if CASE 2 applies;
proc sql;
* Determine if there are any records where inventory pooling level is at a higher level than decision level;
* and place a count of those rows into the case2_row_cnt macro variable;
select count(*) into :case2_row_cnt
from di_trans.mdo_plan
where inv_pool_prod_lvl < decision_prod_lvl
or inv_pool_geo_lvl < decision_geo_lvl;
quit;
*print out results;
data _null_;
format row_cnt 9.;
row_cnt = symget('case2_row_cnt');
put '******************************************************************************************';
put ' CASE 2 ASSESSMENT';
if row_cnt > 0 then put 'CASE 2 applies to your data. Corrective action is necessary.';
else put 'CASE 2 does NOT apply to your data. No action is necessary.';
put '******************************************************************************************';
run;
227 ***************************************************************************; 228 * SAS Note 44232 - Use this code to determine whether the out of memory *; 229 * condition was caused by CASE 1 or CASE 2. *; 230 * This should be run in a SAS environment where the Merchandise *; 231 * Intelligence autoexec.sas has executed so that the solution libraries *; 232 * are preallocated. *; 233 ***************************************************************************; 234 235 * Determine if CASE 1 applies; 236 237 proc sql; 238 239 * Get CURRENT_DATE_SK global setting value and put into current_date_sk macro variable; 240 select spec_value into :current_date_sk 241 from di_dm.global_setting 242 where spec_nm = 'CURRENT_DATE_SK'; NOTE: Data file DI_DM.GLOBAL_SETTING.DATA is in a format that is native to another host, or the file encoding does not match the session encoding. Cross Environment Data Access will be used, which might require additional CPU resources and might reduce performance. 243 244 * Determine fisical start date for CURRENT_DATE_SK and put it into fiscal_start_dt macro 244! variable; 245 select put(fiscal_start_dt, 6.) into: fiscal_start_dt 246 from di_dm.date_dm 247 where date_sk=¤t_date_sk; NOTE: Data file DI_DM.DATE_DM.DATA is in a format that is native to another host, or the file encoding does not match the session encoding. Cross Environment Data Access will be used, which might require additional CPU resources and might reduce performance. 248 249 * Determine if there are any historical records in mpln_price_chg_appr table and ; 250 * place count into case1_row_cnt macro variable; 251 select count(*) into :case1_row_cnt 252 from di_trans.mpln_price_chg_appr 253 where start_dt < &fiscal_start_dt; NOTE: Data file DI_TRANS.MPLN_PRICE_CHG_APPR.DATA is in a format that is native to another host, or the file encoding does not match the session encoding. Cross Environment Data Access will be used, which might require additional CPU resources and might reduce performance. 254 quit; NOTE: PROCEDURE SQL used (Total process time): real time 0.01 seconds cpu time 0.01 seconds 255 256 * print out results; 257 data _null_; 258 format row_cnt 9.; 259 row_cnt = symget('case1_row_cnt'); 260 put 260! '****************************************************************************************** 260! '; 261 put ' CASE 1 ASSESSMENT'; 262 put "CURRENT_DATE_SK = &CURRENT_DATE_SK"; 263 if row_cnt > 0 then put 'CASE 1 applies to your data. Corrective action is necessary.'; 264 else put 'CASE 1 does NOT apply to your data. No action is necessary.'; 265 put 265! '****************************************************************************************** 265! '; 266 267 run; NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column). 259:11 ****************************************************************************************** CASE 1 ASSESSMENT CURRENT_DATE_SK = 20180 CASE 1 does NOT apply to your data. No action is necessary. ****************************************************************************************** NOTE: DATA statement used (Total process time): real time 0.00 seconds cpu time 0.00 seconds 268 269 * Determine if CASE 2 applies; 270 271 proc sql; 272 273 * Determine if there are any records where inventory pooling level is at a higher level 273! than decision level; 274 * and place a count of those rows into the case2_row_cnt macro variable; 275 select count(*) into :case2_row_cnt 276 from di_trans.mdo_plan 277 where inv_pool_prod_lvl < decision_prod_lvl 278 or inv_pool_geo_lvl < decision_geo_lvl; NOTE: Data file DI_TRANS.MDO_PLAN.DATA is in a format that is native to another host, or the file encoding does not match the session encoding. Cross Environment Data Access will be used, which might require additional CPU resources and might reduce performance. 279 quit; NOTE: PROCEDURE SQL used (Total process time): real time 0.01 seconds cpu time 0.00 seconds 280 281 *print out results; 282 data _null_; 283 format row_cnt 9.; 284 row_cnt = symget('case2_row_cnt'); 285 put 285! '****************************************************************************************** 285! '; 286 put ' CASE 2 ASSESSMENT'; 287 if row_cnt > 0 then put 'CASE 2 applies to your data. Corrective action is necessary.'; 288 else put 'CASE 2 does NOT apply to your data. No action is necessary.'; 289 put 289! '****************************************************************************************** 289! '; 290 run; NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column). 284:11 ****************************************************************************************** CASE 2 ASSESSMENT CASE 2 does NOT apply to your data. No action is necessary. ****************************************************************************************** NOTE: DATA statement used (Total process time): real time 0.00 seconds cpu time 0.00 seconds
Type: | Problem Note |
Priority: | high |
Date Modified: | 2020-03-30 11:45:56 |
Date Created: | 2011-09-07 15:07:01 |