From mboxrd@z Thu Jan 1 00:00:00 1970 From: varyani.nitin1@gmail.com (Nitin Varyani) Date: Sat, 13 Feb 2016 15:12:35 +0530 Subject: Process scheduling In-Reply-To: <20160213084904.GB21526@icarus.home.austad.us> References: <20160213084904.GB21526@icarus.home.austad.us> Message-ID: To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org thanks On Sat, Feb 13, 2016 at 2:19 PM, Henrik Austad wrote: > On Sat, Feb 13, 2016 at 11:42:57AM +0530, Nitin Varyani wrote: > > Hello, > > Hi Nitin, > > > I want to understand the flow of code of process scheduler of > > linux kernel. What I have understood is that > > The task marks itself as sleeping, > > puts itself on a wait queue, > > removes itself from the red-black tree of runnable, and > > calls schedule() to select a new process to execute. > > > > for Waking back up > > The task is set as runnable, > > removed from the wait queue, > > and added back to the red-black tree. > > > > Can I get the details of which function does what? in sched/core.c and in > > sched/fair.c > > I am concerned only with fair scheduler. There are so many functions in > > these two files that I am totally confused. > > Then core.c and fair.c is the best bet. > > You could also pick up a copy of Linux kernel development (By Love), it > gives a nice introduction to the overall flow of .. well mostly everything. > :) > > In kernel/sched/sched.h you have a struct called 'struct sched_class" which > is a set of function-points. This is used by the core machinery to call > into scheduling-class specific code. At the bottom of fair.c, you see said > struct being populated. > > Also, if you want to see what really happens, try enabling > function-tracing, but limit it to sched-functions only (and sched-events, > those are also useful to see what triggers things) > > mount -t debugfs nodev /sys/kernel/debug > cd /sys/kernel/debug/tracing > echo 0 > tracing_on > echo function > current_tracer > echo "sched*" > set_ftrace_filter > echo 1 > events/sched/enable > echo 1 > tracing_on > ... wait for a few secs > echo 0 > tracing_on > > cat trace > /tmp/trace.txt > > Now, look at trace.txt and correlate it to the scheduler code :) > > Good luck! > > -- > Henrik Austad > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20160213/93eb460d/attachment.html