리눅스 펌 사용시 최적화 방안

category AndroidOverLinux 2019.05.12 23:14

안녕하세요? 


리눅스 펌웨어를 오랫동안 사용하면서 안정적으로 사용했던 방법에 대해 작성해 보려고 합니다.





1. 시스템 상황


리눅스 펌웨어를 사용할 경우 메모리 부족 문제 때문에 시스템이 뻗는 경우


알 수 없는 에러 때문에 시스템이 뻗는 경우.. 사실 이 문제는 로그를 실시간으로 분석하면서 뻗을 때 나오는 로그 메시지를 봐야 하는데 아직까지 타이밍을 못맞추고 있습니다.


로그가 기록이 되겠지만 저장 방법 자체가 일부 램에 들어가있고 커널단에서는 writeback 이라는 파라미터로 관리하게 됩니다.


즉.. 시스템이 멈춰버리는 순간 로그는 기록되지만 실상 메모리에 기록되기 때문에 답이 안나오는 것입니다 ㅠㅠ


차후에 멈추는 시간을 잘 잡아서 로그를 확인해보고 싶습니다.





2. 메모리 부족 문제


현 리눅스 펌웨어의 경우 메모리가 여유롭지 않습니다.


간단한 서버 패키지들만 올려서 사용하면 크게 문제가 되지 않지만, JAVA 를 올리거나 웹서버에 PHP 를 돌리게 되면 메모리가 많이 부족해집니다.


이러한 문제를 완화하기 위해 기본적으로 800MB ZRAM 이 적용되어 있습니다.





3. 메모리 부족 문제 SWAP 외장 디스크에 추가


U5 가 메모리가 32기가 였다면 좋겠지만, 2기가이기 때문에 아래의 SWAP 을 추가하여 사용합니다.


스왑 메모리는 count 부분으로 용량 조절이 가능하고 마운트 지점이 저는 XFS 파일 시스템을 사용하기 때문에 안드로이드 쪽에서 마운트를 해주지 않습니다.


그래서 /media 에 마운트 한 상태입니다.


dd if=/dev/zero of=/media/swap bs=1M count=2048

mkswap /media/swap

swapon /media/swap


그럼 아래와 같은 구조가 됩니다.



추가적으로 안드로이드를 사용하지 않는 경우 아래와 같이 안드로이드 서비스를 중단함으로써 추가적인 메모리 확보가 가능합니다.


# android service stop

adb shell stop

adb disconnect


안드로이드의 서비스를 종료하고 나면 메모리가 200MB 정도로 쾌적한 상태가 됩니다. 안드로이드 서비스를 종료하더라도 하이실리콘 기본 서비스와 안드로이드의 HW 레이어 프로세스는 동작중이기 때문에 일반 리눅스 설치 상태의 100MB 이하의 꿈의 사용량은 나오지 않습니다.





4. CPU 클럭 문제


본래 하이실리콘 3798CV200 CPU는 MAX 클럭이 1.6GHz 입니다. 그런데 1.6기가로 사용할 경우 미니 제품에서 문제가 발생되어 1.5GHz 로 낮춰놓은 상태입니다.


초기 U5PVR 모델은 1.2GHz 클럭으로 작동하였습니다.


(물론 중간에 CPU 가버너를 통해서 Load 에 따라 클럭이 오르락 내리락 합니다. 400 800 1200 1600)


1.5GHz 로 사용시, 알 수 없는 시스템 멈춤이 발생합니다. 간혹가다가 생깁니다. 업타임을 2일을 넘기는 날을 본적이 없네요.


SDK 의 기본클럭 1.2GHz 도 그렇습니다.



그래서 부팅시 아래의 설정을 통해 800MHz 로 고정하여 사용중입니다.


# change cpu speed

echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor


이후 문제가 없었습니다.


이 부분은 안드로이드만 사용하는 상태에서도 크리티컬한 문제가 될 수 있습니다. 이러한 부분을 방지하기 위해서는 테스트 결과 800MHz 가 적절합니다.





5. 결론


정확하게 CPU 클럭 문제는 무엇이 문제인가? 에 대한 답을 내리지 못했습니다.


온도 때문에 발생하는 것도 아닌것 같고.. 이에 대한 해답이 보이지 않습니다.


일단 안드로이드 사용 시, 성능이 크게 감소하는 문제가 있겠지만, 영상 플레이 목적 유튜브 넷플릭스 정도는 크게 문제 없이 작동할 클럭이라고 생각합니다.


현재 디럭스를 자료 수집 서버로 사용하고 있습니다.


상기 설정으로 한달 가량 무난하게 작동하고 있습니다.


감사합니다.


댓글을 달아 주세요