Android начинает тормозить через некоторое время? Возможно вам поможет обрезание!

28427 / 118

fstrim_lagfix_title

Время от времени мне встречаются жалобы пользователей различных устройств на ОС Android на то, что после некоторого времени использования, их устройство начинает работать медленней, чем на свежей прошивке. Сам я почти никогда не замечал подобного, видимо потому, что в свое время часто перепрошивался, не задерживаясь на одной прошивке долгое время. Сейчас мой текущий Galaxy Note 2 почти все время эксплуатируется на одной прошивке, которую я постоянно обновляю без очистки данных и подобного тоже не замечаю, но возможно просто это особенности моего аппарата. Ведь похоже, проблема действительно существует. Как всегда, на помощь приходят умельцы с форума XDA-developers. Они изучили данный вопрос, исследуя отзывы владельцев различных устройств, и похоже нашли решение.

Вкратце, прочитав все материалы по теме, я могу сказать, что проблема напомнила мне проблему фрагментации дисков в Windows ОС. Что-то подобное происходит и с файловой системой в Linux, на котором основана ОС Android. При работе с файловой системой (установка и удаление программ, запись в кэш) остается много свободных блоков, которые надо освобождать (отрезать, отсекать лишнее) время от времени. Так как этого не происходит, можно сказать, что файловая система замусоривается, и аппарат начинает работать медленнее, соответственно появляются вышеописанные тормоза. Далее, я приведу перевод некоторых материалов с XDA и описание самого приложения – для тех, кто хочет подробнее разобраться в вопросе и попробовать провести лечебное “обрезание” файловой системы своего устройства на Android.

А причем тут собственно обрезание, спросите вы? Все просто. Процедура очистки файловой системы от свободных блоков называется “trim” – глагол, одно из значений которого “подрезать” или “обрезать”. А сама программа, вернее, небольшая утилита для выполнения данной операции называется fsTRIM LagFix. Так вот забавно выходит… :) Программа доступна для скачивания и установки из Google Play и существует в двух версиях – бесплатная и премиум (присутствует планировщик операции TRIM). Естественно, для использования программы вам нужен root-доступ к устройству. Ссылки на скачивание приложения вы найдете внизу статьи. А пока рассмотрим теорию и практику применения данного лагфикса.

Перевод описания программы из Google Play

Внимание! Это приложение должно использоваться только опытными пользователями!

Если вы не понимаете, что делает приложение – НЕ ИСПОЛЬЗУЙТЕ ЕГО! Вы можете найти подробную информацию в соответствующей ветке на сайте XDA. Изучите материалы, прежде чем задавать какие-либо вопросы или плохо оценивать данное приложение!

Некоторые пользователи Android страдают от низкой производительности своего устройства через несколько дней/недель интенсивного использования. Это связано с известной ошибкой TRIM, влияющей на эти устройства (мы получали отчеты о данной проблеме от пользователей Nexus-устройств, Samsung Galaxy S3 и HTC One X). Ядра с функцией сброса опции монтирования не устраняют данной проблемы!

Источником проблемы является то, что внутренняя память устройства не надлежащим образом регулируется по мере необходимости. Вы можете найти много информации на сайте XDA – тут и тут . Также хорошо известен факт, что запуск инструмента Linux fstrim время от времени устраняет проблему, пока внутренняя память работает без свободных блоков. Другие решения, такие как монтирование, сброс или отключения FSYNC могут быть медленными или опасными.

LagFix является удобной утилитой реализации инструмента fstrim. Она позволяет вам выбрать, какие разделы обрезать (вы должны оставить значения по умолчанию, если не знаете, что вы делаете) и легко запустить процесс. Планирование автоматической обрезки также доступно в премиум версии.

Обратите внимание, что результат выполнения  fstrim зависит от ядра и устройства. Программа отлично работает, если вы видите ошибки. Читайте руководство по fstrim, чтобы понять, почему все эти мероприятия являются действительно эффективными.

Часто задаваемые вопросы

Оригинал записи.

ВНИМАНИЕ!

Существуют некоторые устройства, подверженные BrickBug. Например, это Samsung Galaxy S2 и Samsung Galaxy Note. Есть также сообщения, что некоторые Acer A210/A211 и LG O2x также подвержены воздействию данного бага. Также существует приложение для тестирования устройства на предмет опасности BrickBug, но оно предназначено только для пользователей Samsung. BrickBug означает смерть вашего устройства, если вы попытаетесь запустить на нем LagFix! Есть некоторые ребята, которым уже повезло. В случае brickbug вы должны использовать гарантию и требовать обмен вашего устройства. Это аппаратный сбой и производитель несет ответственность в данном случае.

Разработчик не предоставляет никаких гарантий в отношении приложений LagFix! Используйте его на свой страх и риск.

Аппараты LG O2x могут быть восстановлены после brickbug по этой инструкции от пользователя fifi139.

Что делает LagFix?

Он запускает fstrim утилиту, которая в свою очередь осуществляет магические IOCTL-операции под названием TRIM.

Что такое fstrim?

Fstrim является Linux утилитой, которая выполняет TRIM на устройствах памяти. Вы можете найти более подробную информацию о данной утилите и ее исходный код на SourceForge. Теперь это часть Util-Linux, которая быть найдена внутри репозитория ядра Linux.

Что такое IOCTL?

Это программный интерфейс общения с устройствами хранения данных на низком уровне в UNIX OS. Подобное называется DeviceIoControl в Windows. Данный интерфейс позволяет сделать много различных низкоуровневых операций на устройствах хранения данных, такие как жесткие диски, CD-ROM, флэш-память и SSD диски.

Что такое TRIM?

TRIM является низкоуровневой функцией, которая информирует контроллер памяти о неиспользованных блоках памяти. Она используется на большинстве дисков SSD и некоторых EMMC (флэш-память). Для SD карт используется другая функции – SD ERASE. Подробнее смотрите в Википедии.

Почему появляются лаги?

Устройства с поддержкой TRIM должны быть обрезаны, чтобы система знала, какие части памяти является свободными и доступными для записи новых данных. Когда контроллер памяти не знает, какие части являются свободными, он начинает поиск, осуществляя запросы к операционной системе. Этот процесс требует времени и чем меньше свободного пространства, тем больше времени тратится на данные действия. И эта операция блокирует все остальные операции. Таким образом, устройство начинает ждать выполнения этой процедуры. Например, при переключении приложений, состояние сворачиваемого приложения сохранняется во внутренней памяти, чтобы вы могли вернуться к нему в случае необходимости. Сохранение = лаги. Все просто!

Какие устройства подвержены лагам?

Как известно в настоящее время, Nexus S, Galaxy Nexus, Nexus 7, Nexus 4, Nexus 10 и HTC One X нуждаются в регулярной обрезке. Считается также, что все устройства работающие на версии ОС до ICS и использующие различные типы памяти, не нуждаются в обрезке и не поддерживают данный процесс. Поэтому, поддержка устройств до ICS будет удалена в версии 1.2. Другие устройства работающие на версиях ОС выше 4,0? Проверьте! И сообщите нам, если LagFix действительно помогает – ваше устройство будет добавлено в список.

Как правильно проверить?

Используйте приложение AndroBench перед использованием LagFix и после процедуры. Вам нужно всего лишь провести микро-тест. Посмотрите на последовательные значения Write. На чтение из памяти LagFix никак не повлияет, потому что чтение не требует изменения данных и только запись запускает поисковый процесс для нахождения свободных блоков памяти.

Почему нужна перезагрузка?

Для большинства устройств не требуется перезагрузка после обрезки. Но некоторые редкие ядра не могут осуществить повторную инициализацию свободных информационных блоков после TRIM. Заранее невозможно обнаружить такие ядра, так что если LagFix сделал что-то, но показатели не улучшились – произведите перезагрузку!

Мое устройство находится в списке пострадавших, но LagFix ничего не делает.

Некоторые ядра монтируют накопители с опцией discard. Эта опция заставляет ядро ​​вызывать TRIM  после любой записи и удаления данных. Это означает, что функциональность  приложения является встроенным в ядро системы, и вам не нужен LagFix в таком случае.

Почему не каждое ядро поддерживает опцию discard по умолчанию?

Опция discard замедляет операции записи бита и удаления данных. Desktop Linux пользователи никогда не используют его, вместо этого они помещают fstrim в планировщик chron, для запуска операции один раз в день. Запланированный запуск LagFix добавлен в версии 1.2.

LagFix не доступен для моего устройства в Google Play, почему?

Как уже было сказано, многие устройства не поддерживают операцию TRIM. Просто вам не нужно данное приложение, так как оно не будет ничего делать на вашем устройстве.

Итоги

Ну вот собственно и все. Надеюсь, полученной информации вам будет достаточно для того, чтобы определиться, стоит применять данное приложение или нет. Если несмотря на все предостережения вы все же решитесь на данный шаг, то прежде всего я рекомендую вам попробовать бесплатную версию программы. Если вы обнаружите эффект, вы можете использовать утилиту периодически или купить премиум версию, в которой присутствует встроенный планировщик, который будет делать автоматический запуск операции TRIM на вашем устройстве.

Использование самого приложения до ужаса простое. Тут всего три вкладки – информация о программе, с которой мы ознакомились в данной статье, процедура lagfix с выбором разделов и кнопкой запуска , а также  планировщик, позволяющий настроить расписание для выполнения данной операции в автоматическом режиме:

fstrim lagfix 01 fstrim lagfix 02 fstrim lagfix 03

Скачать в Google Play Купить премиум в Google Play

Ну и конечно, если вы испытали данное приложение, просим высказать свое мнение по поводу его эффективности:

Извините, нет активных голосований.

Также, огромная просьба указывать в комментариях устройство, версию ОС и прошивку, которую вы используете.


РЕКОМЕНДУЕМ! СВЕЖЕЕ ВИДЕО НА НАШЕМ YOUTUBE-КАНАЛЕ:
  • N1kopol

    более безопасный метод, чистый далвик кэш. https://mega.co.nz/#!WkAWBBpa!4-4oC9gir59jJHbjrwa_H8L6jybfhA0LkCRedKK9PPM сам файлик. ставить через cwm, обязательно очистив далвик.
    Тесты были на:
    1. сгс1, miui 4.1.2, см10.1(sun), 4.2.2
    2. note1 cm9,10, рут. сток 4.1.2
    3. dns airtab e101(китай планшет) см10(unofficial) 4.1.2
    кроме сгс, другие железки на прошивках сидят долго, без изменений, проблем с тормозами не имеются.
    Единственный минус долго загружается при включении или перезагрузке, обновляя список програми

    • Ну это же совсем другое… получается далвик удаляется каждый раз и создается новый при загрузке. А тут проблема нахождения свободных блоков памяти на разделах. dalvik cache это только часть раздела cache. Кроме того, я очень сомневаюсь в эффективности. Это можно просто в CWM recovery сделать wipe dalvik cache. Много раз делал такое на рабочей системе и не припомню, чтобы быстродействие улучшалось. Правда тестами не проверял, поэтому все сказанное мое субъективное имхо :)

      • N1kopol

        обычная очистка в cwm ничего такого не даст. в скрипте далвик прописывается в preload. Но в см данной папки нет, поэтому и кеша как бы нет, и “засираться” нечему. Проверял от нечего делать, и данный метод был неожиданным. Тот же эффект происходит и на сток прошивке, при отсутствующей папке preload. В кастомах с этой папкой вроде пишет туда и по заверению юзверей, как бы работает. Проверить все времени не хватает… Да, никому не навязываю, кому интересно, поковыряет.

  • jackill_

    Ничего не тормозит и проверять нет желания – добавьте вариант в опрос))

    • второй раз менять голосование не будем. отметь нет

    • Все же поменяли голосовалку, пока не много ответов

      • jackill_

        Спасибо, теперь все честно)) И результаты интересные ;-)

  • creeper24

    Попробовал на моем “старичке” Nexus i9250. Программа чего то там шуршала, шуршала, потом зависла. Выгрузил ее из памяти, перезагрузил устройство. Все – помер “старичок”. Сейчас сижу – оживляю. Прошивка стояла – SlimBean 4.2.2 с ядром franco366 nightly. Накатил прошивку с нуля, попробую через некоторое время еще раз провести эксперимент.

    • ну ты рисковый ;)

      • N1kopol

        а от файловой системы зависит работа проги и как “засирается” система?

        • Ждем комментария от знающих людей по поводу ext системы. Что касается других типов, то например для SGS 1 и 2 был лагфикс который просто преобразовывал медленную стоковую самсунговскую RFS (фактически FAT) в быструю ext2/ext3 и уже от этого был прирост производительности примерно в 1,5 раза.
          Но здесь видимо другое явление – эффект засирания ФС проявляется после многократной записи/удаления, когда появляется много свободных блоков внутри массива данных. Эти процессы управляются ядром и системой и не зависят от типа ФС. Мне так кажется. Но подождем авторитетного мнения.

        • N1kopol

          говорила мне матушка, учи линь, человеком будешь… моих знаний явно не хватает адекватно понять сам процесс проблемы. Понятно это и это, а вот тонкости… эх, говорила мне матушка…

  • К ext4 trim не имеет прямого отношения. Он касается записи непосредственно на саму флеш память. Фишка тут в том, что флеш память имеет ограничение к количеству перезаписей, что не очень совместимо с тем, как работают современные ОС – свап “живет” на одном и том же месте в диске, кеши зачастую тоже, и т.п. И получается, что память в этих “местах” может быстро износиться. Решается это тем, что запись на нее рандомизируется – вроде пишешь на начало диска, а на самом деле запись происходит куда-то в конец, в малоиспользованную область, а контроллер запоминает соотношение между этими адресами. При стирании данных, эта область просто помечается как свободная, но данные не стираются (слишком долго). Но если в такую область надо что-то записать, надо эти данные предварительно стереть, что может вызвать лаг при записи. Вот для этого trim и предназначен – он сканирует диск и “чистит” помеченные таким образом области диска, чтобы запись на них произошла быстро. Что-то вроде garbage collection – периодической очистки памяти в некоторых языках.
    Поможет ли вам trim? Гарантий никаких. Дело в том, что контроллер внутренней флеш памяти на вашем девайсе уже может делать периодическую “чистку” свободного пространства, без вашего участия. Он может давать программам возможность запускать подобную чистку, а может и не давать. Если интересно (а на данном ресурсе такое интересно всем) – пробуйте на свой страх и риск. Но замеряйте результаты бенчмарками, в подобных делах очень силен эффект “плацебо”.

    • спасибо за профессиональное мнение!

  • Александр

    Заголовок убил) Стало интересно, как обрезание поможет в этом вопросе)