diff for duplicates of <20101214130018.GA19424@localhost> diff --git a/a/1.txt b/N1/1.txt index 0076578..412e228 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -10,21 +10,21 @@ On Tue, Dec 14, 2010 at 03:00:05PM +0800, Wu Fengguang wrote: > > > pause time will be (given the same fluctuation of bdi_dirty). > > > > > > For example, if A drifts to A', its pause time may drift from 5ms to -> > > 6ms, while B to B' may drift from 50ms to 90ms. It's much larger +> > > 6ms, while B to B' may drift from 50ms to 90ms. A It's much larger > > > fluctuations in relative ratio as well as absolute time. > > > > > > Fig.1 before patch, gap (C-B) is too low to get smooth pause time > > > > > > throttle_bandwidth_A = bdi_bandwidth .........o -> > > | o <= A' -> > > | o -> > > | o -> > > | o -> > > | o +> > > A A A A A A A A A A A A A A A A A A A A A A A | o <= A' +> > > A A A A A A A A A A A A A A A A A A A A A A A | A o +> > > A A A A A A A A A A A A A A A A A A A A A A A | A A o +> > > A A A A A A A A A A A A A A A A A A A A A A A | A A A o +> > > A A A A A A A A A A A A A A A A A A A A A A A | A A A A o > > > throttle_bandwidth_B = bdi_bandwidth / 4 .....|...........o -> > > | | o <= B' +> > > A A A A A A A A A A A A A A A A A A A A A A A | A A A A A | o <= B' > > > ----------------------------------------------+-----------+---o -> > > A B C +> > > A A A A A A A A A A A A A A A A A A A A A A A A A A A A A B A C > > > > > > The solution is to lower the slope of the throttle line accordingly, > > > which makes B stabilize at some point more far away from C. @@ -32,67 +32,67 @@ On Tue, Dec 14, 2010 at 03:00:05PM +0800, Wu Fengguang wrote: > > > Fig.2 after patch > > > > > > throttle_bandwidth_A = bdi_bandwidth .........o -> > > | o <= A' -> > > | o -> > > | o -> > > lowered max throttle bandwidth for B ===> * o -> > > | * o -> > > throttle_bandwidth_B = bdi_bandwidth / 4 .............* o -> > > | | * o +> > > A A A A A A A A A A A A A A A A A A A A A A A | o <= A' +> > > A A A A A A A A A A A A A A A A A A A A A A A | A o +> > > A A A A A A A A A A A A A A A A A A A A A A A | A A o +> > > A A lowered max throttle bandwidth for B ===> * A A A o +> > > A A A A A A A A A A A A A A A A A A A A A A A | A * A A o +> > > throttle_bandwidth_B = bdi_bandwidth / 4 .............* A o +> > > A A A A A A A A A A A A A A A A A A A A A A A | A A A | A * o > > > ----------------------------------------------+-------+-------o -> > > A B C +> > > A A A A A A A A A A A A A A A A A A A A A A A A A A A B A A A C > > > > > > Note that C is actually different points for 1-dirty and 4-dirtiers > > > cases, but for easy graphing, we move them together. > > > > > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com> > > > --- -> > > mm/page-writeback.c | 16 +++++++++++++--- -> > > 1 file changed, 13 insertions(+), 3 deletions(-) +> > > A mm/page-writeback.c | A 16 +++++++++++++--- +> > > A 1 file changed, 13 insertions(+), 3 deletions(-) > > > > > > --- linux-next.orig/mm/page-writeback.c 2010-12-13 21:46:14.000000000 +0800 -> > > +++ linux-next/mm/page-writeback.c 2010-12-13 21:46:15.000000000 +0800 +> > > +++ linux-next/mm/page-writeback.c A A A 2010-12-13 21:46:15.000000000 +0800 > > > @@ -587,6 +587,7 @@ static void balance_dirty_pages(struct a -> > > unsigned long background_thresh; -> > > unsigned long dirty_thresh; -> > > unsigned long bdi_thresh; -> > > + unsigned long task_thresh; -> > > unsigned long long bw; -> > > unsigned long period; -> > > unsigned long pause = 0; +> > > A A A A unsigned long background_thresh; +> > > A A A A unsigned long dirty_thresh; +> > > A A A A unsigned long bdi_thresh; +> > > + A A A unsigned long task_thresh; +> > > A A A A unsigned long long bw; +> > > A A A A unsigned long period; +> > > A A A A unsigned long pause = 0; > > > @@ -616,7 +617,7 @@ static void balance_dirty_pages(struct a -> > > break; +> > > A A A A A A A A A A A A break; > > > -> > > bdi_thresh = bdi_dirty_limit(bdi, dirty_thresh, nr_dirty); -> > > - bdi_thresh = task_dirty_limit(current, bdi_thresh); -> > > + task_thresh = task_dirty_limit(current, bdi_thresh); +> > > A A A A A A A A bdi_thresh = bdi_dirty_limit(bdi, dirty_thresh, nr_dirty); +> > > - A A A A A A A bdi_thresh = task_dirty_limit(current, bdi_thresh); +> > > + A A A A A A A task_thresh = task_dirty_limit(current, bdi_thresh); > > > -> > > /* -> > > * In order to avoid the stacked BDI deadlock we need +> > > A A A A A A A A /* +> > > A A A A A A A A * In order to avoid the stacked BDI deadlock we need > > > @@ -638,14 +639,23 @@ static void balance_dirty_pages(struct a > > > -> > > bdi_update_bandwidth(bdi, start_time, bdi_dirty, bdi_thresh); +> > > A A A A A A A A bdi_update_bandwidth(bdi, start_time, bdi_dirty, bdi_thresh); > > > -> > > - if (bdi_dirty >= bdi_thresh || nr_dirty > dirty_thresh) { -> > > + if (bdi_dirty >= task_thresh || nr_dirty > dirty_thresh) { -> > > pause = MAX_PAUSE; -> > > goto pause; -> > > } +> > > - A A A A A A A if (bdi_dirty >= bdi_thresh || nr_dirty > dirty_thresh) { +> > > + A A A A A A A if (bdi_dirty >= task_thresh || nr_dirty > dirty_thresh) { +> > > A A A A A A A A A A A A pause = MAX_PAUSE; +> > > A A A A A A A A A A A A goto pause; +> > > A A A A A A A A } > > > -> > > + /* -> > > + * When bdi_dirty grows closer to bdi_thresh, it indicates more -> > > + * concurrent dirtiers. Proportionally lower the max throttle -> > > + * bandwidth. This will resist bdi_dirty from approaching to -> > > + * close to task_thresh, and help reduce fluctuations of pause -> > > + * time when there are lots of dirtiers. -> > > + */ -> > > bw = bdi->write_bandwidth; +> > > + A A A A A A A /* +> > > + A A A A A A A A * When bdi_dirty grows closer to bdi_thresh, it indicates more +> > > + A A A A A A A A * concurrent dirtiers. Proportionally lower the max throttle +> > > + A A A A A A A A * bandwidth. This will resist bdi_dirty from approaching to +> > > + A A A A A A A A * close to task_thresh, and help reduce fluctuations of pause +> > > + A A A A A A A A * time when there are lots of dirtiers. +> > > + A A A A A A A A */ +> > > A A A A A A A A bw = bdi->write_bandwidth; > > > - -> > > bw = bw * (bdi_thresh - bdi_dirty); -> > > + do_div(bw, bdi_thresh / BDI_SOFT_DIRTY_LIMIT + 1); +> > > A A A A A A A A bw = bw * (bdi_thresh - bdi_dirty); +> > > + A A A A A A A do_div(bw, bdi_thresh / BDI_SOFT_DIRTY_LIMIT + 1); > > > + -> > > + bw = bw * (task_thresh - bdi_dirty); -> > > do_div(bw, bdi_thresh / TASK_SOFT_DIRTY_LIMIT + 1); +> > > + A A A A A A A bw = bw * (task_thresh - bdi_dirty); +> > > A A A A A A A A do_div(bw, bdi_thresh / TASK_SOFT_DIRTY_LIMIT + 1); > > > > Maybe changing this line to "do_div(bw, task_thresh / > > TASK_SOFT_DIRTY_LIMIT + 1);" @@ -111,15 +111,22 @@ Sorry it's not the overall control lines that's simply shifted, but the task control line. bdi control line: -> > > bw = bw * (bdi_thresh - bdi_dirty); -> > > + do_div(bw, bdi_thresh / BDI_SOFT_DIRTY_LIMIT + 1); +> > > A A A A A A A A bw = bw * (bdi_thresh - bdi_dirty); +> > > + A A A A A A A do_div(bw, bdi_thresh / BDI_SOFT_DIRTY_LIMIT + 1); task control line: -> > > + bw = bw * (task_thresh - bdi_dirty); -> > > do_div(bw, bdi_thresh / TASK_SOFT_DIRTY_LIMIT + 1); +> > > + A A A A A A A bw = bw * (task_thresh - bdi_dirty); +> > > A A A A A A A A do_div(bw, bdi_thresh / TASK_SOFT_DIRTY_LIMIT + 1); The use of bdi_thresh in the last line makes sure all task control lines are of the same slope. Thanks, Fengguang + +-- +To unsubscribe, send a message with 'unsubscribe linux-mm' in +the body to majordomo@kvack.org. For more info on Linux MM, +see: http://www.linux-mm.org/ . +Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ +Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> diff --git a/a/content_digest b/N1/content_digest index 4833634..7ae3d91 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -37,21 +37,21 @@ "> > > pause time will be (given the same fluctuation of bdi_dirty).\n" "> > >\n" "> > > For example, if A drifts to A', its pause time may drift from 5ms to\n" - "> > > 6ms, while B to B' may drift from 50ms to 90ms. \302\240It's much larger\n" + "> > > 6ms, while B to B' may drift from 50ms to 90ms. A It's much larger\n" "> > > fluctuations in relative ratio as well as absolute time.\n" "> > >\n" "> > > Fig.1 before patch, gap (C-B) is too low to get smooth pause time\n" "> > >\n" "> > > throttle_bandwidth_A = bdi_bandwidth .........o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| o <= A'\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 \302\240 o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 \302\240 \302\240 o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 \302\240 \302\240 \302\240 o\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | o <= A'\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | A o\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | A A o\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | A A A o\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | A A A A o\n" "> > > throttle_bandwidth_B = bdi_bandwidth / 4 .....|...........o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 \302\240 \302\240 \302\240 \302\240 | o <= B'\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | A A A A A | o <= B'\n" "> > > ----------------------------------------------+-----------+---o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240A \302\240 \302\240 \302\240 \302\240 \302\240 B \302\240 C\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A A A A A A A B A C\n" "> > >\n" "> > > The solution is to lower the slope of the throttle line accordingly,\n" "> > > which makes B stabilize at some point more far away from C.\n" @@ -59,67 +59,67 @@ "> > > Fig.2 after patch\n" "> > >\n" "> > > throttle_bandwidth_A = bdi_bandwidth .........o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| o <= A'\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 \302\240 o\n" - "> > > \302\240 \302\240lowered max throttle bandwidth for B ===> * \302\240 \302\240 \302\240 o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 * \302\240 \302\240 o\n" - "> > > throttle_bandwidth_B = bdi_bandwidth / 4 .............* \302\240 o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240| \302\240 \302\240 \302\240 | \302\240 * o\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | o <= A'\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | A o\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | A A o\n" + "> > > A A lowered max throttle bandwidth for B ===> * A A A o\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | A * A A o\n" + "> > > throttle_bandwidth_B = bdi_bandwidth / 4 .............* A o\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A | A A A | A * o\n" "> > > ----------------------------------------------+-------+-------o\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240A \302\240 \302\240 \302\240 B \302\240 \302\240 \302\240 C\n" + "> > > A A A A A A A A A A A A A A A A A A A A A A A A A A A B A A A C\n" "> > >\n" "> > > Note that C is actually different points for 1-dirty and 4-dirtiers\n" "> > > cases, but for easy graphing, we move them together.\n" "> > >\n" "> > > Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>\n" "> > > ---\n" - "> > > \302\240mm/page-writeback.c | \302\240 16 +++++++++++++---\n" - "> > > \302\2401 file changed, 13 insertions(+), 3 deletions(-)\n" + "> > > A mm/page-writeback.c | A 16 +++++++++++++---\n" + "> > > A 1 file changed, 13 insertions(+), 3 deletions(-)\n" "> > >\n" "> > > --- linux-next.orig/mm/page-writeback.c 2010-12-13 21:46:14.000000000 +0800\n" - "> > > +++ linux-next/mm/page-writeback.c \302\240 \302\240 \302\2402010-12-13 21:46:15.000000000 +0800\n" + "> > > +++ linux-next/mm/page-writeback.c A A A 2010-12-13 21:46:15.000000000 +0800\n" "> > > @@ -587,6 +587,7 @@ static void balance_dirty_pages(struct a\n" - "> > > \302\240 \302\240 \302\240 \302\240unsigned long background_thresh;\n" - "> > > \302\240 \302\240 \302\240 \302\240unsigned long dirty_thresh;\n" - "> > > \302\240 \302\240 \302\240 \302\240unsigned long bdi_thresh;\n" - "> > > + \302\240 \302\240 \302\240 unsigned long task_thresh;\n" - "> > > \302\240 \302\240 \302\240 \302\240unsigned long long bw;\n" - "> > > \302\240 \302\240 \302\240 \302\240unsigned long period;\n" - "> > > \302\240 \302\240 \302\240 \302\240unsigned long pause = 0;\n" + "> > > A A A A unsigned long background_thresh;\n" + "> > > A A A A unsigned long dirty_thresh;\n" + "> > > A A A A unsigned long bdi_thresh;\n" + "> > > + A A A unsigned long task_thresh;\n" + "> > > A A A A unsigned long long bw;\n" + "> > > A A A A unsigned long period;\n" + "> > > A A A A unsigned long pause = 0;\n" "> > > @@ -616,7 +617,7 @@ static void balance_dirty_pages(struct a\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240break;\n" + "> > > A A A A A A A A A A A A break;\n" "> > >\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240bdi_thresh = bdi_dirty_limit(bdi, dirty_thresh, nr_dirty);\n" - "> > > - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 bdi_thresh = task_dirty_limit(current, bdi_thresh);\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 task_thresh = task_dirty_limit(current, bdi_thresh);\n" + "> > > A A A A A A A A bdi_thresh = bdi_dirty_limit(bdi, dirty_thresh, nr_dirty);\n" + "> > > - A A A A A A A bdi_thresh = task_dirty_limit(current, bdi_thresh);\n" + "> > > + A A A A A A A task_thresh = task_dirty_limit(current, bdi_thresh);\n" "> > >\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240/*\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 * In order to avoid the stacked BDI deadlock we need\n" + "> > > A A A A A A A A /*\n" + "> > > A A A A A A A A * In order to avoid the stacked BDI deadlock we need\n" "> > > @@ -638,14 +639,23 @@ static void balance_dirty_pages(struct a\n" "> > >\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240bdi_update_bandwidth(bdi, start_time, bdi_dirty, bdi_thresh);\n" + "> > > A A A A A A A A bdi_update_bandwidth(bdi, start_time, bdi_dirty, bdi_thresh);\n" "> > >\n" - "> > > - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (bdi_dirty >= bdi_thresh || nr_dirty > dirty_thresh) {\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 if (bdi_dirty >= task_thresh || nr_dirty > dirty_thresh) {\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240pause = MAX_PAUSE;\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240goto pause;\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240}\n" + "> > > - A A A A A A A if (bdi_dirty >= bdi_thresh || nr_dirty > dirty_thresh) {\n" + "> > > + A A A A A A A if (bdi_dirty >= task_thresh || nr_dirty > dirty_thresh) {\n" + "> > > A A A A A A A A A A A A pause = MAX_PAUSE;\n" + "> > > A A A A A A A A A A A A goto pause;\n" + "> > > A A A A A A A A }\n" "> > >\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 /*\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240* When bdi_dirty grows closer to bdi_thresh, it indicates more\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240* concurrent dirtiers. Proportionally lower the max throttle\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240* bandwidth. This will resist bdi_dirty from approaching to\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240* close to task_thresh, and help reduce fluctuations of pause\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240* time when there are lots of dirtiers.\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240*/\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240bw = bdi->write_bandwidth;\n" + "> > > + A A A A A A A /*\n" + "> > > + A A A A A A A A * When bdi_dirty grows closer to bdi_thresh, it indicates more\n" + "> > > + A A A A A A A A * concurrent dirtiers. Proportionally lower the max throttle\n" + "> > > + A A A A A A A A * bandwidth. This will resist bdi_dirty from approaching to\n" + "> > > + A A A A A A A A * close to task_thresh, and help reduce fluctuations of pause\n" + "> > > + A A A A A A A A * time when there are lots of dirtiers.\n" + "> > > + A A A A A A A A */\n" + "> > > A A A A A A A A bw = bdi->write_bandwidth;\n" "> > > -\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240bw = bw * (bdi_thresh - bdi_dirty);\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 do_div(bw, bdi_thresh / BDI_SOFT_DIRTY_LIMIT + 1);\n" + "> > > A A A A A A A A bw = bw * (bdi_thresh - bdi_dirty);\n" + "> > > + A A A A A A A do_div(bw, bdi_thresh / BDI_SOFT_DIRTY_LIMIT + 1);\n" "> > > +\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 bw = bw * (task_thresh - bdi_dirty);\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240do_div(bw, bdi_thresh / TASK_SOFT_DIRTY_LIMIT + 1);\n" + "> > > + A A A A A A A bw = bw * (task_thresh - bdi_dirty);\n" + "> > > A A A A A A A A do_div(bw, bdi_thresh / TASK_SOFT_DIRTY_LIMIT + 1);\n" "> > \n" "> > Maybe changing this line to \"do_div(bw, task_thresh /\n" "> > TASK_SOFT_DIRTY_LIMIT + 1);\"\n" @@ -138,17 +138,24 @@ "the task control line.\n" "\n" "bdi control line:\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240bw = bw * (bdi_thresh - bdi_dirty);\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 do_div(bw, bdi_thresh / BDI_SOFT_DIRTY_LIMIT + 1);\n" + "> > > A A A A A A A A bw = bw * (bdi_thresh - bdi_dirty);\n" + "> > > + A A A A A A A do_div(bw, bdi_thresh / BDI_SOFT_DIRTY_LIMIT + 1);\n" "\n" "task control line:\n" - "> > > + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 bw = bw * (task_thresh - bdi_dirty);\n" - "> > > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240do_div(bw, bdi_thresh / TASK_SOFT_DIRTY_LIMIT + 1);\n" + "> > > + A A A A A A A bw = bw * (task_thresh - bdi_dirty);\n" + "> > > A A A A A A A A do_div(bw, bdi_thresh / TASK_SOFT_DIRTY_LIMIT + 1);\n" "\n" "The use of bdi_thresh in the last line makes sure all task control\n" "lines are of the same slope.\n" "\n" "Thanks,\n" - Fengguang + "Fengguang\n" + "\n" + "--\n" + "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n" + "the body to majordomo@kvack.org. For more info on Linux MM,\n" + "see: http://www.linux-mm.org/ .\n" + "Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/\n" + "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>" -9b984d24f0b31efbb6b2a15f94e293d3bab8a74d134e22d6a40f28b024f51b84 +8902dac7ec4c6a33a3b66312729e8b734a2286f7850dff19bdb3b8fd111f39e3
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.