One of my quant users is getting this message on a Linux 6/SAS 9.4 (TS1M3) Proc NLMIXED job: 
proc nlmixed data=testda_ft maxiter=800 maxfunc=8000 nthreads=24;
 
and she gets this
    "WARNING:  The NTHREADS= option is ignored due to insufficient memory."  
She ran it from a Putty command line with this: 
/usr/local/SAS/SASFoundation/9.4/sas -work /lppra00a0133/temp/saswork -noterminal scoring_GN30.sas &
 
It loops month by month through the data and I asked her to run 1 month with MPRINT and FULLSTIMER turned on.
Log is attached.
 
 
/*tuning for one category product */
%macro mbspred(product_name, inputsasdb
			, month_reset_min, month_reset_max
			, resetperi_min, resetperi_max
			, orig_term_min, orig_term_max
			, wala_min, wala_max
			, obsdt_bgn, obsdt_end
			, vintage_begin, vintage_end
			, agency_type, product_type, coll_type
			, exclude_mon
			, Parm_inputda_dir, tunParmInFile
			, nlinout_db
			, output_dir
			, nlin_graph_nm, tunParmOutFile, tunSumOutFile
			, model_num, nlin_sum
			);
	%dafilter_ARM( &inputsasdb.,outab=testda_ft
		,mth2reset_min=&month_reset_min. ,  mth2reset_max=&month_reset_max.
		,resetperi_min=&resetperi_min. ,      resetperi_max=&resetperi_max.
		,orig_term_min=&orig_term_min. ,      orig_term_max=&orig_term_max.
		,wala_min=&wala_min. ,           wala_max=&wala_max.
		,obsdt_bgn=&obsdt_bgn.,          obsdt_end=&obsdt_end.
		,vintage_bgn=&vintage_begin. ,     vintage_end=&vintage_end.
		,agency_typ=&agency_type.
		,product_typ=&product_type.
		,coll_typ=&coll_type.
		,exclude_mon=&exclude_mon.
		);
	/*read parameters initial values */
	proc import datafile="&Parm_inputda_dir./&tunParmInFile." out=parmset DBMS=csv REPLACE;
		GETNAMES=YES;
		guessingrows=100;
	RUN;
	data parmset;
		set parmset;
		product="&product_name.";
		Agency=compress("&agency_type.","()'");
		date_begin="&obsdt_bgn."d;
		date_end="&obsdt_end."d;
		run_date=Today();
		run_by="&sysuserid.";
		format date_begin mmddyy10.
			date_end mmddyy10.
			run_date mmddyy10.
		;
	run;
	/*performe nlin tuning */
	%let year_end=%substr(&obsdt_end.,3,7);
	%nlin_ssn(&model_num.,testda_ft,&nlinout_db.,&nlin_sum., parmset, outest_param,"&nlin_graph_nm.","&output_dir.",&product_name.,&obsdt_bgn.,&obsdt_end. );
	proc export data=nlin_parms dbms=csv outfile="&output_dir./&tunParmOutFile." replace;
	run;
%mend;
/*******************************************************************************************************************************************************************/
/*******************************************************************************************************************************************************************/
%macro ProdMBSpred(obsdate_b, obsdate_e, parm_dir, output_dir, inputdb,macroset_csvFile);
	proc import datafile="&parm_dir./¯oset_csvFile." out=macroset DBMS=csv REPLACE;
		GETNAMES=YES;
	RUN;
	data macroset1;
		set macroset;
		macro_ind=_n_;
	run;
	data _null_;
		set macroset1 end=last;
		if last then
			call symput('N', put (macro_ind,3.));
	run;
	%do i=1 %to &N.;
		proc sql noprint;
			select
				strip(macroVar_name), macroVar_value
			into : this_macro_name , : this_macro_value
				from macroset1 where macro_ind=&i;
		quit;
		data _null_;
			call symput(strip("&this_macro_name."),strip("&this_macro_value."));
		run;
	%end;
	%let year_end=%substr(&obsdate_e.,3,7);
	/*add some prefix to some macro variables */
	%let TunParm_inFile=%cmpres(&TunParmInFile.);
	%let TunParm_outFile=%cmpres(&year_end._&product_nm._&TunParmoutFile.);
	%let nlinout_dtbase=%cmpres(&nlinout_db._&product_nm._&year_end.);
	%let nlinsum_dtbase=%cmpres(&nlin_sum._&product_nm._&year_end.);
	%let TunSum_outFile=%cmpres(&year_end._&product_nm._&tunSumOutFile.);
	%let Nlingraph_nm=%cmpres(&year_end._&product_nm._&nlin_graph_nm.);
	%put &product_nm.>>> &nlinsum_dtbase.>>>&tunParm_outFile. >>>> &nlinout_dtbase. >>>>> &TunSum_outFile. >>>> &Nlingraph_nm.;
	%mbspred(product_name=&product_nm.,             inputsasdb= &inputdb.
		,month_reset_min=&month_reset_min. , month_reset_max=&month_reset_max.
		,resetperi_min=&firstResetAge_min. , resetperi_max=&firstResetAge_max.
		,orig_term_min=&orig_term_min. ,     orig_term_max=&orig_term_max.
		,wala_min=&wala_min. ,               wala_max=&wala_max.
		,obsdt_bgn=&obsdate_b.,          obsdt_end=&obsdate_e.
		,vintage_begin=&vintage_begin. ,     vintage_end=&vintage_end.
		,agency_type=&agency_type.,          product_type=&product_type.,        coll_type=&coll_type.
		,exclude_mon=&exclude_month.
		,Parm_inputda_dir=&parm_dir.,            tunParmInFile=&tunParm_InFile.
		,nlinout_db=&nlinout_dtbase.
		,output_dir=&output_dir.
		,nlin_graph_nm=&nlingraph_nm.,      tunParmOutFile=&tunParm_OutFile.,      tunSumOutFile=&tunSum_OutFile.
		,model_num=&ModelNum., nlin_sum=&nlinsum_dtbase.
		);
	proc datasets lib=work;
		delete macroset macroset1;
	run;
%mend;
/*******************************************************************************************************************************************************************/
**** DRIVER PGM BELOW ****;
/*********************************************************************************************************************************/
/*******                *******/
/******* Description: This program use csv files from BRI then conduct optimization tuning and output the result to excel file  *******/
/*******                                        *******/
/*******                                        *******/
/*******  Change log: first version 4/18/2017 Huibin Cheng                                      *******/
/*******                                        *******/
/*********     second version 06/11/2018 by Haisu Ma      ****************/
/**/
;;;;
%let codedir=/lppra00a0133/data/dev/haisu/ginnie_plpm/run18;
%let inputda_dir=/lppra00a0133/data/dev/haisu/ginnie_plpm;
%let parm_dir=/lppra00a0133/data/dev/haisu/ginnie_plpm/run18;
%let outputda_dir=/lppra00a0133/data/dev/haisu/ginnie_plpm/run18;
libname sasdb "&inputda_dir.";
libname outdb "&outputda_dir.";
%include "&codedir./Macro_hm_bspline_GN30_server_poisson.sas";
%let date_begin=31JAN2012;
%let date_end=31JAN2019;
%let fix30_inputsasdb=sasdb.est_gnma30;
%let fix30GNSetCsv=PLPM_GN30_Setting.csv;
/*for model 1, no seasing, only tune refinance  */
%macro full_run(n_runs,obs_begin,obs_end);
	%do run = 1 %to &n_runs.;
		%put running cycle &run.;
		%let obs_b=%sysfunc(intnx(month,"&obs_begin."D,%eval((&run.-1)*3),e),date9.);
		%let obs_e=%sysfunc(intnx(month,"&obs_end."D,%eval((&run.-1)*3),e),date9.);
		%put &obs_b. &obs_e.;
		%ProdMBSpred(obsdate_b=&obs_b., obsdate_e=&obs_e., parm_dir=&parm_dir.,output_dir=&outputda_dir., inputdb=&fix30_inputsasdb.,macroset_csvFile=&fix30GNSetCsv.);
	%end;
%mend;
%full_run(1,&date_begin.,&date_end.);