<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><div style="color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div>
</div>
<div><br class=""><blockquote type="cite" class=""><div class="">On 29 May 2019, at 14:08, Björn Brandenburg <<a href="mailto:bbb@mpi-sws.org" class="">bbb@mpi-sws.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class=""><br class=""><blockquote type="cite" class="">On 29. May 2019, at 12:28, sobhan niknam <<a href="mailto:sobhan.niknam@yahoo.com" class="">sobhan.niknam@yahoo.com</a>> wrote:<br class=""><br class="">I have encountered with a transient problem when I run an application with parallel real-time tasks using pthreads. Sometimes the tasks’ job are not released in correct time. You can see the problem in figure below, the second job of the last task is released at 13ms instead of 10ms!<br class="">Do you have any idea where this problem comes from?<br class=""></blockquote><br class="">Hi Sobhan,<br class=""><br class="">no, sorry, I don’t. And how should I? I don’t know which plugin you are using,</div></div></blockquote><div><br class=""></div><div>I am using PSN-EDF</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""> I don’t know your application, I don’t know what code you are running,</div></div></blockquote><div><br class=""></div><div>My application is mjpeg that has 6 parallel tasks implemented with pthreads with similar structure as base_mt_task.c</div><br class=""><blockquote type="cite" class=""><div class=""><div class="">I don’t which facilities you are using to create your real-time threads and control their timing, etc. From just one figure, it’s really hard to guess as to what might be going on. <br class=""><br class="">Just looking at your figure, though, one can see that mjpeg/32084 self-suspends shortly after its first release, and that it doesn’t resume until shortly before time 13. LITMUS^RT interprets a thread’s self-suspension that exceeds past the thread’s current deadline/next-earliest-release time as a new job release. Put differently, why would you expect a job release to occur while the thread is not runnable? If you want that behavior, you need to use periodic polling reservations in the P-RES plugin. <br class=""></div></div></blockquote><div><br class=""></div><div>I exactly used the same structure as base_mt_task.c to create the threads, setup tasks parameters (real-time periodic tasks), and invoke real-time jobs of the threads for mjpeg application. However, this implementation sometimes works successfully and sometimes fails due to self-suspention, I don’t know why, and the tasks’ job are not released at correct expected moments!</div><div><br class=""></div>Best Regards,</div><div>Sobhan</div><div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><br class="">- Björn <br class=""><br class=""></div></div></blockquote></div><br class=""></body></html>