Condition Correlation performance issues with Spectrum 10.2

Document ID : KB000008252
Last Modified Date : 14/02/2018
Show Technical Document Details
Issue:

After create condition correlations, the spectroSERVER start having performance issues.

VNM.OUT show repeatedly the error:

may 31 06:22:46 WARNING at ItcRequestParmsCorba.cc(92): CORBA request not accepted after 120000ms. 

Performace dumps (.dmp) are created under: $SPECROOT/bin/support

Sample of the windbg analysis:

libGlobl.dll!CsGHashTable::get_node(const void * data=0x00000000094fee39) Line 928 + 0x8 bytes C++ 
libGlobl.dll!CsGHashTable::get(const void * data=0x0000000000000000) Line 997 + 0x5 bytes C++ 
libIHapi.dll!CsIHBase::get_scratchpad(const CsModelHandle & mh={...}, unsigned int tag=0x5993e2a0) Line 2678 + 0x21 bytes C++ 
libEaccsAdv.dll!CsIHCorr::isCondInTable(CsModelHandle * mh=0x0000000014c20ed0, ApCondition * cond=0x0000000000000001, unsigned int tableTag=0x14c20ed0) Line 6085 + 0xb bytes C++ 
libEaccsAdv.dll!CsIHCorr::isCondInATable(CsModelHandle * mh=0x000000001de27710, ApCondition * cond=0x0000000000133e84) Line 6114 C++ 
libEaccsAdv.dll!CsIHCorr::processSet(const CsModelHandle & mh={...}, ApCondRefRulePattern * rule=0x0000000066e75c00, ApCondition * * condList=0x000007fe00133e84) Line 6137 + 0x1b bytes C++ 
libEaccsAdv.dll!CsIHCorr::formSet(const CsModelHandle & mh={...}, ApCondRefRulePattern * rule=0x000000001ae42060, char * * tagList=0x000000025993e9c0, unsigned int index=0x00000005, CsGHashTable * activeCondTable=0x000000001dd83050, CsGHashTable * countCondTable=0x000000001dd83000, ApCondition * * condList=0x000000025993e2a0) Line 6075 + 0x14 bytes C++ 
libEaccsAdv.dll!CsIHCorr::formSet(const CsModelHandle & mh={...}, ApCondRefRulePattern * rule=0x000000001ae42060, char * * tagList=0x000000025993e9c0, unsigned int index=0x00000004, CsGHashTable * activeCondTable=0x000000001dd83050, CsGHashTable * countCondTable=0x000000001dd83000, ApCondition * * condList=0x000000025993e2a0) Line 6047 C++ 
libEaccsAdv.dll!CsIHCorr::formSet(const CsModelHandle & mh={...}, ApCondRefRulePattern * rule=0x000000001ae42060, char * * tagList=0x000000025993e9c0, unsigned int index=0x00000003, CsGHashTable * activeCondTable=0x000000001dd83050, CsGHashTable * countCondTable=0x000000001dd83000, ApCondition * * condList=0x000000025993e2a0) Line 6047 C++ 
libEaccsAdv.dll!CsIHCorr::formSet(const CsModelHandle & mh={...}, ApCondRefRulePattern * rule=0x000000001ae42060, char * * tagList=0x000000025993e9c0, unsigned int index=0x00000002, CsGHashTable * activeCondTable=0x000000001dd83050, CsGHashTable * countCondTable=0x000000001dd83000, ApCondition * * condList=0x000000025993e2a0) Line 6047 C++ 
libEaccsAdv.dll!CsIHCorr::formSet(const CsModelHandle & mh={...}, ApCondRefRulePattern * rule=0x000000001ae42060, char * * tagList=0x000000025993e9c0, unsigned int index=0x00000001, CsGHashTable * activeCondTable=0x000000001dd83050, CsGHashTable * countCondTable=0x000000001dd83000, ApCondition * * condList=0x000000025993e2a0) Line 6047 C++

libEaccsAdv.dll!CsIHCorr::reportVerifiedCondition(const CsModelHandle & mh={...}, ApCondition * c=0x0000000256eb15c0) Line 5971 C++ 
libEaccsAdv.dll!CsIHCorr::reportCondition(const CsModelHandle & mh={...}, ApCondition * c=0x0000000256eb15c0) Line 5679 C++ 
libEaccsAdv.dll!CsIHCorr::processAction(const CsModelHandle & mh={...}, const CsAction * action=0x000000025991ff4d, CsAttrValList * response=0x00000000417ae3b8) Line 1060 C++ 
libEaccsAdv.dll!CsIHCorr::trig_action(const CsModelHandle & mh={...}, const CsAction * action=0x00000000417ae3b8) Line 961 + 0x11 bytes C++ 
libsskrnl.dll!CsModelType::trig_action(const CsModelHandle & mh={...}, const CsAction * action=0x00000000094ff7b8, const CsVPConnHandle & conn_hndl={...}) Line 2142 + 0x1a bytes C++ 
libsskrnl.dll!CsModel::action(CsAction * action=0x0000000000000000, const CsVPConnHandle & conn_hndl={...}, const CsSecurityIf * user_security=0x000000001de27708) Line 883 + 0x15 bytes C++ 
libgserv.dll!CsDModelIf::action(CsAction * action=0x000007fef3c41387, const CsVPConnHandle & conn_hndl={...}, const CsSecurityIf * user_security=0x000007fef48584f8) Line 1854 + 0x13 bytes C++ 
libEaccsAdv.dll!ConditionModelActionNode::doRequestedWork() Line 421 + 0x34 bytes C++ 
libwkmgr.dll!CsWorkQueue::process_work_node(CsWorkNode * work_node=0x0000000000000000) Line 215 C++ 
libwkmgr.dll!CsWorkScheduler::do_work() Line 393 C++ 
libmoot.dll!call_func(void * thread=0x0000000000000000) Line 83 C++ 
kernel32.dll!BaseFiberStart() + 0x1d bytes

Eventually the SpectroSERVER stop responding, and it needs to be recycled or some time worst, it needs to be killed.

 

 

Environment:
CA Spectrum 10.2
Cause:

Whenever a condition correlation is created, Spectrum checks if the condition already exists. As part of it, it has been identified a performance issue in the code which doesn’t scale well if many correlation models exists for a correlation Domain. 

Resolution:

Next debug patch addresses this issue: Spectrum_10.02.00.D238

 

You may request this patch through a Support Case.

Additional Information: