writeback: remove the internal 5% low bound on dirty_ratio
Subsystems (3)
PATCH 1/1 writeback: remove the internal 5% low bound on dirty_ratio
The dirty_ratio was siliently limited in global_dirty_limits() to >= 5%. This is not a user expected behavior. And it's inconsistent with calc_period_shift(), which uses the plain vm_dirty_ratio value.
Let's rip the internal bound.
At the same time, fix balance_dirty_pages() to work with the dirty_thresh=0 case. This allows applications to proceed when dirty+writeback pages are all cleaned.
And ">" fits with the name "exceeded" better than ">=" does. Neil think it is an aesthetic improvement as well as a functional one :)
--- mm/page-writeback.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-)
mm/page-writeback.c +4 -10
@@ -415,14 +415,8 @@ void global_dirty_limits(unsigned long *if (vm_dirty_bytes) dirty =DIV_ROUND_UP (vm_dirty_bytes,PAGE_SIZE ); -else { -int dirty_ratio; - - dirty_ratio = vm_dirty_ratio; -if (dirty_ratio <5 ) - dirty_ratio =5 ; - dirty = (dirty_ratio * available_memory) /100 ; - } +else + dirty = (vm_dirty_ratio * available_memory) /100 ;if (dirty_background_bytes) background =DIV_ROUND_UP (dirty_background_bytes,PAGE_SIZE );
@@ -542,8 +536,8 @@ static void balance_dirty_pages(struct a* the last resort safeguard. */ dirty_exceeded = - (bdi_nr_reclaimable + bdi_nr_writeback >= bdi_thresh) - || (nr_reclaimable + nr_writeback >= dirty_thresh); + (bdi_nr_reclaimable + bdi_nr_writeback > bdi_thresh) + || (nr_reclaimable + nr_writeback > dirty_thresh);if (!dirty_exceeded)break ;
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
Quoted 1 line · Wu Fengguang
The
dirty_ratiowas siliently limited inglobal_dirty_limits()to >= 5%
Quoted 13 lines · Wu Fengguang
The
dirty_ratiowas siliently limited inglobal_dirty_limits()to>= 5%. This is not a user expected behavior. And it's inconsistent withcalc_period_shift(), which uses the plainvm_dirty_ratiovalue.Let's rip the internal bound.
At the same time, fix
balance_dirty_pages()to work with the dirty_thresh=0 case. This allows applications to proceed when dirty+writeback pages are all cleaned.And ">" fits with the name "exceeded" better than">=" does. Neil think it is an aesthetic improvement as well as a functional one :)
Quoted 7 lines
CC Jan Kara<[email protected]>CC Rik van Riel<[email protected]>CC Peter Zijlstra<[email protected]>Proposed-by Con Kolivas<[email protected]>Reviewed-by Neil Brown<[email protected]>Reviewed-by KOSAKI Motohiro<[email protected]>Signed-off-by Wu Fengguang<[email protected]>
Signature · 7 lines
All rights reversed -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
PATCH v2 1/1 writeback: remove the internal 5% low bound on dirty_ratio
In reply to Wu FengguangThe dirty_ratio was siliently limited in global_dirty_limits() to >= 5%. This is not a user expected behavior. And it's inconsistent with calc_period_shift(), which uses the plain vm_dirty_ratio value.
Let's rip the internal bound.
At the same time, fix balance_dirty_pages() to work with the dirty_thresh=0 case. This allows applications to proceed when dirty+writeback pages are all cleaned.
And ">" fits with the name "exceeded" better than ">=" does. Neil think it is an aesthetic improvement as well as a functional one :)
v2: convert the background writeback checks, too. Just to be sure.
--- fs/fs-writeback.c | 2 +- mm/page-writeback.c | 16 +++++----------- 2 files changed, 6 insertions(+), 12 deletions(-)
mm/page-writeback.c +5 -11
@@ -415,14 +415,8 @@ void global_dirty_limits(unsigned long *if (vm_dirty_bytes) dirty =DIV_ROUND_UP (vm_dirty_bytes,PAGE_SIZE ); -else { -int dirty_ratio; - - dirty_ratio = vm_dirty_ratio; -if (dirty_ratio <5 ) - dirty_ratio =5 ; - dirty = (dirty_ratio * available_memory) /100 ; - } +else + dirty = (vm_dirty_ratio * available_memory) /100 ;if (dirty_background_bytes) background =DIV_ROUND_UP (dirty_background_bytes,PAGE_SIZE );
@@ -510,7 +504,7 @@ static void balance_dirty_pages(struct a* catch-up. This avoids (excessively) small writeouts * when the bdi limits are ramping up. */ -if (nr_reclaimable + nr_writeback < +if (nr_reclaimable + nr_writeback <= (background_thresh + dirty_thresh) /2 )break ;
@@ -542,8 +536,8 @@ static void balance_dirty_pages(struct a* the last resort safeguard. */ dirty_exceeded = - (bdi_nr_reclaimable + bdi_nr_writeback >= bdi_thresh) - || (nr_reclaimable + nr_writeback >= dirty_thresh); + (bdi_nr_reclaimable + bdi_nr_writeback > bdi_thresh) + || (nr_reclaimable + nr_writeback > dirty_thresh);if (!dirty_exceeded)break ;
fs/fs-writeback.c +1 -1
@@ -574,7 +574,7 @@ static inline bool over_bground_thresh(vglobal_dirty_limits (&background_thresh, &dirty_thresh);return (global_page_state (NR_FILE_DIRTY ) + -global_page_state (NR_UNSTABLE_NFS ) >= background_thresh); +global_page_state (NR_UNSTABLE_NFS ) > background_thresh); }/*
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>