수색…


낮은 RAM 구성

이제 Android는 512MB RAM의 장치를 지원합니다. 이 설명서는 OEM이 메모리 부족 장치 용으로 Android 4.4를 최적화하고 구성하는 데 도움을주기위한 것입니다. 이러한 최적화 중 일부는 일반적인 릴리스이므로 이전 릴리스에도 적용 할 수 있습니다.

낮은 RAM 장치 플래그 사용

우리는 ActivityManager.isLowRamDevice ()라는 새로운 API를 도입하여 응용 프로그램이 메모리 부족 장치에서 제대로 작동하지 않는 특정 메모리 중심 기능을 해제할지 결정합니다.

512MB 장치의 경우이 API는 다음을 반환해야합니다. "true"장치 메이크 파일의 다음 시스템 속성에서 활성화 할 수 있습니다.

PRODUCT_PROPERTY_OVERRIDES += ro.config.low_ram=true

JIT 사용 안 함

시스템 전체의 JIT 메모리 사용은 실행중인 응용 프로그램의 수와 해당 응용 프로그램의 코드 발자국에 따라 다릅니다. JIT는 최대 변환 된 코드 캐시 크기를 설정하고 필요에 따라 페이지를 수정합니다. JIT는 일반적인 실행 시스템에서 3M에서 6M 정도의 비용이 소요됩니다.

대형 응용 프로그램은 코드 캐시를 상당히 빨리 (기본적으로 1M) 최대로 처리하는 경향이 있습니다. 평균적으로 JIT 캐시 사용량은 앱 당 100K에서 200K 바이트 사이에서 실행됩니다. 캐시의 최대 크기를 줄이면 메모리 사용에 다소 도움이 될 수 있지만 너무 낮게 설정하면 JIT가 스 래싱 모드로 전송됩니다. 실제로 메모리가 부족한 장치의 경우 JIT를 완전히 비활성화하는 것이 좋습니다.

제품 메이크 파일에 다음 줄을 추가하여이 작업을 수행 할 수 있습니다.

PRODUCT_PROPERTY_OVERRIDES += dalvik.vm.jit.codecachesize=0

CPU 거버너를 추가하는 방법

CPU 조정자 자체는 단지 1 C 파일이며 kernel_source / drivers / cpufreq /에 있습니다 (예 : cpufreq_smartass2.c). 총재를 찾아야합니다 (귀하의 장치에 대한 기존 커널 repo를보십시오). 그러나이 파일을 성공적으로 호출하고 커널에 컴파일하려면 다음과 같이 변경해야합니다 :

  1. 거버너 파일 (cpufreq_govname.c)을 복사하고 kernel_source / drivers / cpufreq로 이동하여 붙여 넣으십시오.
  2. 커널을 추가 할 때 Kconfig (config 메뉴 레이아웃의 인터페이스)를 열면 설정에 나타나기를 원할 것입니다. 총재 보좌역을 추가함으로써 그렇게 할 수 있습니다.
config CPU_FREQ_GOV_GOVNAMEHERE
tristate "'gov_name_lowercase' cpufreq governor"
depends on CPU_FREQ
help
governor' - a custom governor!

예를 들어, smartassV2.

config CPU_FREQ_GOV_SMARTASS2
 tristate "'smartassV2' cpufreq governor"
 depends on CPU_FREQ
 help
 'smartassV2' - a "smart" optimized governor! 

선택 사항을 추가 할 때, 주지사가 기본 주지사로 선출 될 가능성을 선언해야합니다.

 config CPU_FREQ_DEFAULT_GOV_GOVNAMEHERE
 bool "gov_name_lowercase"
 select CPU_FREQ_GOV_GOVNAMEHERE
 help
 Use the CPUFreq governor 'govname' as default.

예를 들어, smartassV2.

config CPU_FREQ_DEFAULT_GOV_SMARTASS2
 bool "smartass2"
 select CPU_FREQ_GOV_SMARTASS2
 help
 Use the CPUFreq governor 'smartassV2' as default.

- 그것을 놓을 적당한 장소를 찾을 수 없습니까? “CPU_FREQ_GOV_CONSERVATIVE” 검색하고 그 아래에 코드를 “CPU_FREQ_DEFAULT_GOV_CONSERVATIVE” 대해 똑같은 계산이됩니다.

Kconfig가 완료되었으므로 파일을 저장하고 닫을 수 있습니다.

  1. /drivers/cpufreq 폴더에있는 동안 Makefile을 엽니 다. Makefile에 CPU Governor에 해당하는 행을 추가하십시오. 예 :
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS2)    += cpufreq_smartass2.o

네이티브 C 파일을 호출하지 말고 O 파일을 호출하십시오! 컴파일 된 C 파일입니다. 파일을 저장하십시오.

  1. 이동 : kernel_source/includes/linux . 이제 cpufreq.h 엽니 다. 다음과 같이 나타날 때까지 아래로 스크롤하십시오.
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND)
 extern struct cpufreq_governor cpufreq_gov_ondemand;
 #define CPUFREQ_DEFAULT_GOVERNOR    (&cpufreq_gov_ondemand)

(다른 cpu 주지사도 거기에 나열되어 있습니다)

이제 선택한 CPU 거버너로 항목을 추가하십시오 (예 :

#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS2)
 extern struct cpufreq_governor cpufreq_gov_smartass2;
 #define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass2)

파일을 저장하고 닫습니다.

이제 초기 CPU 조정자 설정이 완료되었습니다. 모든 단계를 성공적으로 완료하면 메뉴 ( menuconfig , xconfig , gconfig , nconfig )에서 조정자를 선택할 수 있어야합니다. 메뉴에 체크되면 커널에 포함됩니다.

위의 명령과 거의 동일합니다. smartassV2 및 lulzactive governor commit 추가

I / O 스케줄러

필요한 경우 새 I / O 스케줄러를 추가하여 커널을 향상시킬 수 있습니다. 전 세계적으로 총재와 스케줄러는 동일합니다. 그들은 둘 다 시스템이 어떻게 작동해야 하는지를 제공합니다. 그러나 스케줄러의 경우 CPU 설정을 제외하고는 입출력 데이터 스트림에 관한 것입니다. I / O 스케줄러는 예정된 I / O 활동의 스케줄을 결정합니다. noop 또는 cfq 와 같은 표준 스케줄러는 매우 합리적으로 수행합니다.

I / O 스케줄러는 kernel_source / block 에서 찾을 수 있습니다.

  1. I / O 스케줄러 파일 (예 : sio-iosched.c )을 복사하고 kernel_source / block을 찾으십시오. 거기에 스케줄러 파일을 붙여 넣으십시오.

  2. 이제 Kconfig.iosched을 열고 SIO 예를 들어, kconfig를에 선택 사항을 추가 :

    config IOSCHED_SIO
      tristate "Simple I/O scheduler"
      default y
      ---help---
        The Simple I/O scheduler is an extremely simple scheduler,
        based on noop and deadline, that relies on deadlines to
        ensure fairness. The algorithm does not do any sorting but
        basic merging, trying to keep a minimum overhead. It is aimed
        mainly for aleatory access devices (eg: flash devices).
    
  3. 그런 다음 기본 선택 사항 옵션을 다음과 같이 설정하십시오.

    default "sio" if DEFAULT_SIO
    

    파일을 저장하십시오.

  4. kernel_source / block / 에서 Makefile 을 열고 간단히 SIO에 다음 행을 추가하십시오.

    obj-$(CONFIG_IOSCHED_SIO)    += sio-iosched.o
    

    파일을 저장하면 작업이 완료됩니다! 이제 I / O 스케줄러가 메뉴 config에서 나타납니다.

비슷한 커밋을 GitHub : Simple I / O 스케줄러를 추가했습니다 .



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow