mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
mm/page-writeback: highmem_is_dirtyable option
Add vm.highmem_is_dirtyable toggle A 32 bit machine with HIGHMEM64 enabled running DCC has an MMAPed file of approximately 2Gb size which contains a hash format that is written randomly by the dbclean process. On 2.6.16 this process took a few minutes. With lowmem only accounting of dirty ratios, this takes about 12 hours of 100% disk IO, all random writes. Include a toggle in /proc/sys/vm/highmem_is_dirtyable which can be set to 1 to add the highmem back to the total available memory count. [[email protected]: Fix the CONFIG_DETECT_SOFTLOCKUP=y build] Signed-off-by: Bron Gondwana <[email protected]> Cc: Ethan Solomita <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: WU Fengguang <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
3dfa5721f1
commit
195cf453d2
5 changed files with 47 additions and 5 deletions
|
|
@ -68,6 +68,12 @@ static inline long sync_writeback_pages(void)
|
|||
*/
|
||||
int dirty_background_ratio = 5;
|
||||
|
||||
/*
|
||||
* free highmem will not be subtracted from the total free memory
|
||||
* for calculating free ratios if vm_highmem_is_dirtyable is true
|
||||
*/
|
||||
int vm_highmem_is_dirtyable;
|
||||
|
||||
/*
|
||||
* The generator of dirty data starts writeback at this percentage
|
||||
*/
|
||||
|
|
@ -287,7 +293,10 @@ static unsigned long determine_dirtyable_memory(void)
|
|||
x = global_page_state(NR_FREE_PAGES)
|
||||
+ global_page_state(NR_INACTIVE)
|
||||
+ global_page_state(NR_ACTIVE);
|
||||
x -= highmem_dirtyable_memory(x);
|
||||
|
||||
if (!vm_highmem_is_dirtyable)
|
||||
x -= highmem_dirtyable_memory(x);
|
||||
|
||||
return x + 1; /* Ensure that we never return 0 */
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue