* CLONE_IO documentation
@ 2008-04-14 12:40 Michael Kerrisk
2008-04-14 17:13 ` Jens Axboe
0 siblings, 1 reply; 5+ messages in thread
From: Michael Kerrisk @ 2008-04-14 12:40 UTC (permalink / raw)
To: jens.axboe; +Cc: Andrew Morton, Linux Kernel Mailing List
Hi Jens,
Could you supply some text describing CLONE_IO suitable for inclusion
in the clone.2 man page?
( http://www.kernel.org/doc/man-pages/online/pages/man2/clone.2.html
). In that text it would be helpful to explain what an "I/O context"
is.
Cheers,
Michael
--
Michael Kerrisk
Maintainer of the Linux man-pages project
http://www.kernel.org/doc/man-pages/
Want to report a man-pages bug? Look here:
http://www.kernel.org/doc/man-pages/reporting_bugs.html
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: CLONE_IO documentation
2008-04-14 12:40 CLONE_IO documentation Michael Kerrisk
@ 2008-04-14 17:13 ` Jens Axboe
2008-11-19 22:30 ` Michael Kerrisk
0 siblings, 1 reply; 5+ messages in thread
From: Jens Axboe @ 2008-04-14 17:13 UTC (permalink / raw)
To: Michael Kerrisk; +Cc: Andrew Morton, Linux Kernel Mailing List
On Mon, Apr 14 2008, Michael Kerrisk wrote:
> Hi Jens,
>
> Could you supply some text describing CLONE_IO suitable for inclusion
> in the clone.2 man page?
> ( http://www.kernel.org/doc/man-pages/online/pages/man2/clone.2.html
> ). In that text it would be helpful to explain what an "I/O context"
> is.
Sure, I'll see if I can come up with something. Or perhaps you can help
me a bit, being the writer ;-)
If the CLONE_IO flag is set, the process will share the same io context.
The I/O context is the I/O scope of the disk scheduler. So if you think
of the I/O context as what the I/O scheduler uses to map to a process,
when CLONE_IO is set multiple processes will map to the same I/O context
and will be treated as one by the I/O scheduler. What this means is that
they get to share disk time. For the anticipatory and CFQ scheduler, if
process A and process B share I/O context, they will be allowed to
interleave their disk access. So if you have several threads doing I/O
on behalf of the same process (aio_read(), for instance), they should
set CLONE_IO to get better I/O performance with CFQ and AS.
A man page should not mention the specific schedulers, just mention that
it'll improve the information available to the kernel and the
performance of the app for the scenario described. In practice, it'll
only really apply to CFQ and AS. For deadline and noop, they'll be
essentially zero difference as they have no concept of I/O contexts.
--
Jens Axboe
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: CLONE_IO documentation
2008-04-14 17:13 ` Jens Axboe
@ 2008-11-19 22:30 ` Michael Kerrisk
2008-11-20 7:48 ` Jens Axboe
0 siblings, 1 reply; 5+ messages in thread
From: Michael Kerrisk @ 2008-11-19 22:30 UTC (permalink / raw)
To: Jens Axboe; +Cc: Andrew Morton, Linux Kernel Mailing List, linux-man
Hi Jens,
Following up after a long time on this:
On Mon, Apr 14, 2008 at 12:13 PM, Jens Axboe <jens.axboe@oracle.com> wrote:
> On Mon, Apr 14 2008, Michael Kerrisk wrote:
>> Hi Jens,
>>
>> Could you supply some text describing CLONE_IO suitable for inclusion
>> in the clone.2 man page?
>> ( http://www.kernel.org/doc/man-pages/online/pages/man2/clone.2.html
>> ). In that text it would be helpful to explain what an "I/O context"
>> is.
>
> Sure, I'll see if I can come up with something. Or perhaps you can help
> me a bit, being the writer ;-)
>
> If the CLONE_IO flag is set, the process will share the same io context.
> The I/O context is the I/O scope of the disk scheduler. So if you think
> of the I/O context as what the I/O scheduler uses to map to a process,
> when CLONE_IO is set multiple processes will map to the same I/O context
> and will be treated as one by the I/O scheduler. What this means is that
> they get to share disk time. For the anticipatory and CFQ scheduler, if
> process A and process B share I/O context, they will be allowed to
> interleave their disk access. So if you have several threads doing I/O
> on behalf of the same process (aio_read(), for instance), they should
> set CLONE_IO to get better I/O performance with CFQ and AS.
>
> A man page should not mention the specific schedulers, just mention that
> it'll improve the information available to the kernel and the
> performance of the app for the scenario described. In practice, it'll
> only really apply to CFQ and AS. For deadline and noop, they'll be
> essentially zero difference as they have no concept of I/O contexts.
I took your text as a base but did some reworking, so *please check
the following carefully*, and let me know if there are things to
change and/or add:
CLONE_IO (since Linux 2.4.25)
If CLONE_IO is set, then the new process shares an I/O
context with the calling process. If this flag is not
set, then (as with fork(2)) the new process has its own
I/O context.
The I/O context is the I/O scope of the disk scheduler
(i.e, what the I/O scheduler uses to model scheduling of
a process's I/O). If processes share the same I/O con-
text, they are treated as one by the I/O scheduler. As
a consequence, they get to share disk time. For some
I/O schedulers, if two processes share an I/O context,
they will be allowed to interleave their disk access.
If several threads are doing I/O on behalf of the same
process (aio_read(3), for instance), they should employ
CLONE_IO to get better I/O performance.
If the kernel is not configured with the CONFIG_BLOCK
option, this flag is a no-op.
The patch against clone.2 is below.
Thanks,
Michael
--- a/man2/clone.2
+++ b/man2/clone.2
@@ -224,6 +223,36 @@ Calls to
.BR umask (2)
performed later by one of the processes do not affect the other process.
.TP
+.BR CLONE_IO " (since Linux 2.4.25)"
+If
+.B CLONE_IO
+is set, then the new process shares an I/O context with
+the calling process.
+If this flag is not set, then (as with
+.BR fork (2))
+the new process has its own I/O context.
+
+.\" The following based on text from Jens Axboe
+The I/O context is the I/O scope of the disk scheduler (i.e,
+what the I/O scheduler uses to model scheduling of a process's I/O).
+If processes share the same I/O context,
+they are treated as one by the I/O scheduler.
+As a consequence, they get to share disk time.
+For some I/O schedulers,
+.\" the anticipatory and CFQ scheduler
+if two processes share an I/O context,
+they will be allowed to interleave their disk access.
+If several threads are doing I/O on behalf of the same process
+.RB ( aio_read (3),
+for instance), they should employ
+.BR CLONE_IO
+to get better I/O performance.
+.\" with CFQ and AS.
+
+If the kernel is not configured with the
+.B CONFIG_BLOCK
+option, this flag is a no-op.
+.TP
.BR CLONE_NEWIPC " (since Linux 2.4.19)"
If
.B CLONE_NEWIPC
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: CLONE_IO documentation
2008-11-19 22:30 ` Michael Kerrisk
@ 2008-11-20 7:48 ` Jens Axboe
2008-11-20 11:52 ` Michael Kerrisk
0 siblings, 1 reply; 5+ messages in thread
From: Jens Axboe @ 2008-11-20 7:48 UTC (permalink / raw)
To: mtk.manpages; +Cc: Andrew Morton, Linux Kernel Mailing List, linux-man
On Wed, Nov 19 2008, Michael Kerrisk wrote:
> Hi Jens,
>
> Following up after a long time on this:
>
> On Mon, Apr 14, 2008 at 12:13 PM, Jens Axboe <jens.axboe@oracle.com> wrote:
> > On Mon, Apr 14 2008, Michael Kerrisk wrote:
> >> Hi Jens,
> >>
> >> Could you supply some text describing CLONE_IO suitable for inclusion
> >> in the clone.2 man page?
> >> ( http://www.kernel.org/doc/man-pages/online/pages/man2/clone.2.html
> >> ). In that text it would be helpful to explain what an "I/O context"
> >> is.
> >
> > Sure, I'll see if I can come up with something. Or perhaps you can help
> > me a bit, being the writer ;-)
> >
> > If the CLONE_IO flag is set, the process will share the same io context.
> > The I/O context is the I/O scope of the disk scheduler. So if you think
> > of the I/O context as what the I/O scheduler uses to map to a process,
> > when CLONE_IO is set multiple processes will map to the same I/O context
> > and will be treated as one by the I/O scheduler. What this means is that
> > they get to share disk time. For the anticipatory and CFQ scheduler, if
> > process A and process B share I/O context, they will be allowed to
> > interleave their disk access. So if you have several threads doing I/O
> > on behalf of the same process (aio_read(), for instance), they should
> > set CLONE_IO to get better I/O performance with CFQ and AS.
> >
> > A man page should not mention the specific schedulers, just mention that
> > it'll improve the information available to the kernel and the
> > performance of the app for the scenario described. In practice, it'll
> > only really apply to CFQ and AS. For deadline and noop, they'll be
> > essentially zero difference as they have no concept of I/O contexts.
>
> I took your text as a base but did some reworking, so *please check
> the following carefully*, and let me know if there are things to
> change and/or add:
>
> CLONE_IO (since Linux 2.4.25)
> If CLONE_IO is set, then the new process shares an I/O
> context with the calling process. If this flag is not
> set, then (as with fork(2)) the new process has its own
> I/O context.
>
> The I/O context is the I/O scope of the disk scheduler
> (i.e, what the I/O scheduler uses to model scheduling of
> a process's I/O). If processes share the same I/O con-
> text, they are treated as one by the I/O scheduler. As
> a consequence, they get to share disk time. For some
> I/O schedulers, if two processes share an I/O context,
> they will be allowed to interleave their disk access.
> If several threads are doing I/O on behalf of the same
> process (aio_read(3), for instance), they should employ
> CLONE_IO to get better I/O performance.
>
> If the kernel is not configured with the CONFIG_BLOCK
> option, this flag is a no-op.
>
> The patch against clone.2 is below.
That looks good, but you typoed the kernel version - it should read
'since 2.6.25' :-)
--
Jens Axboe
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: CLONE_IO documentation
2008-11-20 7:48 ` Jens Axboe
@ 2008-11-20 11:52 ` Michael Kerrisk
0 siblings, 0 replies; 5+ messages in thread
From: Michael Kerrisk @ 2008-11-20 11:52 UTC (permalink / raw)
To: Jens Axboe; +Cc: Andrew Morton, Linux Kernel Mailing List, linux-man
On Thu, Nov 20, 2008 at 2:48 AM, Jens Axboe <jens.axboe@oracle.com> wrote:
> On Wed, Nov 19 2008, Michael Kerrisk wrote:
>> Hi Jens,
>>
>> Following up after a long time on this:
>>
>> On Mon, Apr 14, 2008 at 12:13 PM, Jens Axboe <jens.axboe@oracle.com> wrote:
>> > On Mon, Apr 14 2008, Michael Kerrisk wrote:
>> >> Hi Jens,
>> >>
>> >> Could you supply some text describing CLONE_IO suitable for inclusion
>> >> in the clone.2 man page?
>> >> ( http://www.kernel.org/doc/man-pages/online/pages/man2/clone.2.html
>> >> ). In that text it would be helpful to explain what an "I/O context"
>> >> is.
>> >
>> > Sure, I'll see if I can come up with something. Or perhaps you can help
>> > me a bit, being the writer ;-)
>> >
>> > If the CLONE_IO flag is set, the process will share the same io context.
>> > The I/O context is the I/O scope of the disk scheduler. So if you think
>> > of the I/O context as what the I/O scheduler uses to map to a process,
>> > when CLONE_IO is set multiple processes will map to the same I/O context
>> > and will be treated as one by the I/O scheduler. What this means is that
>> > they get to share disk time. For the anticipatory and CFQ scheduler, if
>> > process A and process B share I/O context, they will be allowed to
>> > interleave their disk access. So if you have several threads doing I/O
>> > on behalf of the same process (aio_read(), for instance), they should
>> > set CLONE_IO to get better I/O performance with CFQ and AS.
>> >
>> > A man page should not mention the specific schedulers, just mention that
>> > it'll improve the information available to the kernel and the
>> > performance of the app for the scenario described. In practice, it'll
>> > only really apply to CFQ and AS. For deadline and noop, they'll be
>> > essentially zero difference as they have no concept of I/O contexts.
>>
>> I took your text as a base but did some reworking, so *please check
>> the following carefully*, and let me know if there are things to
>> change and/or add:
>>
>> CLONE_IO (since Linux 2.4.25)
>> If CLONE_IO is set, then the new process shares an I/O
>> context with the calling process. If this flag is not
>> set, then (as with fork(2)) the new process has its own
>> I/O context.
>>
>> The I/O context is the I/O scope of the disk scheduler
>> (i.e, what the I/O scheduler uses to model scheduling of
>> a process's I/O). If processes share the same I/O con-
>> text, they are treated as one by the I/O scheduler. As
>> a consequence, they get to share disk time. For some
>> I/O schedulers, if two processes share an I/O context,
>> they will be allowed to interleave their disk access.
>> If several threads are doing I/O on behalf of the same
>> process (aio_read(3), for instance), they should employ
>> CLONE_IO to get better I/O performance.
>>
>> If the kernel is not configured with the CONFIG_BLOCK
>> option, this flag is a no-op.
>>
>> The patch against clone.2 is below.
>
> That looks good,
Okay -- thanks.
> but you typoed the kernel version - it should read
> 'since 2.6.25' :-)
Will fix; thanks.
Cheers,
Michael
--
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git
man-pages online: http://www.kernel.org/doc/man-pages/online_pages.html
Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-11-20 11:52 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-14 12:40 CLONE_IO documentation Michael Kerrisk
2008-04-14 17:13 ` Jens Axboe
2008-11-19 22:30 ` Michael Kerrisk
2008-11-20 7:48 ` Jens Axboe
2008-11-20 11:52 ` Michael Kerrisk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox