Android2011.07.25 12:30
크리에이티브 커먼즈 라이선스
Creative Commons License
현재 활용할 수 있는 Speedmod Kernel 기준은 펌웨어 버전 기준 VG14 이다.
갤럭시 S의 최신 펌웨어 버전은 Gingerbread VG14 (글 최종 수정일 기준_110802)버전이다.

Speedmod Kernel 은 XDA Developer 인 Hardcore 라는 사람의 작품이다.
배터리의 효율과 성능을 중요시 한다는 목적으로 만들어진 Custom Kernel 이다.
이러한 Speedmod Kernel 을 국내 갤럭시 S 에 맞게 Kernel Source 를 수정 및 개발하여
배포되고 있는 것이 이카루스 라는 분의 Speedmod Kernel 이다.
http://icarus21.tistory.com/

처음 Kernel 이 나왔을 때는 Speedmod 의 모든 기능을 가져오는 정도에서 지금은
정말 엄청나게 발전하였다.

이카루스 라는 분이 만들고 배포하는 Speedmod Custom Kernel을 이렇다 저렇다 이야기할 정도로
뛰어나게 Android Kernel Source 를 분석할 수준은 안된다. 그렇기에
Speedmod Kernel 을 사용해보고 싶은데 복잡하다고 느껴서 적용이 꺼려진다거나,
사용 중이지만 세부적인 기능들에 대해 잘 모르는 사람들이 혹시라도 읽어보게 된다면
조금이나마 편하게 생각할 수 있을 만한 설명 글 정도의 수준으로 단지 내가 아는 내용을 정리한다.
(기술적인 내용은 위에 있는 이카루스라는 개발자 분의 블로그에 가면 충분히 확인할 수 있다.)

크게 Tegrak Lagfix Kernel 과 다른 점은 별도의 Application 을 사용하여 부팅이 된 상태에서 
조작을 하는것이 아니라, Booting Process 가 완벽히 진행되기 전 상태인 Recovery Mode 상태에서 
여러가지 옵션을 적용하고, 그 옵션에 해당하는 내용을 부팅과정에서 적용을 한다는 것이 다른 점이다.

*) 루팅에 관하여 장점을 가질 수 있다.
진저브레드 부터는 루팅을 한다는게 결코 쉬운일이 아니게 되었다. Ginger Break 는 먹히지 않고, 
Froyo 에서 사용하던 Super One Click 도 통하지 않기 때문에, 루팅용 커널을 사용한다던지, 아니면
커스텀 커널의 루팅기능을 이용해야하기 때문이다. 
이러한 루팅의 장점 중 하나는 
만약, 업그레이드를 통해서 더 이상 해당 커스텀 커널을 사용할 수 없는 상황이 되었을 때
루팅을 할 수 있는 방법이 될 수 있는것이 Speedmod Kernel 이다.
전 버전의 커널을 올리고 리커버리 모드로 들어간 후 루팅을하고 난 후 다운로드 모드로 진입을 하여
최신 버전의 순정커널을 올려버리면 된다. 부팅을 하지 않고 모든 과정에 리커버리 모드에서 마무리가 된다.
(su, superuser.apk 를 설치하고 권한을 부여한다는 등의 루팅에 대한 기본적인 내용은 블로그 첫 글이
루팅이란 무엇인가에 대한 글이었기 때문에 차별화된 부분의 내용만을 적었다.)

*) File System 변경을 통한 Lag-fix 
Tegrak Kernel, Voodoo Kernel 등과 마찬가지로 Lag-fix를 위한 File system 변경이 가능하다.
처음 나왔던 버전에는 /system, /data, /dbdata, /cache partition 모두 각각의 file system 으로 변경이 
가능하였지만, 지금의 버전에서는 /system, /data + /dbdata, /cache 두 영역으로 구분하여 file system
적용이 가능하다. 또 다른 점은 초기 버전에서는 file system 을 ext2, ext4, jfs 등 여러가지 file system 중
유저가 선택하여 적용이 가능하였지만 지금은 rfs <-> ext4 만 가능하다.
Speedmod 의 경우는 중요한 점이 개발자인 이카루스라는 분이 지속적으로 작은 부분까지 업데이트를 
시도하며, 성과를 만들어내고 있다는 점이다. 그렇기에 Speedmod 에 적용되는 ext4 file system module 역시
여타의 다른 ext4 module 에서 성능을 개선한 upgraded ext4 라고 명칭한다.
해당 file system에 대한 기술적 업그레이드 사항은 위에 링크를 걸어놓은 이카루스라는 개발자 분의
Tistory 블로그 글에서 확인할 수 있다.
http://icarus21.tistory.com/entry/TB23-SpeedMod-%EC%BB%A4%EB%84%90-build05-%EB%B0%B0%ED%8F%AC-VSound6FlagWAN%EB%A9%94%EB%AA%A8%EB%A6%AC%ED%82%AC%EB%9F%AC

*) CPU Over-clocking
Speedmod kernel 의 초기버전에서는 CPU Over-clocking 기능을 지원하지 않았다.
그 이유는 아무래도 안정성에 기인한듯하다. CPU 수율에 따라 Over-clocking 을 할 수 있는 한계도 다르고
충분한 CPU Over-clocking 을 위해서는 충분한 전압값이 필요한데, 그것 또한 각 각의 CPU에 따라 
천차만별이라 할 수있다. 그로인해서 일정한 추천 설정값 조차 거의 의미가 없다.
원래 갤럭시 S의 경우는 0.8GHz 의 Single-core CPU 를 자체적으로 1GHz 까지 Over-clocking 하여
탑재하고 있다. 이러한 상태에서 1.2GHz 혹은 1.3GHz 까지 Over-clocking 을 하게되면, 분명히 성능은
향상이 되지만 Hard-ware 적인 문제를 일으킬 수 있는 가능성은 높아지게 된다.
그 이유는 해당 CPU-clock 이 높아짐에 따라 기본 설정값은 mV 값보다 높은 mV로 Device 를 
운영해야하는데 CPU 뿐만아니라 다른 부속기기들 역시 기본적으로 세팅된 값에서만 성능을 보장할 수 
있도록 설계 및 제작되었을 것이기 때문이다.
아무튼 지금의 Speedmod Kernel은 Recovery Mode에서 옵션으로 Over-clocking 을 지원한다.
물론 Over-clocking 이 지원되는 Kernel을 사용하고 있어야 적용이 가능하다.
1.2G, 1.3G, 1.4G, 1.44G 까지 옵션에서 선택하여 CPU Over-clocking 이 가능하다.
단, 해당 옵션을 제외한 Over-clocking Setting은 지원하지 않으며 자체적으로 Tegrak Over-clock Ultimate 처럼
Voltage 까지 Setting 할 수 있는 기능은 가지고 있지 않다.

*) Control Freak Application 을 통한 UV Setting & GPU Over-clocking
Control Freak 이라는 어플은 기존의 Voltage Control 이라는 어플에서 한 단계 업그레이드 된 버전의 어플이다.
Kernel에서 지정된 해당 CPU Clock Setting Level에 따라 Voltage를 설정할 수 있게 해주고, 이 설정 Data를 
/etc/init.d 에 sh file 로 저장하여 Booting Process 에서 Under Voltage Setting Data 가 적용될 수 있도록 해준다.
여기에서 Under Voltage Setting 이란 어려운 개념이 아니다. 단지 CPU 란에서 적었듯이 CPU 가 해당 Clock을
운영하기 위해서는 충분한 Voltage(전압)가 요구된다. Control Freak 어플을 통해서 CPU의 해당 Clock 이 안정적인
운영을 위해 요구하는 최소한의 Voltage Data를 적용하는 것이다. 이 부분에서는 정도가 없다. Kernel에서 Setting 된
기본 Voltage 에서 50mV 혹은 25mV 씩 낮춰가며 Setting 을 하고 Stress Test, Temperature Test 를 통해서 
Freezing 이나 Shut-down 현상이 발생하지 않을 때의 Data 를 찾아야 한다.
그리고 해당 어플에서는 GPU Over-clocking 을 지원한다. 간단히 Graphic을 운영하는 CPU를 Over-clocking 한다고
생각하면 간단하다. 보통 Highest CPU Clock 에서 200 부터 하위 CPU Clock 으로 갈수록 25 혹은 50씩 낮춰서 
사용하는게 대부분의 유저들의 Setting 값인듯 하다. 사실 이분에서 인터넷 사용시 체감 속도가 약간 상승하는것은
느낄 수 있었지만, Clock 값을 조절하여 최적값을 찾으려 할 때 Clock에 따라 크게 체감 성능이 달라지는것을 
느낄수는 없었다.
Control Freak Application 은 XDA 그리고 아래 블로그에서 다운받을 수 있다.
http://icarus21.tistory.com/entry/GPU-Overclock-setting
http://icarus21.tistory.com/entry/OCUV-Guide


*) CPU Governer 변경을 통한 성능향상
Speedmod Kernel 에서 지원하는 CPU Governer 는 
smartass, interactive, interactive x, onedemand, conservative, userspace, powersave, performance 이다.
이 중에서 smartass, interactive, interactive x 를 제외한 나머지는 순정 Kernel 에서도 지원하는 Governer 이다.
각각의 Governer 에 따라 CPU 를 운영하는 방식이 다르다. 각 Governer 에 대한 차이점 등은 구글링을 조금만
하면 충분히 확인할 수 있다.
참고로 진저브레드를 탑재한 갤럭시 모델에는 기본적으로 CPU Governer 는 Onedemand 로 지정되어 있다.
요청이 오면 최대 Clock으로 끌어올려서 Process 를 처리하게 된다. 
다른 부분보다는 최근에 Speedmod 에 적용된 Smartass 와 같은 경우는 최대 Clock 보다는 하위 Clock 에서의
CPU 활동량을 증가시켜서 일정 부분 베터리의 효율을 보상하고 성능을 지향하는 Governer 로 알고있다.
자세한 사항은 아래 링크에서 확인할 수 있다.
실제로 Speedmod Kernel 을 마지막으로 사용할 때의 Setting 하였던 Governer 역시 Smartass 였다.
링크 중 두번째 링크를 따라가면 Smartass governer 에 대한 테스팅 과정에서 테스터 분들의 의견을 읽어볼 수 있다.
http://icarus21.tistory.com/entry/SmartAss-Governor
http://icarus21.tistory.com/entry/0712-Test-SpeedMod-Kernel 
http://icarus21.tistory.com/entry/CPU-Frequency-Governor 


*) I/O Scheduler 변경을 통한 성능향상
Speedmod Kernel 에서는 Upgrade CFQ, BFQ, Deadline, SIO, VR, Noop 라는 6가지의
I/O Scheduler 를 리커버리 모드에서 선택하여 적용할 수 있다.
VG14 버전에 맞게 만들어진 Speedmod Kernel 에서는 주로 Smartass CPU Governer 를 사용하는 경우가
많은데 이 경우, VR I/O Scheduler 가 조합이 잘 맞다고 알려져있다.
하지만, 분명히 I/O Scheduler 의 경우는 체감성능에 있어서 차이가 많은 부분이기 때문에 SIO 를 
더 선호하는 유저들도 많은 듯 하다.
기본적으로 순정상태의 Kernel 에서는 CFQ 를 기본 I/O Scheduler 로 설정한다.
Noop, Deadline, CFQ, Anticipatory 를 주로 사용하는것이 일반적이지만 Speedmod Kernel 에서는
위에서 언급한 6가지의 I/O Scheduler 를 Kernel 에서 지원한다.
두번째 링크를 따라가면 VR I/O Scheduler 에한 설명 글을 읽을 수 있다.
VR I/O Scheduler 는 Deadline 기반의 I/O Scheduler 이기 때문에 I/O Delay 는 적지만 아무래도 access 가
많기 때문에 약간은 Flash Memory 수명에 있어서 단점을 가질 수는 있겠다. 하지만, 무시할 정도로 생각이된다.
아래 링크 글을 읽어보면 기본적인 I/O Scheduler 에 대한 개념은 이해할 수 있다.
http://blog.naver.com/dowkim10/120120221075
http://icarus21.tistory.com/entry/VR-IO-Scheduler
http://icarus21.tistory.com/entry/Upgraded-CFQ-IO-Scheduler 
http://icarus21.tistory.com/entry/BFQ-v2-IO-Scheduler 


*) Sign 된 Update.zip 적용을 통한 /system File 등의 변경

*) zram, miscellaneous battery tweak, sdboost 적용

*) Back-up & Restore

*) init.d 를 통한 Booting 시 sh File의 적용

*) Boot-animation의 적용

*) HZ 증대를 통한 Response Speed 향상

*) Voodoo Sound & Voodoo Color 지원

시간이 되는데로 위에 나열한 내용들을 하나씩 적을 생각이다.
(아마도 별로 시간이 없기 때문에 그나마 점심식사 후 오후 업무 시작 전 시간에만 조금씩 업데이트하여
글을 완성할 듯하다.)

자주가는 스마트폰 사용자들의 사이트를 보면 종종
스피드모드 커널에 대한 궁금증을 가지고 제작자분의 블로그를 찾아가지만 대부분 영어로 기술적 내용이
적혀있는 점과 다른 패치나 커스텀 커널보다 리커버리 모드에서의 조작이 복잡하게 느껴지는 부분 때문에
망설이는 사람들이 있다. 혹시라도 그런 사람들에겐 이 글이 도움이 될지도 모르겠다.

아이러니 하게도...
지금 Speedmod kernel 에 대해서 글을 쓰고 있는데... 한참을 Speedmod Custom Kernel 을 사용하다
지금은 Tegrak Kernel 을 쓰면서 Onenand Mode + Simlink Patch 를 사용하고 있다.
내장 메모리 /system/data/app 로의 심링크 이기 때문에 Tegrak recovery mode에서 /system 영역이
backup & restore 가 되지 않는다.(용량에 대한 제한이 kernel 자체에 걸려있기 때문이다.)
그래서 오늘부터 /sdcard 에 넣어두고 backup & restore 를 할 수 있는 sh file (script)을 만들고 있다.
뭐 조금만 고민하면 금방 만들 수는 있을듯 하다.
영역지정이나 몇가지만 잘 맞추면 될듯하다. sh file 이 완벽히 만들어지고 테스트가 끝나면
관련 내용을 따로 적을 생각이다.
110802 다시 Speedmod 1.2OC SP Kernel 로 돌아왔다.
110805 다시 Tegrak + hackpunch simlink 로 돌아왔다.
윗 글인 Tegrak ondnand mode + /system/data/app simlink 에서 사용할 수 있는 
스크립트 sh file 을 만들고 있기 때문이다.
당분간 speedmod kernel 에 대한 글은 업데이트를 보류하고 스크립트 보완에 집중할 생각이다.

지금 사용하고 있는 락화면이다.
나쁘지 않게 꾸민것 같다.


 
저작자 표시 비영리 변경 금지
신고
Posted by Bulldozer121

티스토리 툴바