ExTweaks for SiyahKernel

Тема в разделе "Прошивка Samsung Galaxy S2 (II)", создана пользователем goriacheff, 3/9/12.

  1. goriacheff
    Offline

    goriacheff Модератор

    ExTweaks версия: 0.21

    1599707.png 1599710.png 1599711.png

    Для функционирования программы необходимы права root пользователя.


    Универсальный интерфейс для конфигурирования ядра Siyah

    Управление чувствительностью тач скрина;
    Управление минимальным - максимальным уровнем яркости экрана;
    Управления говернорами;
    Управление частотами ядра;
    Управление режимом ввода вывода;
    Управление напряжениями питания GPU;
    Управление током зарядки.


    Разработчик

    Настройка ExTweaks на примере siyah kernel 3.3.3d Настройка

    Некоторая информация для понимания настроек CPU. Информация носит общий ознакомительный характер, а не только применительно к данной программе.
    Первоисточник
    Оригинал статьи

    Governor, или то, о чем Вы знали, но боялись спросить (Часть первая)

    Хочу представить вашему вниманию всеобъемлющий гайд касательно настройки вашего Android-смартфона. Такие дебри не снились даже вашему прадедушке!
    На данный момент - лишь первая его часть, посвященная такой вещи как Governor (управляющий/регулятор/правитель/начальник/заведующий - называйте как хотите). Итак, что же это? Давайте разберемся в этом крайне важном и животрепещущем вопросе. Возможно, вы поймете, что менять ядра - далеко не всегда лучший вариант (который находится у вас под носом, на самом-то деле).
    Гайд написан посетителем портала xda-developersdroidphile, и, как говорится, вся слава ему - я лишь переводчик. Достаточно много технических моментов я опустил, ибо считаю необязательным их знать (и так много информации для первого раза).
    Хватит прелюдий, начнем пожалуй.
    Большинство из нас хлебом не корми - дай лишь что-нибудь прошить. И, надо заметить, мы не пренебрегаем такой возможностью ;)
    После прошивки ядра мы, скорее всего, задаемся вопросами:

    Q1. Окей, я прошил это NN-ое ядро. Что за говернеры такие, о которых все говорят и пишут? Как мне определить, какой лучше подходит мне? Как лучше мне их настроить - с упором на производительность, время жизни аппарата от батарейки, или может лучше "золотая середина"?

    Q2. Различные модули, сопутствующие тому или иному ядру, смущают и сбивают меня с толку. Как мне лучше их использовать, стоит ли заморачиваться по этому поводу, или может лучше их просто игнорировать?

    Q3. Какую роль выполняет i/o scheduler (i/o планировщик)? Какой из них лучше для меня?"

    Q4. Могу ли я иметь больше контроля над процессором и иже с ним? Могу ли я управлять видеочипом, шиной и т.д.?"

    Ответы на эти и многие другие вопросы вы сможете найти здесь (по крайней мере, я на это надеюсь). Для примера я рассмотрю Siyah kernel (лучшее, на мой взгляд, ядро для SGSII - прим. перевод.).

    Вся ниже находящаяся информация также полезна любым другим пользователям. Здесь вы найдете исчерпывающую информацию почти что обо всем.
    1. GOVERNORS

    I) Рассмотрим 18 основных говернеров (есть и другие, но, как правило, они являются крайне специфичными - прим. перевод.).

    1) Ondemand
    2) Ondemandx
    3) Conservative
    4) Interactive
    5) Interactivex
    6) Lulzactive
    7) Smartass
    8) SmartassV2
    9) Intellidemand
    10) Lazy
    11) Lagfree
    12) Lionheart
    13) LionheartX
    14) Brazilianwax
    15) SavagedZen
    16) Userspacce
    17) Powersave
    18) Performance


    1) Ondemand:
    Стандартный говернер в большинстве стоковых ядер (или ядер от Chainfire - прим. перевод). Основная цель данного регулятора - повышать частоту до максимальной как только появляется нагрузка на процессор, дабы обеспечить максимальную отзывчивость системы. Бесспорно, это эффективно - грубо говоря, каждый раз данный говернер ставит перед собой вопрос: насколько нагружен процессор и стоит ли мне повышать частоту? Итак, при обнаружении нагрузки на процессор ondemand говернер повышает частоту процессора до максимальной и постепенно понижает ее когда нагрузка спадает/пропадает вовсе. Даже несмотря на то, что большая часть пользователей считает данный говернер оптимальным, он никак не заботится о расходе вашей батарейки. Да, система с ним быстро работает, но зачастую (почти всегда) ресурсы процессора расходуются вхолостую.

    2) Ondemandx:
    В большинстве случаев - обычный ondemand с профилями для сна. Этот говернер представляет из себя чуть более щадящий ваш бесценный заряд батарейки ondemand. При выключенном дисплее максимальная частота процессора ограничивается 500МГц. Однако, несмотря на то, что обычный ондеманд является стандартным говернером в стоковых ядрах, ондемандх далеко не на всех аппаратах работает хорошо, ибо тут критична возможность процессора быстро реагировать на смену нагрузки и переход от профиля для сна в рабочий. Я однажды где-то прочитал, что работа данной версии говернера очень сильно меняется и зависит от i/o планировщика, однако для большинства ядер это не так. Лично мое мнение - лучше всего ондемандх работает с SIO I/O планировщиком.

    3) Conservative:
    "Медленная" версия ондеманд, крайне неохотно повышающая частоту процессора. При отсутствии нагрузки данный говернер использует минимально доступную частоту постоянно.

    4) Interactive:
    Если вкратце, то это более быстрый ондеманд. Намного быстрее, меньше батарейки. Ключевое отличие от ондеманда - говернер определяет нагрузку при выходе из режима сна и работает на заданной частоте большую часть времени до следующего "сна".

    5) Interactivex:
    Аналогично ондемандх - интерактив с профилем для "сна". Меньше расходует батарейку.

    6) Lulzactive:
    "Изобретен" пользователем с никнеймом Tegrak и основан на Interactive & Smartass governors и является одним из любимых.
    Старая версия: когда нагрузка эквивалентна или приближена к 60%, говернер повышает частоту до следующей доступной частоты. Если же нагрузка меньше 60%, то частота понижается до следующей доступной планки. При отключенном дисплее частота останавливается на минимально доступной и не повышается.
    Новая версия: имеет три новых параметра, доступных пользователю для настройки: inc_cpu_load, pump_up_step, pump_down_step. В отличие от старой версии, эта, как логично предположить, позволяет больше управлять работой говернера. Мы можем сами задать промежуток, в котором говернер будет решать, повышать или понижать частоту. Мы так же можем сами выбрать и настроить количество доступных частот, до которых говернер будет повышать/понижать работу процессора.
    Когда нагрузка выше inc_cpu_load, говернер повышает CPU pump_up_step. Когда нагрузка ниже заданной в параметре inc_cpu_load, говернер понижает CPU pump_down_step.
    Пример:
    Consider
    inc_cpu_load=70
    pump_up_step=2
    pump_down_step=1


    7) Smartass:
    Появился благодаря работе пользователя Erasmux, который целиком переписал код интерактив говернера, основной задачей была поставлена продолжительная работа от батарейки без потери производительности. Однако, не так хорош для заряда батареи нежели его преемник smartassV2.

    8) SmartassV2:
    Вторая версия оригинального смартэсс от Erasmux. Еще один любимец большинства. Говернер расчитан на работу на "идеальной частоте" и повышает частоту несколько более агрессивно, нежели понижает. Используются различные "идеальные" частоты для скрин-он и скрин-офф профилей, называются awake_ideal_freq и sleep_ideal_freq. Данный говернер понижает частоту очень быстро (дабы достичь той самой "идеальной частоты", прописанную в параметре sleep_ideal_freq как можно скорее) при выключенном дисплее и достаточно быстро повышает частоту при включенном дисплее дабы достич "идеальной" частоты awake_ideal_freq (500 mhz для SGS2 по умолчанию). Не имеет ограничения на максимальную частоту при отключенном дисплее (в отличии от оригинального Smartass). Мантра данного говернера - баланс между энергопотреблением и производительностью.

    9) Intellidemand:
    Intellidemand, так же известный как Intelligent Ondemand от пользователя Faux это, как несложно догадаться, еще один говернер, основанный на ондеманд. В отличии мнения большинства, данный говернер не влияет на OC Daemon (имеет различные профили для сна и скрин-он). Оригинальный интеллидеманд реагирует на нагрузку GPU. Когда графический чип уже под нагрузкой (игры, карты, бенчмарки и иже с ними), intellidemand начинает работать как ondemand. Когда же GPU 'спит' (или слабо нагружен), intellidemand ограничивает макимальную частоту в зависимости от частот доступных на вашем ядре/устройстве для сохранения батарейки - так называемый "browsing" режим. Прослеживаются некоторые следы интерактив говернера, не находите? Частота для повышения зависит от времени простоя CPU. Низкое время простоя (<20%) заставляет CPU повышать данную частоту (шаги примерно по 5% от максимально доступной частоты).
    Подводя итог вышепереведенной белиберде, это оттвиканный ондеманд, который работает большую часть времени в browsing-режиме, сохраняя заряд вашей батарейки и переходящий в "рабочий" режим при получении нагрузки на графический чип, дабы улучшить производительность в играх и подобных им приложениях. Intellidemand не повышает частоту до максимально возможной при отключенном дисплее.

    10) Lazy:
    Этот говернер от Ezekeel (один из наиболее широко мыслящих разработчиков ядер - прим. перевод.) это, в большинстве своем, ондеманд с новым значением min_time_state, введеным для определения минимального времени, по прошествии которого CPU меняет частоту выше/ниже, в зависимости от нагрузки. Главная идея - исключить нестабильные постоянные скачки ондеманда.

    11) Lagfree:
    Лагфри похож на ондеманд. Основное отличие в оптимизации для улучшения энергопотребления. Частоты грациозно меняются, в отличии от ондеманда, который прыгает до 100% слишком часто. Лагфри не "перепрыгивает" через какие-либо доступные частоты при повышении или понижении нагрузки, потому вам стоит помнить, что при необходимости мгновенно получить максимальное быстродействие, данные говернер - не ваш выбор.

    12) Lionheart:
    Lionheart основан на conservative-версии говернера, который, в свою очередь, основан на samsung's update3 сорсах. Оттвикан был следующими пользователями: 1) Knzo 2) Morfic. Автор идеи: Netarchy. Смотрите здесь.

    To 'experience' Lionheart using conservative, try these tweaks:sampling_rate:10000 or 20000 or 50000, whichever you feel is safer. (transition latency of the CPU is something below 10ms/10,000uS hence using 10,000 might not be safe).up_threshold:60down_threshold:30freq_step:5Лайонхарт хорошо работает с deadline i/o scheduler. В общем и целом по ощущениям это сравнимо с ондемандом при меньшем энергопотреблении (но куда как более высоком, нежели консерватив).

    13) LionheartX
    LionheartX основан на обычном лайонхарте, однако имеет профиль простоя от Smartass говернера.

    14) Brazilianwax:
    Аналогичен smartassV2. Чуть более агрессивно скейлит частоты, что выливается в чуть лучшую производительность и чуть меньшее кол-во времени работы.

    15) SavagedZen:
    Еще один основанный на smartassV2 говернер. В сравнении с бразиллианвакс предстает в лучшем свете из-за лучшего энергопотребления без потери производительности.

    16) Userspace:
    В отличии от всех перечисленных выше (и ниже) говернеров, позволяет целиком и полностью настроить его работу.

    17) Powersave:
    Понижает максимальную частоту до минимально доступной, тем самым потребляет очень мало энергии, но ваше устройство будет чудовищно лагать при нагрузке чуть более высокой, нежели минимальная (прим. перевод.).

    18) Performance:
    Работает с точностью да наоборот как паверсейв - устанавливает минимальную частоту на максимально доступную. Используйте для бенчмарков! (аппарат очень сильно греется, может зависнуть при долгой нагрузке - прим. перевод.)

    Итак, можно разбить все вышеперечисленные говернеры на 3 группы:
    1.a) Основанные на Ondemand'е:
    Ondemand, OndemandX, Intellidemand, Lazy, Lagfree.
    1.B) Conservative Based:
    Conservative, Lionheart, LionheartX
    2) Interactive Based:
    Interactive, InteractiveX, Lulzactive, Smartass, SmartassV2, Brazilianwax, SavagedZen.
    3) Странная категория (входят в стандартный набор доступных говернеров на большинстве стоковых ядер):
    Userspace, Powersave, Performance.

    __________________________________________________ __________________________________________________ ____________

    II) ВОПРОСЫ:

    Q. Так, ладно, хватит всей этой непонятной высокопарно-гиковской чуши. Просто ответь мне на вопрос: какой говернер лучше использовать для наилучшего энергопотребления без большого ущерба производительности?
    A. Сложный вопрос, на самом-то деле! lulzactive и smartassV2 для баланса между энергопотреблением и производительностью. Для легких задач лулзактив должен быть более дружелюбен к батарейке. Как, впрочем, и для тяжелых задач. Дабы получить максимальную производительность, используйте настроенный ондеманд или консерватив, но в таком случае не стоит жаловаться на энергопотребление! ВНИМАНИЕ: лулзактив не так просто настроить, так что если у вас не получается это сделать, то лучше не трогайте его, иначе вы ничего не получите толком!

    Q. Ох, я почти забыл. Как мне менять говернеры
    A. Лучший способ - использовать init.d скрипт, если ваше ядро поддерживает их. (echo "governor-name" > /sys/devices/system/cpu/cpu0/cpufreq /scaling_governor) Иначе пользуйтесь такими программами, как Voltage Control/SetCpu/No Frills/Antuntu CPU Master, и т.д..

    Q. Как я пойму, какой говернер лучше лично для меня?
    A. (Здесь было много информации, которую я ревампнул). Тестируйте, господа, и только так!

    Q. "Окей, я установил мой любимый говернер для скрин-он профиля и другой для скрин-офф. Почему, черт подери, мой телефон не хочет просыпаться? Мне приходится перезапускать свой аппарат каждый раз после "сна"! Это так называемый SoD (Sleep of Death, сон смерти/смертельный сон)?
    A. Да, это именно он. Не используйте два разных говернера вместе, если у них у обоих есть профили для "сна".
    Непонятно? Вот вам примеры неправильных комбинаций: (screen-on:screen-off):-
    ondemandX:smartassV2
    Примеры правильных комбинаций:-
    ondemand:smartassV2, lulzactive:smartassV2

    Q. При прокрутке рабочих столов аппарат подлагивает, могу ли я уменьшить или избавиться целиком от данной проблемы?
    A. Да, вы можете. Увеличьте down-sampling-time вашего говернера (whichever parameter that corresponds to), дабы процессор дольше не снижал частоту. Это должно избавить вас от мучений при скроллинге.

    Q. Окей. Меня устраивает принцип работы данного говернера, но я хотел бы настроить его под себя. Как мне это сделать?
    A. Для настройки говернера вам нужно изменить init.d скрипт:
    /sys/devices/system/cpu/cpufreq/name-of-active-governor/name-of-the-paramater-to-tweak
    Пример:
    echo "20000" /sys/devices/system/cpu/cpufreq/lulzactive/up_sample_time

    Q. Я собираюсь поставить минимально доступную частоту 100МГц, так как мое ядро позволяет это сделать. Надеюсь, с этим не будет никаких проблем.
    A. Погодите-ка! Вы, возможно, не захотите использовать данную частоту для скрин-оф профиля или для скрин-он из-за нескольких причин: 1) 100 МГц зачастую потребляет больше энергии, нежели 200 МГц. Судя по проведенным тестам, 100 МГц равноценно потреблению 1W/ГГц и 200 МГц лишь 0.7/ГГц, при работе обоих ядер. Так же, 200МГц-частота позволяет быстрее закончить ту или иную задачу, тем самым позволяя телефону быстрее уйти в глубокий сон (deep idle). Для СГС2 частота 200МГц - самая "сладкая".

    Q. Я хотел бы узнать, как еще можно понизить энергопотребление моего аппарата. Я уже настроил говернер, но все равно не удовлетворен результатами.
    A. Поверьте мне на слово - лучше всего ограничить максимальную частоту 800-100МГц, ибо их хватает для большинства ежедневных задач и приложений "за глаза" (данное условие применимо к большинству телефонов - прим. перевод.)

    Q. Я хотел бы повысить производительность своего телефона без большого ущерба времени работы. Что вы можете посоветовать?
    A. Используйте для скрин-он профиля 500-800/100 МГц частоты. Поверьте, 500МГц не так сильно скажется на времени работы, при этом пользоваться аппаратом станет гораздо приятнее!



    ПРИМ. ПЕРЕВОДЧИКА:
    есть еще такая функция в новых ядрах, как Hotplug (и ядра с аналогичным названием). Данная технология при ее активации позволяет сильно продлить время жизни аппарата при выключенном дисплее - она позволяет отключить одно ядро.


    Продолжаем изучать ядро и его возможности (часть вторая)


    2. ПРИМЕРЫ ТВИКОВ ГОВЕРНЕРА


    III) ПАРАМЕТРЫ И ТВИКИ:


    [В оригинале рассмотрены Ondemand, Conservative, SmartassV2, Lulzactive и Interactive, так как являются наиболее распространенными, в переводе же ограничимся меньшим кол-вом (только для получения общего понимания ситуации)]


    У разных говернеров имеются различные параметры, но обычно понять работу того или иного несложно - достаточно знать азы. В лучшем случае, говернер будет иметь следующие параметры:




    Sampling Time/Rate
    Thresholds




    1.ONDEMAND
    [ Параметры ]
    I) sampling_rate - Измеряется в uS и отвечает за частоту обращения ядра к нагрузке на процессор для принятия решения, что делать с частотой. Более высокое значение означает меньшее кол-во обращений.
    II) up_threshold - Измеряется в процентах, от 1 до 100, и когда процессор достигает заданного процента, говернер повысит частоту. Более высокие значения означают меньшую отзывчивость и меньшие значения наоборот, в ущерб батарейке.
    III) powersave_bias - По умолчанию значение равно 0. Установка более высокого значения "отклонит" говернер на меньшие "ступеньки" между сменой частот. Используйте данный параметр если хотите, чтобы процессор затрачивал меньше времени на высоких частотах (однако лучше будет просто понизить максимальную частоту процессора, нежели использовать данный параметр для меньшего энергопотребления).
    IV) sampling_down_factor - Определяет, как часто процессор должен находится на повышенной частоте, когда действительно имеет какую-либо нагрузку. Стандартная задача - быстро понижать частоту. Если установить данный параметр на 1, то ничего не изменится, если только это не нестандартный ондеманд, число же выше 1 начинает работать как множитель для интервала обновления нагрузки на процессор при работе оного на максимально доступной частоте. Данное значение увеличивает производительность, позволяя процессору дольше находится на максимальной частоте при реальной нагрузке на него, нежели понижая частоту при небольшом спадении нагрузки (допустим, смена динамичной сцены на спокойную в игре - прим. перевод.)
    V) down_differential - В данном посте от AndereiLux можно подробно прочитать про данный параметр.
    [ Примеры твиков ]
    I) Для лучшего энергосбережения:


    Для того, чтобы направить ондеманд на энергосбережение, надо выставить высокие значения в up-thresholds и sampling-rate. В данном раскладе, процессор будет повышать частоту реже, как и проверять надобность в данном действии.
    Code:
    echo "95" /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
    echo "120000" > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
    echo "1" > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
    echo "5" > /sys/devices/system/cpu/cpufreq/ondemand/down_differential
    II) Для повышения производительности:


    Установите низкие значения up-thresholds и понизьте sampling-rate.
    Code:
    echo "70" > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
    echo "40000" > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
    echo "2" > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
    echo "15" > /sys/devices/system/cpu/cpufreq/ondemand/down_differential

    2.LULZACTIVE
    1. Оригинальная (первая) версия:
    [ Параметры ]
    I) down_sampling_time - Время, допустимое для понижения частоты процессора.
    II) up_sampling_time - Время, допустимое для повышения частоты.
    [ Примеры твиков ]
    К сожалению, изначальная версия не дает пользователю особо много контроля. Мы можем настроить лишь как часто процессор будет повышать или понижать частоту. Используйте повышенные значения параметра down_sampling_time если вы испытываете подлагивания при скроллинге, браузинге и т.д. Лучше использовать стандартное значение и/или поддерживайте значение down_sampling пропорционально значению в параметре up_sampling. Например: 2x24000=48,000 или 3x24000=72000.
    2. Вторая версия:
    [ Параметры ]
    I) inc_cpu_load - В предыдущей версии данный параметр был "залочен" на значении 60. Теперь же вы имеете возможность настроить его. Это переодичность, с которой говернер изменяет частоту процессора выше/ниже. Нагрузка меньше < inc_cpu_load: частота процессора снижается. Нагрузка выше >= inc_cpu_load: частота повышается.
    II) pump_up_step - Не повышать частоту при нагрузке >= inc_cpu_load
    III) pump_down_step - Не понижать частоту при нагрузке < inc_cpu_load
    IV) screen_off_min_step - Шаги в таблице частот, которые будут использованы при выключенном дисплее.
    V) up_sample_time - Аналогично первой версии. (Допустимые значения от 10,000 до 50,000)
    VI) down_sample_time - Аналогично первой версии. (Допустимые значения от 10,000 до 100,000)
    [ Примеры твиков ]
    I) Для лучшего энергосбережения:
    Code:
    echo "90" > /sys/devices/system/cpu/cpufreq/lulzactive/inc_cpu_load
    echo "1" > /sys/devices/system/cpu/cpufreq/lulzactive/pump_up_step
    echo "2" > /sys/devices/system/cpu/cpufreq/lulzactive/pump_down_step
    echo "50000" > /sys/devices/system/cpu/cpufreq/lulzactive/up_sample_time
    echo "40000" > /sys/devices/system/cpu/cpufreq/lulzactive/down_sample_time
    echo "6" > /sys/devices/system/cpu/cpufreq/lulzactive/screen_off_min_step
    Данный твик позволяет говернеру постепенно повышать частоту процессора и быстро снижать при низкой нагрузке.
    II) Для повышения производительности:
    Code:
    echo "60" > /sys/devices/system/cpu/cpufreq/lulzactive/inc_cpu_load
    echo "4" > /sys/devices/system/cpu/cpufreq/lulzactive/pump_up_step
    echo "1" > /sys/devices/system/cpu/cpufreq/lulzactive/pump_down_step
    echo "10000" > /sys/devices/system/cpu/cpufreq/lulzactive/up_sample_time
    echo "70000" > /sys/devices/system/cpu/cpufreq/lulzactive/down_sample_time
    echo "5" > /sys/devices/system/cpu/cpufreq/lulzactive/screen_off_min_step
    III) Сбалансированный вариант:
    Code:
    echo "90" > /sys/devices/system/cpu/cpufreq/lulzactive/inc_cpu_load
    echo "4" > /sys/devices/system/cpu/cpufreq/lulzactive/pump_up_step
    echo "1" > /sys/devices/system/cpu/cpufreq/lulzactive/pump_down_step
    echo "10000" > /sys/devices/system/cpu/cpufreq/lulzactive/up_sample_time
    echo "40000" > /sys/devices/system/cpu/cpufreq/lulzactive/down_sample_time
    echo "5" > /sys/devices/system/cpu/cpufreq/lulzactive/screen_off_min_step
    Замечание: Если вы слишком ленивы, дабы прописывать данные скрипты руками, для настройки именно этого говернера есть приложение в Google Play: https://play.google.com/store/apps/details?...grak.lulzactive

    IV) ГАЙД ПО INIT.D СКРИПТАМ

    При прочитывании вышеупомянутых твиков, вы, скорее всего, задавались вопросом - WTF что это? Так что вот вам ответы:
    Если вы уже знакомы с данной темой, можете спокойно не читать данный подраздел.
    Загрузка Android ОС может быть разделена на три части:
    1) Запускается бутлоадер.
    2) Загружается ядро, которое, в свою очередь, загружает различные драйвера, подготавливает "железо" к работе и т.д.
    3) Запускаются программы и init.d скрипты (так же и прочие части для работы непосредственно ОС)
    Большинство кастомных ядер поддерживают инит.д скрипты. Некоторые девелоперы делают так, что запускаются только скрипты, название которых начинается на "S". Другие выбирают какую-либо папку или место на дисковом пространстве, откуда будут запускаться скрипты.
    Init.d скрипты находятся в директории /system/etc/init.d (или /etc/init.d)

    ГАЙД:
    Первая линия любого скрипта должна ссылаться на совместимость с оболочкой, которая ответственна хза запуск остальной части скрипта. Обычно это "sh" или "busybox".
    Итак, первая часть любого скрипта выглядит примерно следующим образом:
    #!/sbin/busybox sh or #!/system/xbin/busybox sh
    ИЛИ
    #!/system/bin/sh
    Со следующей линии начинается уже непосредственно сам скрипт.
    Пример: echo "200000" > /sys/devices/system/cpu/spu0cpufreq/scaling_max_freq
    Удостоверьтесь, что не допустили никаких ошибок в написании команд или адреса
    Самая распространенная ошибка - использовать windows-основанную программу, которая оставляет дополнительный пробел в конце каждой линии или оставляет невидимую неправильную букву при нажатии клавиши "ENTER"
    Так что не используйте такие редакторы, как блокнот или wordpad. Используйте Notepad++.
    По окончанию написания скрипта, проверьте каждую строку на наличие лишних пробелов, при обнаружении оных - удалите (пробелы, а не строку).
    Сохраняйте скрипт без какого-либо расширения (да, даже без .sh)
    Используйте ADB или rootexplorer для помещения скрипта в директорию /etc/init.d и выставьте разрешения.
    Прочитайте этот великолепный гайд о том, как установить SDK и настроить ADB.
    Используйте рут эксплорер для копирования скрипта и пропишите следующие разрешения:
    owner : rwx
    group : r_x
    others : r_x
    Загрузите script manager из маркета, используйте данную программу для запуска скрипта с рут-доступом, отметив символ в виде черепа. Это необходимо только для проверки скрипта на ошибки. Если по окончанию операции показывается код=0, то все запущено успешно. Отсюда и далее, ваш скрипт будет автоматически запускаться при каждой загрузке устройства. Однако, если скрипт менеджер показывает ошибку, отредактируйте скрипт, поправьте их и попытайтесь запустить снова (повторять до тех пор, пока не заработает)
    Для добавления комментов используйте "#"

    Пример скрипта:
    Code:
    #!/sbin/busybox sh

    #No of values echoed to freq table and uvmv table should match the no of steps in your kernel
    echo "1600 1400 1200 1000 800 500 200 100" > /sys/devices/system/cpu/cpu0/cpufreq/freq_table
    echo "1425 1325 1275 1175 1075 975 950 950"> /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table
    echo "200" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    echo "1200" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    echo "ondemandx" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

    Governor, или то, о чем Вы знали, но боялись спросить (Часть третья, последняя)

    В связи с ненужностью третьей части оригинала (на мой взгляд), продолжим познавать тонкости калибровки ядра сразу с главы IV: I/O Schedulers. Хочу заметить, что это последняя часть, которую я считаю необходимой знать, если вы хотите получать от вашего аппарата 150% удовольствия.
    Итак, поехали?



    4. I/O ПЛАНИРОВЩИКИ


    Q. "Какую задачу выполняет I/O планировщик?"
    A.
    Уменьшает задержку работы с дисковым пространством;
    Приоритезирует I/O запросы выполняемых процессов;
    Перераспределяет дисковое пространство для запущенных процессов;
    Обеспечивает выполнение определенных запросов к дисковому пространству перед дедлайном.
    Если вкратце и проще: ядро контролирует доступ к дисковому пространству благодаря I/O планировщику.

    Q. Какую цель каждый I/O пытается сбалансировать?
    A.
    "Честность" (позволяет каждому процессу иметь доступ к дисковому пространству);
    Производительность;
    Обеспечивает обработку запроса в реальном времени.

    Q. "Описание, плюсы, минусы каждого I/O?"
    A.

    1) Noop

    Помещает все получаемые запросы в Первый-первый и совмещает запросы. Лучше всего использовать вместе с дисками, не имеющих и не зависящих от механических движущих частей (да, как раз наши флеш-диски). Преимущество тут в том, что флеш диск не требует переопределение нескольких I/O запросов (в отличие от обычных жестких дисков).

    Плюсы:
    Положительно влияет на время работы от батарейки;
    Наилучший вариант для флеш-дисков, т.к. нет поисковой задержки.
    Минусы:
    При повышении кол-ва циклов, выполняемых процессором, пропорционально теряется производительность.

    2) Deadline

    Цель - минимизировать задержку I/O запросов. Агрессивно использует для выполнения данной цели пять очередей для запросов.

    Плюсы:
    Наиближайший к выполнению процессов обращения в реальном времени планировщик;
    Блистает в уменьшении задержек выполнения процессов;
    Лучший планировщик для доступа к базе данных и очередям;
    Как и noop, хорош при использовании с флеш-дисками.
    Минусы:
    Когда система перегружена, часть процессов могут потеряться после дедлайна, причем какие именно - предугадать крайне сложно.

    3) CFQ

    Плюсы:
    Призван обеспечивать сбалансированную производительность;
    Настраивается проще всех остальных планировщиков;
    Особенно хорошо показывает себя на многопроцессорных устройствах;
    Наилучшая производительность базы данных после дедлайна.
    Минусы:
    Некоторые пользователи сообщают о большем времени сканирования жесткого диска при загрузке;
    Jitter (наихудший вариант задержки) может быть крайне высоким из-за кол-ва одновременно выполняемых задач.

    4) BFQ

    Плюсы:
    Считается очень хорошим планировщиком для трансферринга информации через USB;
    Считается лучшим для записи HD-видео и стриминга;
    Считается очень аккуратным I/O планировщиком;Considered an accurate i/o scheduler.
    Может достигать до 30% больше обработок запросов чем CFQ.
    Минусы:
    Не лучший планировщик для бенчмаркинга;Not the best scheduler for benchmarking.
    Повышенные задержки.

    5) SIO

    Плюсы:
    Простой и клевый.
    Disadvantages:
    Случайные замедленные запросы на чтение, по сравнению с другими; планировщиками;Slow random-read speeds on flash drives, compared to other schedulers;
    Секвентальная скорость чтения на флеш-дисках так же не очень хороша.

    6) V®

    Плюсы:
    Лучший для бенчмаркинга (гоханморал в своем сийя ядре для СГС2 как-то баловался им, когда люди хотели ОМГМНОГОПОПУГАЕВ в бенчмарках, числа доходили до 8-9к в квадранте - прим. перевод.)
    Минусы:
    Производительность достаточно сильно "плавает" время от времени;
    Наиболее нестабильный и пригодный для использования.

    7) Anticipatory

    Плюсы:
    Read requests from processes are never starved.
    As good as noop for read-performance on flash drives.
    Минусы:
    Пониженная производительность при записи на высокоскоростных дисках.

    Q. "Лучший I/O планировщик?"
    A. Как и в большинстве таких вопрос, нет прямого ответа - все зависит от того, чего вы хотите от вашего устройства и как вы его используете. Лучше всего - переключать планировщики в зависимости от того, чем вы хотите сейчас заняться.
    В любом случае, если учитывать все важные факторы в общем (производительность, энергопотребление, низкие задержки), считается что "лестница почета" следующая: SIO > Noop > Deadline > VR > BFQ > CFQ, при учете того, что все они настроены и ваше дисковое пространство - флеш-память.

    Q. "Окей. А как мне их менять, возможно ли это делать "на лету"?"
    Самый простой способ - использовать программы Voltage Control или No Frills.
    Вариант второй - уже упомянутые раннее init.d-скрипты:
    echo "scheduler-name" > /sys/block/mmcblk0/queue/scheduler



    Программа: Посмотреть вложение com.darekxan.extweaks.app-2.apk
    Патч для получения полной версии: Посмотреть вложение Patch.apk
     
    EXCLUSIVE, maximom77, radislav899 и 6 другим нравится это.
  2. EXCLUSIVE
    Offline

    EXCLUSIVE FullWipe

    Очень удобная кстати штука, без всяких проблем настраиваешь всю работу аппарата.
     
    goriacheff нравится это.
  3. dragyn
    Offline

    dragyn Новичок

    А что за говернер pegasusq? Нигде не могу найти описания? Подскажите!
     
  4. goriacheff
    Offline

    goriacheff Модератор

    описание тут