Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1383213 > unrolled thread
| Started by | Paolo <paolo.valente@linaro.org> |
|---|---|
| First post | 2016-04-20 11:40 +0200 |
| Last post | 2016-04-25 22:40 +0200 |
| Articles | 9 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support Paolo <paolo.valente@linaro.org> - 2016-04-20 11:40 +0200
Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support Tejun Heo <tj@kernel.org> - 2016-04-22 20:20 +0200
Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support Paolo Valente <paolo.valente@linaro.org> - 2016-04-22 20:30 +0200
Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support Tejun Heo <tj@kernel.org> - 2016-04-22 20:50 +0200
Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support Paolo Valente <paolo.valente@linaro.org> - 2016-04-22 21:10 +0200
Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support Tejun Heo <tj@kernel.org> - 2016-04-22 21:40 +0200
Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support Paolo Valente <paolo.valente@linaro.org> - 2016-04-23 09:10 +0200
Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support Tejun Heo <tj@kernel.org> - 2016-04-25 21:30 +0200
Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support Paolo <paolo.valente@linaro.org> - 2016-04-25 22:40 +0200
| From | Paolo <paolo.valente@linaro.org> |
|---|---|
| Date | 2016-04-20 11:40 +0200 |
| Subject | Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support |
| Message-ID | <rpWM3-5HI-33@gated-at.bofh.it> |
[Resending in plain text]
Il 11/02/2016 23:28, Tejun Heo ha scritto:
> Hello, > > On Mon, Feb 01, 2016 at 11:12:46PM +0100, Paolo Valente wrote: >>
From: Arianna Avanzini <avanzini.arianna@gmail.com> >> >> Complete
support for full hierarchical scheduling, with a cgroups >> interface.
The name of the added policy is bfq. >> >> Weights can be assigned
explicitly to groups and processes through the >> cgroups interface,
differently from what happens, for single >> processes, if the cgroups
interface is not used (as explained in the >> description of the
previous patch). In particular, since each node has >> a full scheduler,
each group can be assigned its own weight. > > * It'd be great if how
cgroup support is achieved is better > documented. > > * How's
writeback handled? > > * After all patches are applied, both
CONFIG_BFQ_GROUP_IOSCHED and > CONFIG_CFQ_GROUP_IOSCHED exist. > > *
The default weight and weight range don't seem to follow the defined >
interface on the v2 hierarchy. The default value should be 100. > > *
With all patches applied, booting triggers a RCU context warning. >
Please build with lockdep and RCU debugging turned on and fix the >
issue. > > * I was testing on the v2 hierarchy with two top-level
cgroups one > hosting sequential workload and the other completely
random. While > they eventually converged to a reasonable state,
starting up the > sequential workload while the random workload was
running was > extremely slow. It crawled for quite a while.
This malfunction seems related to a blkcg behavior that I did not
expect: the sequential writer changes group continuously. It moves
from the root group to its correct group, and back. Here is the
output of
egrep 'insert_request|changed cgroup' trace
over a trace taken with the original version of cfq (seq_write is of
course the group of the writer):
kworker/u8:2-96 [000] d... 204.561086: 8,0 m N cfq96A
/seq_write changed cgroup
kworker/u8:2-96 [000] d... 204.561097: 8,0 m N cfq96A
/ changed cgroup
kworker/u8:2-96 [000] d... 204.561353: 8,0 m N cfq96A
/ insert_request
kworker/u8:2-96 [000] d... 204.561369: 8,0 m N cfq96A
/seq_write insert_request
kworker/u8:2-96 [000] d... 204.561379: 8,0 m N cfq96A
/seq_write insert_request
kworker/u8:2-96 [000] d... 204.566509: 8,0 m N cfq96A
/seq_write changed cgroup
kworker/u8:2-96 [000] d... 204.566517: 8,0 m N cfq96A
/ changed cgroup
kworker/u8:2-96 [000] d... 204.566690: 8,0 m N cfq96A
/ insert_request
kworker/u8:2-96 [000] d... 204.567203: 8,0 m N cfq96A
/seq_write insert_request
kworker/u8:2-96 [000] d... 204.567216: 8,0 m N cfq96A
/seq_write insert_request
kworker/u8:2-96 [000] d... 204.567328: 8,0 m N cfq96A
/seq_write insert_request
kworker/u8:2-96 [000] d... 204.571622: 8,0 m N cfq96A
/seq_write changed cgroup
kworker/u8:2-96 [000] d... 204.571640: 8,0 m N cfq96A
/ changed cgroup
kworker/u8:2-96 [000] d... 204.572021: 8,0 m N cfq96A
/ insert_request
kworker/u8:2-96 [000] d... 204.572463: 8,0 m N cfq96A
/seq_write insert_request
...
For reasons that I don't yet know, group changes are much more
frequent with bfq, which ultimately causes bfq to fail to isolate the
writer from the reader.
While I go on trying to understand why, could you please tell me
whether this fluctuation is normal, and/or point me to documentation from
which I can better understand this behavior, without bothering you
further?
Thanks,
Paolo
> > * And "echo 100 > io.weight" hung the writing process. > > Thanks. >
[toc] | [next] | [standalone]
| From | Tejun Heo <tj@kernel.org> |
|---|---|
| Date | 2016-04-22 20:20 +0200 |
| Message-ID | <rqNQl-6oE-9@gated-at.bofh.it> |
| In reply to | #1383213 |
Hello, Paolo. On Wed, Apr 20, 2016 at 11:32:23AM +0200, Paolo wrote: > This malfunction seems related to a blkcg behavior that I did not > expect: the sequential writer changes group continuously. It moves > from the root group to its correct group, and back. Here is the > output of > > egrep 'insert_request|changed cgroup' trace > > over a trace taken with the original version of cfq (seq_write is of > course the group of the writer): ... > For reasons that I don't yet know, group changes are much more > frequent with bfq, which ultimately causes bfq to fail to isolate the > writer from the reader. > > While I go on trying to understand why, could you please tell me > whether this fluctuation is normal, and/or point me to documentation from > which I can better understand this behavior, without bothering you > further? So, a kworker would jump through different workqueues and issue IOs for different writeback domains and the context can't be tied to the issuing task. The cgroup membership should be determined directly from the bio. cfq uses per-cgroup async queue. I'm not sure how this would map to bfq tho. Thanks. -- tejun
[toc] | [prev] | [next] | [standalone]
| From | Paolo Valente <paolo.valente@linaro.org> |
|---|---|
| Date | 2016-04-22 20:30 +0200 |
| Subject | Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support |
| Message-ID | <rqO03-6t9-27@gated-at.bofh.it> |
| In reply to | #1385416 |
Il giorno 22/apr/2016, alle ore 20:13, Tejun Heo <tj@kernel.org> ha scritto: > Hello, Paolo. > > On Wed, Apr 20, 2016 at 11:32:23AM +0200, Paolo wrote: >> This malfunction seems related to a blkcg behavior that I did not >> expect: the sequential writer changes group continuously. It moves >> from the root group to its correct group, and back. Here is the >> output of >> >> egrep 'insert_request|changed cgroup' trace >> >> over a trace taken with the original version of cfq (seq_write is of >> course the group of the writer): > ... >> For reasons that I don't yet know, group changes are much more >> frequent with bfq, which ultimately causes bfq to fail to isolate the >> writer from the reader. >> >> While I go on trying to understand why, could you please tell me >> whether this fluctuation is normal, and/or point me to documentation from >> which I can better understand this behavior, without bothering you >> further? > > So, a kworker would jump through different workqueues and issue IOs > for different writeback domains and the context can't be tied to the > issuing task. The cgroup membership should be determined directly > from the bio. Yes. My doubt arises from the fact that the only source of intense I/O is the dd (I have executed it alone). In contrast, group changes occur at a high frequency during all the execution of the dd. Apparently I cannot see any other I/O induced by the dd. Journaling issues sync requests. > cfq uses per-cgroup async queue. I'm not sure how this > would map to bfq tho. > It’s the same. But this is the part I’m checking. Thanks, Paolo > Thanks. > > -- > tejun
[toc] | [prev] | [next] | [standalone]
| From | Tejun Heo <tj@kernel.org> |
|---|---|
| Date | 2016-04-22 20:50 +0200 |
| Message-ID | <rqOjn-6D4-1@gated-at.bofh.it> |
| In reply to | #1385424 |
Hello, Paolo. On Fri, Apr 22, 2016 at 08:19:47PM +0200, Paolo Valente wrote: > > So, a kworker would jump through different workqueues and issue IOs > > for different writeback domains and the context can't be tied to the > > issuing task. The cgroup membership should be determined directly > > from the bio. > > Yes. My doubt arises from the fact that the only source of intense I/O > is the dd (I have executed it alone). In contrast, group changes occur > at a high frequency during all the execution of the dd. Apparently I > cannot see any other I/O induced by the dd. Journaling issues sync > requests. > > > cfq uses per-cgroup async queue. I'm not sure how this > > would map to bfq tho. > > It’s the same. But this is the part I’m checking. Ah, right, I was confused. cic is always associated with the task and yes a writeback worker can trigger blkcg changed events frequently as it walks through different cgroups. Is this an issue? Thanks. -- tejun
[toc] | [prev] | [next] | [standalone]
| From | Paolo Valente <paolo.valente@linaro.org> |
|---|---|
| Date | 2016-04-22 21:10 +0200 |
| Subject | Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support |
| Message-ID | <rqOCK-75k-17@gated-at.bofh.it> |
| In reply to | #1385434 |
Il giorno 22/apr/2016, alle ore 20:41, Tejun Heo <tj@kernel.org> ha scritto: > Hello, Paolo. > > On Fri, Apr 22, 2016 at 08:19:47PM +0200, Paolo Valente wrote: >>> So, a kworker would jump through different workqueues and issue IOs >>> for different writeback domains and the context can't be tied to the >>> issuing task. The cgroup membership should be determined directly >>> from the bio. >> >> Yes. My doubt arises from the fact that the only source of intense I/O >> is the dd (I have executed it alone). In contrast, group changes occur >> at a high frequency during all the execution of the dd. Apparently I >> cannot see any other I/O induced by the dd. Journaling issues sync >> requests. >> >>> cfq uses per-cgroup async queue. I'm not sure how this >>> would map to bfq tho. >> >> It’s the same. But this is the part I’m checking. > > Ah, right, I was confused. cic is always associated with the task and > yes a writeback worker can trigger blkcg changed events frequently as > it walks through different cgroups. Is this an issue? > That’s exactly the source of my confusion: why does the worker walk through different cgroups all the time if the I/O is originated by the same process, which never changes group? Thanks, Paolo > Thanks. > > -- > tejun
[toc] | [prev] | [next] | [standalone]
| From | Tejun Heo <tj@kernel.org> |
|---|---|
| Date | 2016-04-22 21:40 +0200 |
| Message-ID | <rqP5M-7go-13@gated-at.bofh.it> |
| In reply to | #1385445 |
Hello, Paolo. On Fri, Apr 22, 2016 at 09:05:14PM +0200, Paolo Valente wrote: > > Ah, right, I was confused. cic is always associated with the task and > > yes a writeback worker can trigger blkcg changed events frequently as > > it walks through different cgroups. Is this an issue? > > That’s exactly the source of my confusion: why does the worker walk > through different cgroups all the time if the I/O is originated by > the same process, which never changes group? Because the workqueue workers aren't tied to individual workqueues, they wander around serving different workqueues. This might change if we eventually update workqueues to be cgroup aware but for now it's expected to happen. Thanks. -- tejun
[toc] | [prev] | [next] | [standalone]
| From | Paolo Valente <paolo.valente@linaro.org> |
|---|---|
| Date | 2016-04-23 09:10 +0200 |
| Subject | Re: [PATCH RFC 10/22] block, bfq: add full hierarchical scheduling and cgroups support |
| Message-ID | <rqZRv-7EE-1@gated-at.bofh.it> |
| In reply to | #1385458 |
Il giorno 22/apr/2016, alle ore 21:32, Tejun Heo <tj@kernel.org> ha scritto: > Hello, Paolo. > > On Fri, Apr 22, 2016 at 09:05:14PM +0200, Paolo Valente wrote: >>> Ah, right, I was confused. cic is always associated with the task and >>> yes a writeback worker can trigger blkcg changed events frequently as >>> it walks through different cgroups. Is this an issue? >> >> That’s exactly the source of my confusion: why does the worker walk >> through different cgroups all the time if the I/O is originated by >> the same process, which never changes group? > > Because the workqueue workers aren't tied to individual workqueues, > they wander around serving different workqueues. There is certainly something I don’t know here, because I don’t understand why there is also a workqueue containing root-group I/O all the time, if the only process doing I/O belongs to a different (sub)group. Anyway, if this is expected, then there is no reason to bother you further on it. In contrast, the actual problem I see is the following. If one third or half of the bios belong to a different group than the writer that one wants to isolate, then, whatever weight is assigned to the writer group, we will never be able to let the writer get the desired share of the time (or of the bandwidth with bfq and all quasi-sequential workloads). For instance, in the scenario that you told me to try, the writer will never get 50% of the time, with any scheduler. Am I missing something also on this? Thanks, Paolo > This might change if > we eventually update workqueues to be cgroup aware but for now it's > expected to happen. > > Thanks. > > -- > tejun
[toc] | [prev] | [next] | [standalone]
| From | Tejun Heo <tj@kernel.org> |
|---|---|
| Date | 2016-04-25 21:30 +0200 |
| Message-ID | <rrUmL-2Ic-35@gated-at.bofh.it> |
| In reply to | #1385583 |
Hello, Paolo. On Sat, Apr 23, 2016 at 09:07:47AM +0200, Paolo Valente wrote: > There is certainly something I don’t know here, because I don’t > understand why there is also a workqueue containing root-group I/O > all the time, if the only process doing I/O belongs to a different > (sub)group. Hmmm... maybe metadata updates? > Anyway, if this is expected, then there is no reason to bother you > further on it. In contrast, the actual problem I see is the > following. If one third or half of the bios belong to a different > group than the writer that one wants to isolate, then, whatever > weight is assigned to the writer group, we will never be able to let > the writer get the desired share of the time (or of the bandwidth > with bfq and all quasi-sequential workloads). For instance, in the > scenario that you told me to try, the writer will never get 50% of > the time, with any scheduler. Am I missing something also on this? While a worker may jump across different cgroups, the IOs are still coming from somewhere and if the only IO generator on the machine is the test dd, the bios from that cgroup should dominate the IOs. I think it'd be helpful to investigate who's issuing the root cgroup IOs. Thanks. -- tejun
[toc] | [prev] | [next] | [standalone]
| From | Paolo <paolo.valente@linaro.org> |
|---|---|
| Date | 2016-04-25 22:40 +0200 |
| Message-ID | <rrVsu-3wP-3@gated-at.bofh.it> |
| In reply to | #1386784 |
Il 25/04/2016 21:24, Tejun Heo ha scritto:
> Hello, Paolo.
>
Hi
> On Sat, Apr 23, 2016 at 09:07:47AM +0200, Paolo Valente wrote:
>> There is certainly something I don’t know here, because I don’t
>> understand why there is also a workqueue containing root-group I/O
>> all the time, if the only process doing I/O belongs to a different
>> (sub)group.
>
> Hmmm... maybe metadata updates?
>
That's what I thought in the first place. But one half or one third of
the IOs sounded too much for metadata (the percentage varies over time
during the test). And root-group IOs are apparently large. Here is an
excerpt from the output of
grep -B 1 insert_request trace
kworker/u8:4-116 [002] d... 124.349971: 8,0 I W 3903488
+ 1024 [kworker/u8:4]
kworker/u8:4-116 [002] d... 124.349978: 8,0 m N cfq409A
/ insert_request
--
kworker/u8:4-116 [002] d... 124.350770: 8,0 I W 3904512
+ 1200 [kworker/u8:4]
kworker/u8:4-116 [002] d... 124.350780: 8,0 m N cfq96A
/seq_write insert_request
--
kworker/u8:4-116 [002] d... 124.363911: 8,0 I W 3905712
+ 1888 [kworker/u8:4]
kworker/u8:4-116 [002] d... 124.363916: 8,0 m N cfq409A
/ insert_request
--
kworker/u8:4-116 [002] d... 124.364467: 8,0 I W 3907600
+ 352 [kworker/u8:4]
kworker/u8:4-116 [002] d... 124.364474: 8,0 m N cfq96A
/seq_write insert_request
--
kworker/u8:4-116 [002] d... 124.369435: 8,0 I W 3907952
+ 1680 [kworker/u8:4]
kworker/u8:4-116 [002] d... 124.369439: 8,0 m N cfq96A
/seq_write insert_request
--
kworker/u8:4-116 [002] d... 124.369441: 8,0 I W 3909632
+ 560 [kworker/u8:4]
kworker/u8:4-116 [002] d... 124.369442: 8,0 m N cfq96A
/seq_write insert_request
--
kworker/u8:4-116 [002] d... 124.373299: 8,0 I W 3910192
+ 1760 [kworker/u8:4]
kworker/u8:4-116 [002] d... 124.373301: 8,0 m N cfq409A
/ insert_request
--
kworker/u8:4-116 [002] d... 124.373519: 8,0 I W 3911952
+ 480 [kworker/u8:4]
kworker/u8:4-116 [002] d... 124.373522: 8,0 m N cfq96A
/seq_write insert_request
--
kworker/u8:4-116 [002] d... 124.381936: 8,0 I W 3912432
+ 1728 [kworker/u8:4]
kworker/u8:4-116 [002] d... 124.381937: 8,0 m N cfq409A
/ insert_request
>> Anyway, if this is expected, then there is no reason to bother you
>> further on it. In contrast, the actual problem I see is the
>> following. If one third or half of the bios belong to a different
>> group than the writer that one wants to isolate, then, whatever
>> weight is assigned to the writer group, we will never be able to let
>> the writer get the desired share of the time (or of the bandwidth
>> with bfq and all quasi-sequential workloads). For instance, in the
>> scenario that you told me to try, the writer will never get 50% of
>> the time, with any scheduler. Am I missing something also on this?
>
> While a worker may jump across different cgroups, the IOs are still
> coming from somewhere and if the only IO generator on the machine is
> the test dd, the bios from that cgroup should dominate the IOs. I
> think it'd be helpful to investigate who's issuing the root cgroup
> IOs.
>
Ok (if there is some quick way to get this information without
instrumenting the code, then any suggestion or pointer is welcome).
Thanks,
Paolo
> Thanks.
>
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web