Android
Оптимизация ядра Android
Поиск…
Низкая конфигурация ОЗУ
Android теперь поддерживает устройства с 512 МБ ОЗУ. Эта документация призвана помочь OEM-производителям оптимизировать и настроить Android 4.4 для устройств с малой памятью. Некоторые из этих оптимизаций достаточно универсальны, чтобы их можно было применять и к предыдущим выпускам.
Включить флаг с низким уровнем защиты устройства
Мы вводим новый API под названием ActivityManager.isLowRamDevice () для приложений, чтобы определить, должны ли они отключать определенные функции интенсивной работы с памятью, которые плохо работают на устройствах с низкой памятью.
Для устройств с 512 МБ ожидается, что этот API вернется: «true». Это может быть включено следующим системным свойством в файле makefile.
PRODUCT_PROPERTY_OVERRIDES += ro.config.low_ram=true
Отключить JIT
Общесистемное использование JIT-памяти зависит от количества запущенных приложений и от объема этих приложений. JIT устанавливает максимальный размер кэша кеша и затрагивает страницы в нем по мере необходимости. JIT стоит где-то между 3M и 6M в типичной операционной системе.
Большие приложения стремятся максимально быстро удалить кеш-код (который по умолчанию был 1M). В среднем, использование кеша JIT работает где-то между 100K и 200K байт на приложение. Уменьшение максимального размера кеша может несколько помочь в использовании памяти, но если слишком низкий уровень, он отправит JIT в режим обжатия. Для устройств с очень низкой памятью мы рекомендуем полностью отключить JIT.
Этого можно добиться, добавив следующую строку в файл makefile:
PRODUCT_PROPERTY_OVERRIDES += dalvik.vm.jit.codecachesize=0
Как добавить контроллер процессора
Сам регулятор ЦП - это всего лишь 1 C-файл, который находится в файле kernel_source / drivers / cpufreq /, например: cpufreq_smartass2.c. Вы сами отвечаете за поиск губернатора (смотрите в существующем ядре репо для своего устройства). Но для успешного вызова и компиляции этого файла в ваше ядро вам придется внести следующие изменения:
- Скопируйте файл-регулятор (cpufreq_govname.c) и перейдите на kernel_source / drivers / cpufreq, а затем вставьте его.
- и открыть 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”
к “CPU_FREQ_DEFAULT_GOV_CONSERVATIVE”
Теперь, когда Kconfig закончен, вы можете сохранить и закрыть файл.
- Еще находясь в папке
/drivers/cpufreq
, откройте Makefile. В Makefile добавьте строку, соответствующую вашему контроллеру CPU. например:
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS2) += cpufreq_smartass2.o
Будь то, что вы не вызываете собственный файл C, но файл O! который является скомпилированным C-файлом. Сохраните файл.
- Перейдите в:
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)
(там также перечислены другие регуляторы процессора)
Теперь добавьте свою запись с выбранным контроллером процессора, например:
#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 commandor commit
Планировщики ввода-вывода
Вы можете улучшить свое ядро, добавив новые планировщики ввода-вывода, если это необходимо. В глобальном масштабе правители и планировщики одинаковы; они оба обеспечивают способ работы системы. Однако для планировщиков это все о потоке данных ввода / вывода, за исключением настроек ЦП. Планировщики ввода-вывода решают, как будет запланирована предстоящая операция ввода-вывода. Стандартные планировщики, такие как noop или cfq , выполняют очень разумно.
Планировщики ввода-вывода можно найти в файле kernel_source / block .
Скопируйте файл планировщика ввода-вывода (например, sio-iosched.c ) и перейдите на kernel_source / block . Вставьте туда файл планировщика.
Теперь откройте Kconfig.iosched и добавьте свой выбор в Kconfig , например, для SIO :
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).
Затем установите опцию выбора по умолчанию следующим образом:
default "sio" if DEFAULT_SIO
Сохраните файл.
Откройте Makefile в файле kernel_source / block / и просто добавьте следующую строку для SIO :
obj-$(CONFIG_IOSCHED_SIO) += sio-iosched.o
Сохраните файл, и все готово! Планировщики ввода-вывода должны теперь отображаться в конфигурации меню.
Аналогичная фиксация на GitHub: добавлен простой планировщик ввода-вывода .