From c4338f2280dcf822ac49295b464375759da570b5 Mon Sep 17 00:00:00 2001 From: Pranav Vashi Date: Sat, 1 Mar 2025 16:18:28 +0530 Subject: [PATCH] sm6150-common: rootdir: Set up read ahead values properly * QCOM sets up for dm-0, dm-1 and dm-2 on boot via init.qcom.rc and for sda* via post boot script. * Also set watermark_scale_factor and watermark_boost_factor basis QCOM recommendation. * Reduce swappiness to 60. * Modify configure_read_ahead_kb_values to set nr_requests value. Signed-off-by: Pranav Vashi Signed-off-by: therealmharc --- rootdir/bin/init.qcom.post_boot.sh | 62 +++++++++++++++++++++++++++--- rootdir/etc/init.qcom.rc | 9 +++++ rootdir/etc/init.target.rc | 21 ---------- 3 files changed, 66 insertions(+), 26 deletions(-) diff --git a/rootdir/bin/init.qcom.post_boot.sh b/rootdir/bin/init.qcom.post_boot.sh index e689a6e..35f93a7 100644 --- a/rootdir/bin/init.qcom.post_boot.sh +++ b/rootdir/bin/init.qcom.post_boot.sh @@ -254,6 +254,35 @@ case "$soc_id" in ;; esac +function configure_read_ahead_kb_values() { + MemTotalStr=`cat /proc/meminfo | grep MemTotal` + MemTotal=${MemTotalStr:16:8} + + dmpts=$(ls /sys/block/*/queue | grep -e dm -e mmc) + + # Set 128 for <= 3GB & + # set 512 for >= 4GB targets. + if [ $MemTotal -le 3145728 ]; then + echo 128 > /sys/block/mmcblk0/bdi/read_ahead_kb + echo 128 > /sys/block/mmcblk0/bdi/nr_requests + echo 128 > /sys/block/mmcblk0rpmb/bdi/read_ahead_kb + echo 128 > /sys/block/mmcblk0rpmb/bdi/nr_requests + for dm in $dmpts; do + echo 128 > $dm/read_ahead_kb + echo 128 > $dm/nr_requests + done + else + echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb + echo 256 > /sys/block/mmcblk0/bdi/nr_requests + echo 512 > /sys/block/mmcblk0rpmb/bdi/read_ahead_kb + echo 256 > /sys/block/mmcblk0rpmb/bdi/nr_requests + for dm in $dmpts; do + echo 512 > $dm/read_ahead_kb + echo 256 > $dm/nr_requests + done + fi +} + function configure_zram_parameters() { MemTotalStr=`cat /proc/meminfo | grep MemTotal` MemTotal=${MemTotalStr:16:8} @@ -296,11 +325,34 @@ function configure_zram_parameters() { fi } -# Enable ZRAM -configure_zram_parameters -echo 0 > /proc/sys/vm/page-cluster -echo 0 > /sys/module/vmpressure/parameters/allocstall_threshold -echo 100 > /proc/sys/vm/swappiness +function configure_memory_parameters() { + # Swap only 1 page at a time + echo 0 > /proc/sys/vm/page-cluster + + # Set allocstall_threshold to 0 for all targets. + echo 0 > /sys/module/vmpressure/parameters/allocstall_threshold + + # Set swappiness to 60 for all targets + echo 60 > /proc/sys/vm/swappiness + + # Disable wsf for all targets beacause we are using efk. + # wsf Range : 1..1000 So set to bare minimum value 1. + echo 1 > /proc/sys/vm/watermark_scale_factor + + # Disable the feature of watermark boost for 8G and below device + MemTotalStr=`cat /proc/meminfo | grep MemTotal` + MemTotal=${MemTotalStr:16:8} + + if [ $MemTotal -le 8388608 ]; then + echo 0 > /proc/sys/vm/watermark_boost_factor + fi + + # Enable ZRAM + configure_zram_parameters + configure_read_ahead_kb_values +} + +configure_memory_parameters # Enable PowerHAL hint processing setprop vendor.powerhal.init 1 diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc index 7c42668..731c96b 100644 --- a/rootdir/etc/init.qcom.rc +++ b/rootdir/etc/init.qcom.rc @@ -213,6 +213,11 @@ on post-fs-data chown radio radio /data/vendor/radio/qcril_prebuilt.db chmod 0660 /data/vendor/radio/qcril_prebuilt.db + # set aggressive read ahead for dm-0 and dm-1 during boot up + write /sys/block/dm-0/queue/read_ahead_kb 2048 + write /sys/block/dm-1/queue/read_ahead_kb 2048 + write /sys/block/dm-2/queue/read_ahead_kb 2048 + # Create vpp directory mkdir /data/vendor/vpp 0770 media media @@ -225,6 +230,10 @@ on property:sys.boot_completed=1 # Enable UFS clock scaling back write /sys/bus/platform/devices/1d84000.ufshc/clkscale_enable 1 + #Reset read ahead for dm-0 and dm-1 to 512kb + write /sys/block/dm-0/queue/read_ahead_kb 512 + write /sys/block/dm-1/queue/read_ahead_kb 512 + chown media audio /sys/kernel/wdsp0/boot start vendor.qcom-post-boot diff --git a/rootdir/etc/init.target.rc b/rootdir/etc/init.target.rc index 0573426..df0db46 100644 --- a/rootdir/etc/init.target.rc +++ b/rootdir/etc/init.target.rc @@ -45,18 +45,6 @@ on init write /sys/module/qpnp_rtc/parameters/poweron_alarm 1 - # Boot time fs tuning - write /sys/block/sda/queue/iostats 0 - write /sys/block/sda/queue/scheduler cfq - write /sys/block/sda/queue/iosched/slice_idle 0 - write /sys/block/sda/queue/read_ahead_kb 2048 - write /sys/block/sda/queue/nr_requests 256 - write /sys/block/sde/queue/iostats 0 - write /sys/block/sde/queue/scheduler cfq - write /sys/block/sde/queue/iosched/slice_idle 0 - write /sys/block/sde/queue/read_ahead_kb 2048 - write /sys/block/sde/queue/nr_requests 256 - on fs mount_all --early @@ -127,15 +115,6 @@ on boot write /sys/block/sda/queue/wbt_lat_usec 75000 -on property:sys.boot_completed=1 - # Runtime fs tuning - write /sys/block/sda/queue/read_ahead_kb 128 - write /sys/block/sda/queue/nr_requests 128 - write /sys/block/sda/queue/iostats 1 - write /sys/block/sde/queue/read_ahead_kb 128 - write /sys/block/sde/queue/nr_requests 128 - write /sys/block/sde/queue/iostats 1 - service vendor.pd_mapper /vendor/bin/pd-mapper class core user system