» Мануалы

Увеличение времени автономной работы при помощи sysctl

Одним из ключевых и немногих недостатков Android-смартфонов и планшетов, так же как и других «умных» мобильных устройств, является не слишком большое время работы без подзарядки, особенно в сравнении с простыми мобильными телефонами. Существует множество вариантов увеличения времени автономной работы, и сегодня мы разберем один из них, а именно используя sysctl.

На понадобятся Root-права, а также установленный busybox. Прошивка устройства должна поддерживать init.d. В целом, абсолютное большинство кастомных прошивок уже его поддерживают. Но в случае, если вы хотите применить данный мануал по отношению к устройству на официальной стоковой прошивке и не уверены, присутствует ли в ней поддержка init.d, то рекомендуется использовать такие программы, как Script Manager или mctweaker, которые способны эмулировать работу init.d. Далее, понадобится установленный терминал (Android Terminal Emulator) и файловый менеджер – рекомендуем использовать Root Explorer. Конечно же, перед началом работы, всегда создавайте резервные копии, чтобы иметь возможность вернуть всё «как было», если вдруг что-либо пойдет не так. В целом, если внимательно следовать описанным ниже шагам, то проблем быть не должно.

Итак, для начала при помощи файлового менеджера открываем папку system/etc и находим там файл sysctl.conf. Если вдруг такого файла там нет, то его можно создать. Возможно создать его и на компьютере, после чего закинуть в указанную папку, но в этом случае настоятельно рекомендуем использовать текстовый редактор Notepad++. Открываем файл sysctl.conf, и вставляем туда следующие строки:

#sysctl.conf file

fs.nr_open=1053696

fs.inotify.max_queued_events=32000

fs.inotify.max_user_instances=256

fs.inotify.max_user_watches=10240

fs.lease-break-time=10

fs.file-max=165164

kernel.threads-max=525810

kernel.random.write_wakeup_threshold=256

kernel.random.read_wakeup_threshold=128

kernel.sched_compat_yield=1

kernel.panic=5

kernel.panic_on_oops=1

kernel.msgmni=2048

kernel.msgmax=64000

kernel.shmmni=4096

kernel.shmall=2097152

kernel.shmmax=268435456

kernel.sem=500 512000 64 2048

kernel.sched_features=24189

kernel.hung_task_timeout_secs=30

kernel.sched_latency_ns=18000000

kernel.sched_min_granularity_ns=1500000

kernel.sched_wakeup_granularity_ns=3000000

kernel.sched_shares_ratelimit=256000

kernel.sched_child_runs_first=0

fs.lease-break-time=10

fs.file-max=65536

vm.dirty_ratio=90

vm.dirty_background_ratio=80

vm.oom_kill_allocating_task=1

vm.overcommit_memory=1

vm.page-cluster=3

vm.drop_caches=3

vm.min_free_kbytes=4096

vm.panic_on_oom=0

vm.dirty_expire_centisecs=1000

vm.dirty_writeback_centisecs=2000

vm.oom_kill_allocating_task=0

vm.vfs_cache_pressure=10

vm.min_free_order_shift=4

vm.laptop_mode=0

vm.block_dump=0

 

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

После этого нужно перейти в директорию system/etc/init.d, и создать там файл 10sysctl. Он нужен для того, чтобы файл sysctl.conf срабатывал сразу же после загрузки системы. После создания открываем его, и вставляем в тело файла следующие строки:

#!/system/bin/sh

# grep sysctl /etc/init.d/*

# Load /sys/etc/sysctl.conf

sysctl –p

            Опять же, важно, чтобы в коде не было никаких лишних символов. Сохраняем данный файл и выставляем права аналогично, как делали это с файлом sysctl.conf.

Теперь можно проверить, правильно ли были выполнены все манипуляции. Перед этим лучше устройство не перезагружать – если что-то было сделано не так, то после перезагрузки возможна некорректная его работа. Запускаем терминал, то есть Android Terminal Emulator, и прописываем последовательно следующие команды:

su

sysctl –p

После выполнения команд на экране отобразится содержимое интересующего нас файла sysctl.conf.

Если вдруг напротив какой-то из строк красуется надпись «Error», то есть «Ошибка», то открываем файл sysctl.conf и удаляем строчки с ошибками, после чего снова проделываем манипуляции по проверке sysctl.conf на ошибки через терминал.

Всё сделано! Теперь можно перезагрузить устройство и радоваться полученными результатами. Практически у всех пользователей данный метод работает, хотя его эффективность различается от устройства к устройству. Но в целом процент прироста времени автономной работы достаточно ощутимый. Таким образом, можно дольше радоваться своим любимым Android-гаджетом, не бегая постоянно к розетке с зарядным устройством.

Серёга Игнатченко
2015-01-29 02:45:34
#!/system/bin/sh # grep sysctl /etc/init.d/* # Load /sys/etc/sysctl.conf sysctl –p а тут то пробелы есть че делать так и вписывать?
Серёга Игнатченко
2015-01-29 02:46:21
10sysctl и 10sysctl.bac тоже самое?
Серёга Игнатченко
2015-01-29 03:02:53
расшифровка bad line 2: 1 tokens found, needed Че мне делать где поправлять?
Серёга Игнатченко
2015-01-29 13:37:42
Админ????
Серёга Игнатченко
2015-01-29 13:40:49
я понял все похер спасибо.....только мусора в телефоне понасоздавал и все ....скопировал все как описано ничего лишнего 2 раза все менял....проблема таже....
Серёга Игнатченко
2015-01-30 03:31:23
админ ответь пожалуйста!
Серёга Игнатченко
2015-02-02 19:25:28
Кароче я понял всем похуй.....