엑시노스 갤럭시S4를 루팅후 리틀코어(Cortex-A7, 저전력/저성능/저발열)만 사용하는 법을 알아봅시다.
Exynos 5410 Octa 사용범위
Cortex-A7(CA7): 250~600MHz (실제 500~1200MHz)
Cortex-A15(CA15): 800~1600MHz
확실한 용도로 보이는 항목은 big.LITTLE 오퍼레이터이다.
/dev/b.L_operator
00: Disable switcher
01: LITTLE only
10: big only
11: big.LITTLE
여기서 01(LITTLE only), 10(big only) 모드는 설정해봤자 실제로 활용을 안해서 소용없고,
00(Disable)으로 설정시 CA7, CA15중 활동중인 클러스터에서 잠기게 된다.
CA7이 활성화 되도록 잠깐 널널한 상태로 놔두고
echo 00 > /dev/b.L_operator
... 이렇게 해도 되지만,
CA7 활성 상태에서 scaling governor가 600MHz 위의 frequency로 올라가야 한다고 판단할 때
엑시노스 드라이버는 CA15을 켜기위해 클러스터 스위치를 시도하게 되고,
이것이 실패하면서 기존 frequency 그대로 머물게 된다.
frequency가 600MHz까지는 증가해줘야 하지만 그것이 제대로 이루어지지 않는다.
(예: 250MHz 상태에서 800MHz로 올리려 할 때 250MHz 그대로 머물러 버림)
그러므로 위의 big.LITTLE 오퍼레이터 옵션을 조정하기보다는
아래와 같이 하면 좀 더 제대로 활용이 가능하다.
echo 600000 > /sys/devices/system/cpu/cpufreq/iks-cpufreq/max_freq
이렇게 되면 후에 600MHz 이상의 frequency를 요청할 때,
엑시노스 드라이버가 최대 frequency 값을 600MHz로 제한하게 된다.
설정 후 한 번이라도 600MHz 이하로 내려가고 나면 더 이상 CA15은 켜지지 않는다.
이제 CA7만을 제대로 활용할 수 있을 것이다.
이런, 역시나 삼성이 시스템 영역에서 강제로 최대/최소 클럭을 상황에 따라 바뀌도록 해놨다 -_-
시스템은 libhardware_legacy.so, libpower.so에서 컨트롤한다.
min_freq의 경우 고정을 해도 커널 내부에서 따로 조절하는 부분이 있기에 상황에 따라 올라가기도 한다.
대표적으로 GPU 클럭이 최대치가 되면 커널 내부에서 min_freq를 600MHz로 잠그게 된다.
또한 터치스크린이 동작할때도 min_freq가 600MHz로 잠기게 된다.
다행히도(?) max_freq는 커널 내부에서 따로 건드리지 않아주어서...
mount -o remount -w system /system
busybox cp /system/lib/libhardware_legacy.so /system/lib/libhardware_legacy.so.bak
busybox sed 's/max_freq/fakefreq/' /system/lib/libhardware_legacy.so.bak > /system/lib/libhardware_legacy.so
busybox cp /system/lib/libpower.so /system/lib/libpower.so.bak
busybox sed 's/max_freq/fakefreq/' /system/lib/libpower.so.bak > /system/lib/libpower.so
리부팅 후 계속
chown root.root /sys/devices/system/cpu/cpufreq/iks-cpufreq/max_freq
chmod 0644 /sys/devices/system/cpu/cpufreq/iks-cpufreq/max_freq
echo 600000 > /sys/devices/system/cpu/cpufreq/iks-cpufreq/max_freq

잘 된다 ^___^
장점: 게임을 아무리 돌려도 기분좋을 정도로만 따뜨시~하다. 배터리 온도는 30~32도쯤
단점: 아무래도 순간적으로 높은 성능이 필요한 사용되는 구간에서 조금 끊기는 삘이 있다.
written by 테그라크
Exynos 5410 Octa 사용범위
Cortex-A7(CA7): 250~600MHz (실제 500~1200MHz)
Cortex-A15(CA15): 800~1600MHz
확실한 용도로 보이는 항목은 big.LITTLE 오퍼레이터이다.
/dev/b.L_operator
00: Disable switcher
01: LITTLE only
10: big only
11: big.LITTLE
여기서 01(LITTLE only), 10(big only) 모드는 설정해봤자 실제로 활용을 안해서 소용없고,
00(Disable)으로 설정시 CA7, CA15중 활동중인 클러스터에서 잠기게 된다.
CA7이 활성화 되도록 잠깐 널널한 상태로 놔두고
echo 00 > /dev/b.L_operator
... 이렇게 해도 되지만,
CA7 활성 상태에서 scaling governor가 600MHz 위의 frequency로 올라가야 한다고 판단할 때
엑시노스 드라이버는 CA15을 켜기위해 클러스터 스위치를 시도하게 되고,
이것이 실패하면서 기존 frequency 그대로 머물게 된다.
frequency가 600MHz까지는 증가해줘야 하지만 그것이 제대로 이루어지지 않는다.
(예: 250MHz 상태에서 800MHz로 올리려 할 때 250MHz 그대로 머물러 버림)
그러므로 위의 big.LITTLE 오퍼레이터 옵션을 조정하기보다는
아래와 같이 하면 좀 더 제대로 활용이 가능하다.
echo 600000 > /sys/devices/system/cpu/cpufreq/iks-cpufreq/max_freq
이렇게 되면 후에 600MHz 이상의 frequency를 요청할 때,
엑시노스 드라이버가 최대 frequency 값을 600MHz로 제한하게 된다.
설정 후 한 번이라도 600MHz 이하로 내려가고 나면 더 이상 CA15은 켜지지 않는다.
이제 CA7만을 제대로 활용할 수 있을 것이다.
이런, 역시나 삼성이 시스템 영역에서 강제로 최대/최소 클럭을 상황에 따라 바뀌도록 해놨다 -_-
시스템은 libhardware_legacy.so, libpower.so에서 컨트롤한다.
min_freq의 경우 고정을 해도 커널 내부에서 따로 조절하는 부분이 있기에 상황에 따라 올라가기도 한다.
대표적으로 GPU 클럭이 최대치가 되면 커널 내부에서 min_freq를 600MHz로 잠그게 된다.
또한 터치스크린이 동작할때도 min_freq가 600MHz로 잠기게 된다.
다행히도(?) max_freq는 커널 내부에서 따로 건드리지 않아주어서...
mount -o remount -w system /system
busybox cp /system/lib/libhardware_legacy.so /system/lib/libhardware_legacy.so.bak
busybox sed 's/max_freq/fakefreq/' /system/lib/libhardware_legacy.so.bak > /system/lib/libhardware_legacy.so
busybox cp /system/lib/libpower.so /system/lib/libpower.so.bak
busybox sed 's/max_freq/fakefreq/' /system/lib/libpower.so.bak > /system/lib/libpower.so
리부팅 후 계속
chown root.root /sys/devices/system/cpu/cpufreq/iks-cpufreq/max_freq
chmod 0644 /sys/devices/system/cpu/cpufreq/iks-cpufreq/max_freq
echo 600000 > /sys/devices/system/cpu/cpufreq/iks-cpufreq/max_freq
잘 된다 ^___^
장점: 게임을 아무리 돌려도 기분좋을 정도로만 따뜨시~하다. 배터리 온도는 30~32도쯤
단점: 아무래도 순간적으로 높은 성능이 필요한 사용되는 구간에서 조금 끊기는 삘이 있다.
written by 테그라크
댓글