带组装64ROS_8节点_4096Chan测试结果
将64个ROS, 4096个通道布置在8个节点上时,SFI 出现 warning:
WARNING 2017-Jun-21 20:45:47 [bool SFIEvent::addFragment(...) at SFI/src/SFIEvent.cxx:275] Problem with data integrity: Event fragment from ROS-Eth-13 with LVL1ID: 0x7 cannot be appended to the full event. The fragment will be lost
ROS没有报错。事例率为 127Hz。
报WARNING的代码行: vi ../src/SFIEvent.cxx
264 try{ 265 m_fullEvent->append_unchecked(m_fragoffsets[k]); 266 }catch(eformat::Issue & ex){ 267 std::stringstream mystream; 268 mystream << "Event fragment from " 269 << AppControl::get_instance()->getPartition()->get_app_id(rosID) 270 << " with LVL1ID: 0x" 271 << std::hex << m_dfmassign->get_l1id() << std::dec 272 << " cannot be appended to the full event. " 273 << "The fragment will be lost"; 274 std::string tmp = mystream.str(); 275 SFI::DataIntegrityIssue myIssue(ERS_HERE, tmp.c_str()); 276 ers::warning(myIssue); 277 continue; 278 }
查看append_unchecked:
vi ../../../tdaq-common-01-18-04/eformat/src/write/FullEventFragment.cxx
265 void eformat::write::FullEventFragment::append_unchecked (const uint32_t* rob) 266 { 267 if (m_n_unchecked == MAX_UNCHECKED_FRAGMENTS) 268 throw EFORMAT_TOO_MANY_UNCHECKED(MAX_UNCHECKED_FRAGMENTS); 269 eformat::ROBFragment<const uint32_t*> frag(rob); 270 if (m_n_unchecked) //more fragments are available before this one 271 m_unchecked[m_n_unchecked-1].next = &m_unchecked[m_n_unchecked]; 272 set(m_unchecked[m_n_unchecked++], rob, frag.fragment_size_word(), 0); 273 m_node[0].base[1] += frag.fragment_size_word(); 274 }
查看 MAX_UNCHECKED_FRAGMENTS:
vi ../../../tdaq-common-01-18-04/eformat/eformat/write/FullEventFragment.h
23 /** 24 * Maximum number of unchecked fragments a writeable FullEventFragment 25 * may have. 26 */ 27 const uint32_t MAX_UNCHECKED_FRAGMENTS = 2048;
由于刚好有2048个数据通道,导致了例外。