lkml.org 
[lkml]   [2005]   [Apr]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: scheduler/SCHED_FIFO behaviour
Date
ok.My program runs for 30 sec. approx. I did
#!/bin/sh
cat /proc/interrupts
run_test
cat /proc/interrupts

and I see there is quite some difference in the numbers.....meaning
interrupts have been processed by the respective processor when my
SCHED_FIFO processes have been running on both the cpu's.

But, then I am not sure why I am getting only 1 reading for the timediff. of
schedule between my 2 processes.I do the following in my schedule() in
sched.c:
( I make the kernel know the pid's of my 2 process...lets say pid1 and pid2)

/* in function schedule() in sched.c*/
schedule()
{
need _resched:
/* after now=sched_clock(); I insert my code
here*/
if(current->pid=pid1)
{
time1=now;
}
elseif (current->pid=pid2)
{
time2=now;
}
/*after i get the 2 values for time1 and
time2*/
timediff= time1-time2; // or
time2 - time1 which ever is greater*/
printk(KERN_ERR "%llu",timediff);
}

So, what I want from the above code is whenever process1 or process2 is
being scheduled measure the time and print the timedifference. But, when I
run my 2 processes as SCHED_FIFO processes i get only one set of
readings....indicating they have been scheduled only once and run till
completion.

But, as we saw above if interrupts have been processed they must have been
scheduled several times(i.e., schedule() called several times). Is my
measurement procedure not correct?

please help.
thanks
arun


>From: Steven Rostedt <rostedt@goodmis.org>
>To: Arun Srinivas <getarunsri@hotmail.com>
>CC: juhl-lkml@dif.dk, LKML <linux-kernel@vger.kernel.org>
>Subject: Re: scheduler/SCHED_FIFO behaviour
>Date: Mon, 04 Apr 2005 19:17:04 -0400
>
>On Tue, 2005-04-05 at 04:36 +0530, Arun Srinivas wrote:
> > I am scheduling 2 SCHED_FIFO processes and set them affinity( process A
>runs
> > on processor 1 and process B runs on processor 2), on a HT processor.(I
>did
> > this cause I wanted to run them together).Now, in schedule() I measure
>the
> > timedifference between when they are scheduled. I found that when I
> > introduce these 2 processes as SCHED_FIFO they are
> >
> > 1)scheduled only once and run till completion ( they running time is
>around
> > 2 mins.)
>
>If they are the highest priority task, and running as FIFO this is the
>proper behavior.
>
> > 2)entire system appears frozen....no mouse/key presses detected until
>the
> > processes exit.
> >
>
>If X is not at a higher priority than the test you are running, it will
>never get a chance to run.
>
> > >From what I observed does it mean that even the OS / interrupt handler
>does
> > not occur during the entire period of time these real time processes
>run??
> > (as I said the processes run in minutes).
>
>The interrupts do get processed. Now the bottom halves and tasklets may
>be starved if they are set at a lower priority than your test (ie. the
>ksoftirqd thread). But most likely they are processed too.
>
> > How can I verify that?
> >
>
>#!/bin/sh
>cat /proc/interrupts
>run_test
>cat /proc/interrupts
>
>If the run_test takes 2 minutes, you should see a large difference in
>the two outputs.
>
>-- Steve
>
> > Thanks
> > Arun
>
>

_________________________________________________________________
The MSN Survey!
http://www.cross-tab.com/surveys/run/test.asp?sid=2026&respid=1 Help us help
you better!

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-04-06 13:31    [W:1.262 / U:0.024 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site