带组装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个数据通道,导致了例外。

原文地址:https://www.cnblogs.com/zengtx/p/7061622.html