init: Change extra_free_kbytes.sh to add margin relative to the default watermark level

extra_free_kbytes.sh accepts a parameter representing the number of KB
to add to low and high watermarks. It adds this margin to the current
watermark levels, however this is not how /proc/sys/vm/extra_free_kbytes
knob that it replaces used to work. The old knob would add the margin
relative to the original and not the current level of the watermarks.
Change extra_free_kbytes.sh to add the specified margin to the original
watermark levels to act as correct replacement of the old knob.

Bug: 242837506
Fixes: 642048d969 ("init: Add extra_free_kbytes.sh script to adjust watermark_scale_factor")
Test: repeatedly run 'setprop sys.sysctl.extra_free_kbytes 30375'
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I8af603ba00bd4fb8182b80b3c0969fa96cdd7311
This commit is contained in:
Suren Baghdasaryan 2022-08-24 11:01:23 -07:00
parent a5d944f67d
commit cfd8864f9a

View file

@ -77,7 +77,19 @@ then
exit
fi
watermark_scale=`cat /proc/sys/vm/watermark_scale_factor`
# record the original watermark_scale_factor value
watermark_scale=$(getprop "ro.kernel.watermark_scale_factor")
if [ -z "$watermark_scale" ]
then
watermark_scale=$(cat /proc/sys/vm/watermark_scale_factor)
setprop "ro.kernel.watermark_scale_factor" "$watermark_scale"
# On older distributions with no policies configured setprop may fail.
# If that happens, use the kernel default of 10.
if [ -z $(getprop "ro.kernel.watermark_scale_factor") ]
then
watermark_scale=10
fi
fi
# convert extra_free_kbytes to pages
page_size=$(getconf PAGESIZE)