<div dir="ltr"><div>Thanks a lot, <span style="font-size:13px;font-family:arial,sans-serif">Glenn and </span><span style="font-size:13px;font-family:arial,sans-serif">Björn!</span><br></div><div><span style="font-family:arial,sans-serif"><br></span></div><div><span style="font-family:arial,sans-serif">I'm using GSN-EDF and rt_launch (8 cores, tested on bare-metal and VM). </span></div><div><span style="font-family:arial,sans-serif">The result was similar when using C-EDF (partition/cluster is not setup) or using different number of tasks, or different utilization.</span><br></div><div><span style="font-family:arial,sans-serif"><br></span></div><div><span style="font-family:arial,sans-serif">After getting the script from the web (</span><font face="arial, sans-serif"><a href="http://pastebin.com/2acRriVs">http://pastebin.com/2acRriVs</a>), I changed only rtspin to rt_launch.</font></div><div><span style="font-family:arial,sans-serif"><br></span></div><div><div><font face="arial, sans-serif">==============================================</font></div><div style><span style="font-family:arial,sans-serif">#!/bin/bash</span><br></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">#RTSPIN="/root/liblitmus/rtspin"</font></div><div style><font face="arial, sans-serif">RELEASETS="/root/liblitmus/release_ts"</font></div><div style><font face="arial, sans-serif">ST_TRACE="/root/ft_tools/st_trace"</font></div><div style><font face="arial, sans-serif">RTLAUNCH="/root/liblitmus/rt_launch"</font></div><div style><font face="arial, sans-serif">PROG=$1</font></div><div style><font face="arial, sans-serif">SPIN_PIDS=""</font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">#SchedNames="GSN-EDF</font></div><div style><font face="arial, sans-serif">#C-EDF"</font></div><div style><font face="arial, sans-serif">SchedNames="GSN-EDF"</font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">for sched in $SchedNames</font></div><div style><font face="arial, sans-serif">do</font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">for rep in 1 2 3 4 5 6 7 8 9 10</font></div><div style><font face="arial, sans-serif">do</font></div><div style><font face="arial, sans-serif">echo "Starting st_trace"</font></div><div style><font face="arial, sans-serif">${ST_TRACE} -s mk &</font></div><div style><font face="arial, sans-serif">ST_TRACE_PID="$!"</font></div><div style><font face="arial, sans-serif">echo "st_trace pid: ${ST_TRACE_PID}"</font></div><div style><font face="arial, sans-serif">sleep 1 </font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">echo "Switching to $sched plugin"</font></div><div style><font face="arial, sans-serif">echo "$sched" > /proc/litmus/active_plugin</font></div><div style><font face="arial, sans-serif">sleep 1 </font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">echo "Setting up rtlaunch processes"</font></div><div style><font face="arial, sans-serif">n=8</font></div><div style><font face="arial, sans-serif">numactl --physcpubind=8-15 --cpubind=1 --membind=1 $RTLAUNCH -c srt 180 200 $PROG &</font></div><div style><font face="arial, sans-serif">SPIN_PIDS="$SPIN_PIDS $!"</font></div><div style><font face="arial, sans-serif">numactl --physcpubind=8-15 --cpubind=1 --membind=1 $RTLAUNCH -c srt 159 177 $PROG &</font></div><div style><font face="arial, sans-serif">SPIN_PIDS="$SPIN_PIDS $!"</font></div><div style><font face="arial, sans-serif">numactl --physcpubind=8-15 --cpubind=1 --membind=1 $RTLAUNCH -c srt 149 166 $PROG &</font></div><div style><font face="arial, sans-serif">SPIN_PIDS="$SPIN_PIDS $!"</font></div><div style><font face="arial, sans-serif">numactl --physcpubind=8-15 --cpubind=1 --membind=1 $RTLAUNCH -c srt 139 155 $PROG &</font></div><div style><font face="arial, sans-serif">SPIN_PIDS="$SPIN_PIDS $!"</font></div><div style><font face="arial, sans-serif">numactl --physcpubind=8-15 --cpubind=1 --membind=1 $RTLAUNCH -c srt 130 144 $PROG &</font></div><div style><font face="arial, sans-serif">SPIN_PIDS="$SPIN_PIDS $!"</font></div><div style><font face="arial, sans-serif">numactl --physcpubind=8-15 --cpubind=1 --membind=1 $RTLAUNCH -c srt 120 133 $PROG &</font></div><div style><font face="arial, sans-serif">SPIN_PIDS="$SPIN_PIDS $!"</font></div><div style><font face="arial, sans-serif">numactl --physcpubind=8-15 --cpubind=1 --membind=1 $RTLAUNCH -c srt 110 122 $PROG &</font></div><div style><font face="arial, sans-serif">SPIN_PIDS="$SPIN_PIDS $!"</font></div><div style><font face="arial, sans-serif">numactl --physcpubind=8-15 --cpubind=1 --membind=1 $RTLAUNCH -c srt 100 111 $PROG &</font></div><div style><font face="arial, sans-serif">SPIN_PIDS="$SPIN_PIDS $!"</font></div><div style><font face="arial, sans-serif">sleep 1</font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">echo "catting log"</font></div><div style><font face="arial, sans-serif">cat /dev/litmus/log > log.txt &</font></div><div style><font face="arial, sans-serif">LOG_PID="$!"</font></div><div style><font face="arial, sans-serif">sleep 1 </font></div><div style><font face="arial, sans-serif">echo "Doing release..."</font></div><div style><font face="arial, sans-serif">$RELEASETS</font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">echo "Waiting for RT-Launch processes..."</font></div><div style><font face="arial, sans-serif">wait ${SPIN_PIDS}</font></div><div style><font face="arial, sans-serif">sleep 1 </font></div><div style><font face="arial, sans-serif">echo "Killing log"</font></div><div style><font face="arial, sans-serif">kill ${LOG_PID}</font></div><div style><font face="arial, sans-serif">sleep 1 </font></div><div style><font face="arial, sans-serif">echo "Sending SIGUSR1 to st_trace"</font></div><div style><font face="arial, sans-serif">kill -USR1 ${ST_TRACE_PID}</font></div><div style><font face="arial, sans-serif">echo "Waiting for st_trace..."</font></div><div style><font face="arial, sans-serif">wait ${ST_TRACE_PID}</font></div><div style><font face="arial, sans-serif">sleep 1 </font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">mkdir run-data/"$sched"_"$n"_$rep</font></div><div style><font face="arial, sans-serif">mv /dev/shm/*.bin run-data/"$sched"_"$n"_$rep/</font></div><div style><font face="arial, sans-serif">#mv log.txt run-data/"$sched"_$rep/</font></div><div style><font face="arial, sans-serif">sleep 1 </font></div><div style><font face="arial, sans-serif">echo "Done! Collect your logs."</font></div><div style><font face="arial, sans-serif"><br></font></div><div style><font face="arial, sans-serif">done</font></div><div style><font face="arial, sans-serif">done</font></div><div style><font face="arial, sans-serif">echo "DONE!"</font></div></div><div style><font face="arial, sans-serif">==============================================</font></div><div class="gmail_extra"><br></div><div class="gmail_extra"><span style="font-family:arial,sans-serif">Even though I tried several $PROG, inter-run variation happened.</span><br></div><div class="gmail_extra">I pasted the result of 90% utilzation and 45% utilization cases below. </div><div class="gmail_extra">I used different (period,wcet) per task at this time.</div><div class="gmail_extra"><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_extra"><span style="font-family:arial,sans-serif">(1) 8 * 0.9 utilization/core ==> (4, 8, 5, 3, 2, 4, 8, 4, 1, 7) tasks are schedulable among 8 tasks. ==> schedulability (0.50, 1.00, 0.63, 0.38, 0.25, 0.50, 1.00, 0.50, 0.13, 0.88)</span></div><div class="gmail_extra"><span style="font-family:arial,sans-serif">(2) 5 * 0.9 utilization/core ==> (4, 5, 5, 5, 4, 5, 4, 5, 5, 5) tasks are schedulable among 5 tasks.</span><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_extra"><span style="font-family:arial,sans-serif">(3) 8 * 0.45 utilization/core ==> (4, 3, 7, 6, 4, 6, 4, 7, 6, 4) tasks are schedulable among 8 tasks.</span><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_extra"><span style="font-family:arial,sans-serif">(4) 5 * 0.45 utilization/core ==> (5, 2, 3, 4, 2, 3, 5, 4, 4, 3) tasks are schedulable among 5 tasks.</span><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_extra"><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_extra"><span style="font-family:arial,sans-serif"><br></span></div><div class="gmail_extra"><span style="font-family:arial,sans-serif">That is, in case of 1st run of (1), 4 tasks have correct (period, cost) and the other 4 tasks have (period=0, cost=0).</span><br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra"># Task,   Job,     Period,   Response, DL Miss?,   Lateness,  Tardiness</div><div class="gmail_extra"># task NAME=rt_launch PID=43217 COST=139000000 PERIOD=155000000 CPU=0</div><div class="gmail_extra"> 43217,     2,  155000000,  139123829,        0,  -15876171,          0</div><div class="gmail_extra"> 43217,     3,  155000000,  139120144,        0,  -15879856,          0</div><div class="gmail_extra"> 43217,     4,  155000000,  139121134,        0,  -15878866,          0</div><div class="gmail_extra"> 43217,     5,  155000000,  139113222,        0,  -15886778,          0</div><div class="gmail_extra">...</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra"># task NAME=<unknown> PID=43215 COST=0 PERIOD=0 CPU=-1</div><div class="gmail_extra"> 43215,     2,          0,  159116315,        0,  -17883685,          0</div><div class="gmail_extra"> 43215,     3,          0,  159133056,        0,  -17866944,          0</div><div class="gmail_extra"> 43215,     4,          0,  159121530,        0,  -17878470,          0</div><div class="gmail_extra"> 43215,     5,          0,  159130841,        0,  -17869159,          0</div><div class="gmail_extra"> 43215,     6,          0,  159142111,        0,  -17857889,          0</div></div><div class="gmail_extra"><br></div><div class="gmail_extra">Any hint/comments are welcome! I'll appreciate it!</div><div class="gmail_extra"><br></div><div class="gmail_extra">Thanks,</div><div class="gmail_extra">Mikyung</div><div class="gmail_extra"><br></div></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 6, 2014 at 1:29 AM, Björn Brandenburg <span dir="ltr"><<a href="mailto:bbb@mpi-sws.org" target="_blank">bbb@mpi-sws.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><span class=""><blockquote type="cite"><div>On 06 Nov 2014, at 03:41, Glenn Elliott <<a href="mailto:gelliott@cs.unc.edu" target="_blank">gelliott@cs.unc.edu</a>> wrote:</div><br><div><div style="word-wrap:break-word"><div><div><blockquote type="cite" style="font-family:Helvetica;font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><div><div dir="ltr"><div><div>(3) I want to repeat test-case 20 times and then average their schedulability. In either case (whether including period=0 jobs are included to scheduled job or not), I could see that inter-run variation happened a lot as follows. Is this expected or not? Can you get consistent traced records (consistent fraction of schedulable task sets) any time??</div><div> </div><div>1.00 1.00 1.00 1.00 1.00 .13 1.00 1.00 1.00 .13 .13 1.00 .25 .13 .13 .13 .13 1.00 .25 1.00 </div></div></div></div></blockquote></div></div></div></div></blockquote><div><br></div></span><div>Is this data for one task, or for the entire task set? What exactly are these numbers—deadline miss ratios?</div><span class=""><div><br></div><blockquote type="cite"><div><div style="word-wrap:break-word"><div><div><div style="font-family:Helvetica;font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">What is the task set utilization?  Which scheduler do you use?  Under partition scheduling, you can still over-utilize a single processor even if task set utilization is not much more than 1.0 when your task partitioning is too imbalanced.  That is, you can overload one partition while all others are idle. Also, LitmusRT, being based upon Linux, may not support hard real-time scheduling all that well when task set utilization is high.  You may observe deadline misses from time to time.  You may want to examine the maximum amount by which a deadline is missed (perhaps normalized by relative deadline or period), rather than whether a deadline was ever missed.  </div></div></div></div></div></blockquote></span></div><br><div>Also, if your system is NOT schedulable, under the implemented scheduling policies there is no guarantee (not just in LITMUS^RT, but in general) that the same task will always incur the same number of deadline misses. Which task incurs a deadline misses can depend on details such as the employed tie-breaking policy for tasks with equal deadlines, minuscule differences in arrival times, etc.</div><div><br></div><div>You might want to visualize these schedules and have a look—is there something “wrong” in the schedules with high deadline miss ratios, or is the task under analysis just “unlucky” in some schedules?</div><div><br></div><div>Can you post your scripts for setting up the experiments? If there is an issue, this might allow us to reproduce it.</div><div><br></div><div>Thanks,</div><div>Björn</div><div><br></div></div><br>_______________________________________________<br>
litmus-dev mailing list<br>
<a href="mailto:litmus-dev@lists.litmus-rt.org">litmus-dev@lists.litmus-rt.org</a><br>
<a href="https://lists.litmus-rt.org/listinfo/litmus-dev" target="_blank">https://lists.litmus-rt.org/listinfo/litmus-dev</a><br>
<br></blockquote></div><br></div></div>