difference between io_schedule() and schedule()

5 messages, 3 authors, 2011-08-10 · open the first message on its own page

difference between io_schedule() and schedule()

From: Rajat Sharma <hidden>
Date: 2011-08-06 07:01:21

Hi All,

What is the difference between io_schedule() and schedule(), is
io_schedule() more restrictive to shedule only I/O bound processes or
it just favours I/O bound processes. Any documentation link would be
great help.

Thanks,
Rajat

difference between io_schedule() and schedule()

From: j.neuschaefer@gmx.net (Jonathan Neuschäfer)
Date: 2011-08-08 14:55:35

On Sat, Aug 06, 2011 at 12:31:21PM +0530, Rajat Sharma wrote:
Hi All,

What is the difference between io_schedule() and schedule(), is
io_schedule() more restrictive to shedule only I/O bound processes or
it just favours I/O bound processes. Any documentation link would be
great help.
Have you even looked at the source code?
From kernel/sched.c +5721:
/*
 * This task is about to go to sleep on IO. Increment rq->nr_iowait so
 * that process accounting knows that this is a task in IO wait state.
 */
void __sched io_schedule(void)
{
	struct rq *rq = raw_rq();

	delayacct_blkio_start();
	atomic_inc(&rq->nr_iowait);
	blk_flush_plug(current);
	current->in_iowait = 1;
	schedule();
	current->in_iowait = 0;
	atomic_dec(&rq->nr_iowait);
	delayacct_blkio_end();
}
EXPORT_SYMBOL(io_schedule);

HTH,
	Jonathan Neusch?fer

difference between io_schedule() and schedule()

From: Rajat Sharma <hidden>
Date: 2011-08-09 13:30:46

On Mon, Aug 8, 2011 at 8:25 PM, Jonathan Neusch?fer
[off-list ref] wrote:
On Sat, Aug 06, 2011 at 12:31:21PM +0530, Rajat Sharma wrote:
quoted
Hi All,

What is the difference between io_schedule() and schedule(), is
io_schedule() more restrictive to shedule only I/O bound processes or
it just favours I/O bound processes. Any documentation link would be
great help.
Have you even looked at the source code?

From kernel/sched.c +5721:
/*
?* This task is about to go to sleep on IO. Increment rq->nr_iowait so
?* that process accounting knows that this is a task in IO wait state.
?*/
void __sched io_schedule(void)
{
? ? ? ?struct rq *rq = raw_rq();

? ? ? ?delayacct_blkio_start();
? ? ? ?atomic_inc(&rq->nr_iowait);
? ? ? ?blk_flush_plug(current);
? ? ? ?current->in_iowait = 1;
? ? ? ?schedule();
? ? ? ?current->in_iowait = 0;
? ? ? ?atomic_dec(&rq->nr_iowait);
? ? ? ?delayacct_blkio_end();
}
EXPORT_SYMBOL(io_schedule);

HTH,
? ? ? ?Jonathan Neusch?fer
of course I looked at the source (obvious first step) before asking
question and further following tsk->in_iowait, it seems it is just
needed for accounting purpose.

                        if (tsk->in_iowait) {
                                se->statistics.iowait_sum += delta;
                                se->statistics.iowait_count++;
                                trace_sched_stat_iowait(tsk, delta);
                        }

Wanted to be sure of "is that it all about"? or I am missing something here?

-Rajat

difference between io_schedule() and schedule()

From: Mulyadi Santosa <hidden>
Date: 2011-08-10 07:37:26

Hi Rajat...

On Tue, Aug 9, 2011 at 09:30, Rajat Sharma [off-list ref] wrote:
of course I looked at the source (obvious first step) before asking
question and further following tsk->in_iowait, it seems it is just
needed for accounting purpose.

? ? ? ? ? ? ? ? ? ? ? ?if (tsk->in_iowait) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?se->statistics.iowait_sum += delta;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?se->statistics.iowait_count++;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?trace_sched_stat_iowait(tsk, delta);
? ? ? ? ? ? ? ? ? ? ? ?}

Wanted to be sure of "is that it all about"? or I am missing something here?
I got a feeling that the main show is:
       blk_flush_plug(current);
that name somehow indicates it is "forcing" read/write to happen,
either real soon or at the earliest moment possible...


-- 
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com

difference between io_schedule() and schedule()

From: Rajat Sharma <hidden>
Date: 2011-08-10 08:55:45

On Wed, Aug 10, 2011 at 1:07 PM, Mulyadi Santosa
[off-list ref] wrote:
Hi Rajat...

On Tue, Aug 9, 2011 at 09:30, Rajat Sharma [off-list ref] wrote:
quoted
of course I looked at the source (obvious first step) before asking
question and further following tsk->in_iowait, it seems it is just
needed for accounting purpose.

? ? ? ? ? ? ? ? ? ? ? ?if (tsk->in_iowait) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?se->statistics.iowait_sum += delta;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?se->statistics.iowait_count++;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?trace_sched_stat_iowait(tsk, delta);
? ? ? ? ? ? ? ? ? ? ? ?}

Wanted to be sure of "is that it all about"? or I am missing something here?
I got a feeling that the main show is:
? ? ? blk_flush_plug(current);
that name somehow indicates it is "forcing" read/write to happen,
either real soon or at the earliest moment possible...


--
regards,

Mulyadi Santosa
Freelance Linux trainer and consultant

blog: the-hydra.blogspot.com
training: mulyaditraining.blogspot.com
Ah, just missed that, thats actually countable difference. Thanks for
the pointer :)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help