FORTE: the initial size of the event chain's external event list. [message #1756013] |
Fri, 10 March 2017 06:29 |
|
There is ExternalEventList in FORTE (ecet.cpp). As far as I understand this list is entered by:
- all events from any comlayer
- all events from FORTE timer thread (E_CYCLE, E_DELAY, ..)
- something else.
The initial size of the event chain's external event list = 10.
If I use PUBL and SUBL in 4DIAC (FBs working through localcomlayer) I must consider that max SUBLs of one comm.group must be less then size of the event chain's external event list. Otherwise, DEVLOG_ERROR("External event queue is full, external event dropped!\n").
Is it possible to make 4DIAC to check the possible overflow of the ExternalEventList?
Why the size is only 10?
|
|
|
Re: FORTE: the initial size of the event chain's external event list. [message #1756020 is a reply to message #1756013] |
Fri, 10 March 2017 07:55 |
|
Hi,
in the ExternalEventList everything which may wake up the thread coming from other threads is put there. This holds also for SUBLs as these may also come from other resources or other event chains. Currently we've set the default value for the external event list so low as the external event list is transfered to the internal event list after the execution of each FB in the run method. And if more then 10 external events are occuring during the execution of one FB this typically means a very heavy load for the system or often even overload. But you can easily change that number in the CMake configuration of your FORTE.
You know that SUBLs are a quite heave concept compared to normal event and data connections. Espeically with the better support of subapplications in 4diac-ide 1.9.0.M2 it could be interesting to reconsider your use of SUBLs.
I hope this helps.
|
|
|
|
|
Re: FORTE: the initial size of the event chain's external event list. [message #1756365 is a reply to message #1756333] |
Wed, 15 March 2017 20:56 |
|
This is really a very strange behaviour. When you have so many events in the external event queue you also need to expand the size of the "normal" (internal) event queue. But it seams that with in your case the MQTT publisher is blocking for a very long time as this is normally the cause when external event ques are getting full. Options would be to split your application to more resources. Because then you have your more parallel execution. Furthermore I think we need to look into MQTT so that it is not blocking on send.
|
|
|
Powered by
FUDForum. Page generated in 0.03681 seconds