adb shell stop thermald
adb shell stop thermal-engine
adb shell "echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus"
adb shell "echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus"
adb shell "echo 1 > /sys/devices/system/cpu/cpu1/online"
adb shell "echo 1 > /sys/devices/system/cpu/cpu2/online"
adb shell "echo 1 > /sys/devices/system/cpu/cpu3/online"
adb shell "echo 1 > /sys/devices/system/cpu/cpu4/online"
adb shell "echo 1 > /sys/devices/system/cpu/cpu5/online"
adb shell "echo 1 > /sys/devices/system/cpu/cpu6/online"
adb shell "echo 1 > /sys/devices/system/cpu/cpu7/online"
adb shell "echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
adb shell "echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor"
adb shell "echo performance > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor"
adb shell "echo performance > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor"
adb shell "echo performance > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor"
adb shell "echo performance > /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor"
adb shell "echo performance > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor"
adb shell "echo performance > /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor"
adb shell "echo 1 > /sys/module/lpm_levels/parameters/sleep_disabled"
效能拉滿。
EMMC
echo 0 > /sys/class/mmc_host/mmcX/clk_scaling/enable
UFS
echo 0 > /sys/class/scsi_host/host0/../../../clkscale_enable
如何避免page cache過多及memfree過少的方法
在 Linux 系統中,避免出現記憶體不足 (memfree 過小) 和快取 (cache) 過多從而引發的 I/O 壓力,可以採取以下幾種措施:
1. 調整 vm.swappiness
swappiness 決定了系統將記憶體頁交換到磁碟的頻率。值越高,系統越傾向於使用交換空間,而不是清理快取。降低 swappiness 可以減少系統使用交換空間的頻率,使更多的記憶體用於快取,但需要在 I/O 壓力較小時謹慎調整。
透過 sysctl 設定:
sysctl -w vm.swappiness=10
或透過修改 /etc/sysctl.conf 持久化:
echo "vm.swappiness = 10" >> /etc/sysctl.conf
2. 調整 vm.vfs_cache_pressure
vfs_cache_pressure 引數控制系統回收 inode 和 dentry 快取的力度。較大的值會導致系統更頻繁地回收快取,減小該值可以保留更多的快取,降低 I/O 壓力。
調整方式:
sysctl -w vm.vfs_cache_pressure=50
3. 設定 vm.min_free_kbytes
min_free_kbytes 決定系統為避免記憶體過度分配而保留的最小可用記憶體量。將此值設定為一個合適的值,可以保證系統在發生記憶體短缺前採取措施。
例如:
sysctl -w vm.min_free_kbytes=65536
4. 使用 cgroup 限制 I/O 和記憶體
透過 cgroup,可以為特定的程序組設定記憶體和 I/O 限制,防止某些程序佔用過多的快取或記憶體資源,進而影響系統的整體效能。
限制記憶體使用
echo "<memory_limit_in_bytes>" > /sys/fs/cgroup/memory/<group_name>/memory.limit_in_bytes
限制塊裝置 I/O
echo "<read/write limit>" > /sys/fs/cgroup/blkio/<group_name>/blkio.throttle.read_bps_device
5. 最佳化快取回收機制
可以透過調整 drop_caches 來手動釋放快取,不過這通常只作為應急處理方案。
sync && echo 3 > /proc/sys/vm/drop_caches
6. 調整 dirty_ratio 和 dirty_background_ratio
dirty_ratio 和 dirty_background_ratio 控制系統將髒頁寫入磁碟的時機。較高的 dirty_ratio 可能導致更多的資料快取在記憶體中,延遲了寫入磁碟的操作。在 I/O 壓力較大時,減小這些值可以減少系統寫入突發的情況。
sysctl -w vm.dirty_ratio=20
sysctl -w vm.dirty_background_ratio=5
透過這些方法可以較好地平衡記憶體和快取的使用,避免出現因為快取過多和記憶體不足導致的 I/O 壓力。