[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] RT-Xen on ARM
On Mon, Aug 21, 2017 at 4:38 AM, Andrii Anisov <andrii_anisov@xxxxxxxx> wrote: > > On 18.08.17 23:43, Meng Xu wrote: >> >> Sure. The workload we used in the paper is mainly the cpu-intensive task. >> We first calibrate a busy-loop of multiplications that runs for 1ms. >> Then for a task that executes for exe(ms), we simply let the task >> execute the 1ms busy loop for exe times. > > I'm a bit confused, why didn't you ran the system with rtspin from > LITMUS-RT, any issues with it? The task we are using should do same amount of calculation for the same amount of time. For example, suppose it takes 1ms to run the following piece of code: for( i = 0; i < 1 million; i++) sum += i; This piece of code can be viewed as the "payload" of a realistic workload. Suppose the task is scheduled to run at t0, preempted at t1, resumes at t2, and finishes at t3. We have (t1 - t0) + (t3 - t2) = 1ms and we are sure the task did the addition for 1million times. However, if we use the rtspin, the rtspin will check if (t2-t0) > 1ms. If so, it will claim it finishes its workload although it hasn't finished its workload, i.e., doing addition for 1million times. Since we want to compare if tasks can finish their "workload" by their deadline under different scheduling algorithms, we should fix the "amount of workload" a task does under different scheduling policies. rtspin() does not achieve our purpose. That's why we don't use it. Note that rtspin() is initially designed to test the scheduling overload of LITMUS. It does not perform the same amount of workload for the same assigned wcet. > BTW, I've found set experimental patches (scripts and functional changes) on > your github: https://github.com/PennPanda/liblitmus . > Are they related to the mentioned document [1]? Not really. The liblitmus repo under my repo. is for another project. It is not for [1]'s purpose. The idea of creating the real-time task is similar, though. The real-time task is based on the bin/base_task.c in liblitmus. It needs to fill out the job() function as follows: static int job(int wcet) { for (i = 0; i < wcet; i++) loop_for_one_1ms() } loop_for_one_1ms() { /* iterations value differs across machines */ for (j = 0; j < iterations; j++ ) result = result + j * j; } > >> [1] https://www.cis.upenn.edu/~linhphan/papers/emsoft14-rt-xen.pdf > > > -- Hope it helps clear the confusion. Thanks, Meng -- ----------- Meng Xu PhD Candidate in Computer and Information Science University of Pennsylvania http://www.cis.upenn.edu/~mengxu/ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |