<div dir="ltr"><font color="#000000">Hi,</font><div><font color="#000000"><br></font></div><div><font color="#000000">I am doing some experiment with rt-xen and litmus-rt. What I am trying to do is to see the <span style="font-size:12.8px">schedubility of real time tasks of 1vm while the other vm is fully utilized. Both guest VMs use litmus-rt.</span></font></div><div><span style="font-size:12.8px"><font color="#000000"><br></font></span></div><div><span style="font-size:12.8px"><font color="#000000">The setup is the following:</font></span></div><div><span style="font-size:12.8px"><font color="#000000"><br></font></span></div><div><div><span style="font-size:12.8px"><font color="#000000">Using Xen 4.5.0. </font></span></div><div><span style="font-size:12.8px"><font color="#000000">1.  2vm sharing core 0-7 ( both vm can access core0-7) , with RTDS scheduler, both has period of 4000us and budget of 2000(us) </font></span></div><div><span style="font-size:12.8px"><font color="#000000">2.  Dom0 using one core from CPU 8-15, with RTDS scheduler, period of 10000us and budget of 10000us</font></span></div><div><font color="#000000"><span style="font-size:12.8px">3.  both guest vm have ubuntu 12.04 and are using "</span><span class="" style="font-size:12.8px">litmus</span><span style="font-size:12.8px">-</span><span class="" style="font-size:12.8px">rt</span><span style="font-size:12.8px">-2014.2.patch" and with Geoffrey's patch for IPI interrupt (</span><a href="https://github.com/LITMUS-RT/liblitmus/pull/1/files" target="_blank" style="font-size:12.8px">https://github.com/<span class="">LITMUS</span>-<span class="">RT</span>/liblitmus/pull/1/files</a><span style="font-size:12.8px">)</span></font></div></div><div><span style="font-size:12.8px"><font color="#000000"><br></font></span></div><div><span style="font-size:12.8px"><font color="#000000">the taskset is generated as followed:</font></span></div><div><span style="font-size:12.8px"><font color="#000000"><br></font></span></div><div><font color="#000000"><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">a taskset is composed of </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">a collection of real-time tasks, and each real-time task is a sequence of jobs that are released periodically... All jobs are periodic, where each job </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">T</span><span style="font-family:arial,helvetica,sans-serif;font-size:7pt;vertical-align:-1pt">i </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">is defined by a period (and deadline) </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">p</span><span style="font-family:arial,helvetica,sans-serif;font-size:7pt;vertical-align:-1pt">i </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">and a worse-case execution time </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">e</span><span style="font-family:arial,helvetica,sans-serif;font-size:7pt;vertical-align:-1pt">i</span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">, with </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">p</span><span style="font-family:arial,helvetica,sans-serif;font-size:7pt;vertical-align:-1pt">i </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">≥ </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">e</span><span style="font-family:arial,helvetica,sans-serif;font-size:7pt;vertical-align:-1pt">i </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">≥ </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">0 </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">and </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">p</span><span style="font-family:arial,helvetica,sans-serif;font-size:7pt;vertical-align:-1pt">i</span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">, e</span><span style="font-family:arial,helvetica,sans-serif;font-size:7pt;vertical-align:-1pt">i </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">∈ </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">integers. Each job is </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">comprised of a number of iterations of floating point operations during each job. This is based on the base task.c provided with the <span class="">LITMUS</span></span><span style="font-family:arial,helvetica,sans-serif;font-size:7pt;vertical-align:4pt"><span class="">RT</span> </span><span style="font-family:arial,helvetica,sans-serif;font-size:10pt">userspace library.</span><span style="font-size:12.8px"><br></span></font></div><div><span style="font-family:arial,helvetica,sans-serif;font-size:10pt"><font color="#000000"><br></font></span></div><div><font face="arial, helvetica, sans-serif" color="#000000"><span style="font-size:13.3333px">The period for a task is from uniform distribution (10ms,100ms)</span></font></div><div><font face="arial, helvetica, sans-serif" color="#000000"><span style="font-size:13.3333px">and the utilization rate of a task is also from a uniform distribution (0.1,0.4)</span></font></div><div><span style="font-family:arial,helvetica,sans-serif;font-size:10pt"><font color="#000000"><br></font></span></div><div><font face="arial, helvetica, sans-serif" color="#000000"><span style="font-size:13.3333px">In my experiment:</span></font></div><div><div><font color="#000000"><br></font></div><div><font color="#000000">Step0: disable networking and other unused services.</font></div><div><font color="#000000">Step1: I loaded VM#2 with constant running task with total utilization of 4 cores.</font></div><div><font color="#000000">Step2: In VM#1 I many run iterations of tasksets from total utilization rate 0.2 cores all the way to 4.6 and record their schedulbility using st_trace. </font></div></div><div><font color="#000000"><br></font></div><div><font color="#000000">In my results, I do see that schedulbility do drop to zeros at either total util rate of 4.2 or 4.4. (we use worst-case execution time for benchmarking the base amount of computation that is why it takes more than total util rate of 4 for schedubility to drop to 0)</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">What puzzle me is why are there two groups of results as shown in the attached graph?(one group that has schedubility of 0 at total util rate of 4.2 and another group that has schedubility of 0 at total util rate of 4.4)  ( I used " * " in the legend to indicate the groups)</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">Shouldn't each run should be somewhat close to each other or showing randomness instead of seeing the two groups of performance curves?</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">I wonder if my base computation is wrong but that still does not explain why they are two types of performance curves. </font></div><div><font color="#000000"><br></font></div><div><font color="#000000">Any advice or suggestion on how I can go about this will be helpful!</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">Thank you!</font></div><div><font color="#000000"><br></font></div><div><font color="#000000">Victor</font></div><div><span style="font-size:12.8px"><font color="#000000"><br></font></span></div><div><span style="font-size:12.8px"><font color="#000000"><br></font></span></div><div><br></div></div>