[LITMUS^RT] Adding Job Deadlines to Control Pages

Geoffrey Tran gtran at isi.edu
Thu Dec 10 01:54:36 CET 2015


Hello again all,

I’ve tried again with checkouts from the repository and still get the problem with 0 interrupts. 

LITMUS-RT:a17f532bb1056742dc0ebbb6182bda063836316d
liblitmus: 7efbfc0d311523468c3b4665cc31d654c4c58a75

Is there some configuration in the kernel build options that needs to be set?  I’m not sure what the problem could be. 

Thanks in advance,
Geoffrey

> On Dec 9, 2015, at 3:40 PM, Geoffrey Tran <gtran at isi.edu> wrote:
> 
> Hi Björn,
> 
> I pulled the new rtspin and it has the same issue:
> root at ubuntu:~/liblitmus# ./rtspin -iv 1 100 1 
> rtspin/7375:1 @ 0.0229ms
> 	total interrupts: 0; delta: 0
> rtspin/7375:2 @ 100.0650ms
> 	total interrupts: 0; delta: 0
> rtspin/7375:3 @ 200.1190ms
> 	total interrupts: 0; delta: 0
> rtspin/7375:4 @ 300.1220ms
> 	total interrupts: 0; delta: 0
> rtspin/7375:5 @ 400.0690ms
> 	total interrupts: 0; delta: 0
> rtspin/7375:6 @ 500.2010ms
> 	total interrupts: 0; delta: 0
> rtspin/7375:7 @ 600.0860ms
> 	total interrupts: 0; delta: 0
> rtspin/7375:8 @ 700.1200ms
> 	total interrupts: 0; delta: 0
> rtspin/7375:9 @ 800.0870ms
> 	total interrupts: 0; delta: 0
> rtspin/7375:10 @ 900.0969ms
> 	total interrupts: 0; delta: 0
> rtspin/7375:11 @ 1000.1760ms
> 	total interrupts: 0; delta: 0
> 
> Later today, I’ll try reverting my LITMUS install to the current head and see if that fixes it. Will report back here.
> 
> Thanks,
> Geoffrey
> 
>> On Dec 9, 2015, at 8:15 AM, Björn Brandenburg <bbb at mpi-sws.org> wrote:
>> 
>> 
>>> On 08 Dec 2015, at 19:58, Geoffrey Tran <gtran at isi.edu> wrote:
>>> 
>>> I have been trying to add job deadlines to the control page, per the discussion at https://github.com/LITMUS-RT/liblitmus/pull/1.  However, I seem to be running into a few issues.
>>> 
>>> To summarize my changes: 
>>> - Added lt_t deadline field to control_page struct in rt_param.h
>>> - In setup_release() in jobs.c, check for if task t has control page, then write to the field.
>>> 
>>> In my user space code, I try testing the following:
>>> struct control_page* testCtrlPage = get_ctrl_page();
>>> if(testCtrlPage!=NULL)
>>> {
>>>       printf("IRQ: %lu\tdeadline: %llu\tirq_syscall:%lu\n",
>>>       	testCtrlPage->irq_count, 
>>>       	testCtrlPage->deadline,
>>>       	testCtrlPage->ts_syscall_start);
>>> }
>>> 
>>> The code compiles and executes, but the output for all three fields are always 0:
>>> “…
>>> IRQ: 0  deadline: 0     irq_syscall:0
>>> IRQ: 0  deadline: 0     irq_syscall:0
>>> …"
>>> 
>>> I’m not very familiar with this, so there might be something obvious that’s missing.  Any feedback is welcome!
>> 
>> Hi Geoffrey,
>> 
>> I can’t spot anything that looks obviously wrong. However, not seeing *any* interrupts in the control paper is rather unlikely; this seems broken.
>> 
>> I’ve pushed a patch to liblitmus that adds an option to rtspin to make it print interrupt information.
>> 
>> 	https://github.com/LITMUS-RT/liblitmus/commit/7efbfc0d311523468c3b4665cc31d654c4c58a75
>> 
>> Running on top of the current master branch, rtspin reports interrupts as expected:
>> 
>>> [root at litmus-rt ~]# setsched GSN-EDF        
>>> [root at litmus-rt ~]# rtspin -v -i   20 100 1 
>>> rtspin/1611:1 @ 0.1450ms                    
>>>       total interrupts: 0; delta: 0       
>>> rtspin/1611:2 @ 100.3330ms                  
>>>       total interrupts: 38; delta: 38     
>>> rtspin/1611:3 @ 200.3431ms                  
>>>       total interrupts: 78; delta: 40     
>>> rtspin/1611:4 @ 300.4119ms                  
>>>       total interrupts: 118; delta: 40    
>>> rtspin/1611:5 @ 400.3479ms                  
>>>       total interrupts: 160; delta: 42    
>>> rtspin/1611:6 @ 500.3340ms                  
>>>       total interrupts: 200; delta: 40    
>>> rtspin/1611:7 @ 600.4560ms                  
>>>       total interrupts: 238; delta: 38    
>>> rtspin/1611:8 @ 700.3901ms                  
>>>       total interrupts: 278; delta: 40    
>>> rtspin/1611:9 @ 800.3840ms                  
>>>       total interrupts: 318; delta: 40    
>>> rtspin/1611:10 @ 900.4440ms                 
>>>       total interrupts: 358; delta: 40    
>>> rtspin/1611:11 @ 1000.4129ms                
>>>       total interrupts: 398; delta: 40    
>> 
>> 
>> So I think the control page is working correctly. Looking at your printf statement, is it possible that you are using the wrong bit widths?
>> 
>> - Björn
>> 
>> 
>> 
>> _______________________________________________
>> litmus-dev mailing list
>> litmus-dev at lists.litmus-rt.org
>> https://lists.litmus-rt.org/listinfo/litmus-dev
> 
> 
> _______________________________________________
> litmus-dev mailing list
> litmus-dev at lists.litmus-rt.org
> https://lists.litmus-rt.org/listinfo/litmus-dev





More information about the litmus-dev mailing list