Пользователь
0,0
рейтинг
8 октября 2010 в 17:13

Оптимизация и ускорение N900

Наверное все, кто активно пользуется N900, сталкивались с ситуациями, когда система начинала подтормаживать при копировании по сети больших файлов на большой скорости, или когда после недели активного пользования, начинало быть заметным общее подтормаживание системы и выявить виновника через top/htop не удавалось, приходилось спасаться перезагрузкой. Это конечно не проблема, но как факт очень неприятен — не Linux-way как-бы.

Но, как оказалось, это решаемо. Ещё со времен N8хх народ активно экспериментировал с различными настройками ядра Linux, которые позволят избавиться от подобных вещей на мобильных девайсах, и настройки эти, будучи эмпирически выведенными и проверенными, и вправду очень благополучно сказываются на поведении системы. Благополучно настолько, что система продолжает быть весьма отзывчивой даже при захлебывающимся от радости торрент-клиенте Transmission, принимающим файлы на полной скорости, и после недельного аптайма система продолжает работать плавно и даже при 30 открытых окнах браузера переключение тасков происходит также как и при двух (чего нельзя было наблюдать до нижеописанного способа оптимизации системы). А теперь к делу.

Кому лень читать и разбираться — ставите из репозиториев(сейчас в extras-testing) программу Swappolube («смазка для свопа», если буквально), запускаете и радуетесь жизни. Кому не лень — делаете тоже самое и продолжаете читать. :)



Программа эта — всего лишь GUI для изменения параметров ядра с возможностью его перманентного сохранения. Есть и не-GUI версия — swappolube-nogui. Программа эта не меняет никаких системных файлов, ничего не перезаписывает — только передает необходимые параметры ядру через /proc и создает, по желанию, файл в /etc/event.d, который будет применять эти настройки при каждой загрузке. В любой момент изменения можно откатить либо через GUI, либо убив этот файл и перезагрузив систему — но это врядли понадобится, уж слишком много пользователей N900 уже ее поставили и не устают писать на форумах отзывы со словами smooth, speed increase и brilliant.

Итак, что же это за параметры:
echo "30" > /proc/sys/vm/swappiness
echo "0" > /proc/sys/vm/page-cluster
echo "1" > /proc/sys/vm/laptop_mode
echo "1" > /proc/sys/vm/oom_kill_allocating_task
echo "0" > /proc/sys/vm/dirty_expire_centisecs
echo "0" > /proc/sys/vm/dirty_writeback_centisecs
echo "60" > /proc/sys/vm/dirty_background_ratio
echo "95" > /proc/sys/vm/dirty_ratio
echo "0" > /proc/sys/net/ipv4/tcp_timestamps
echo "1" > /proc/sys/net/ipv4/tcp_no_metrics_save


Первый, swappiness, по-умолчанию на Maemo установлен в 100 — это значит, что система будет пытаться сбрасывать память в своп как можно чаще и больше. Тут мы меняем его на 30 (это проценты) — что позволяет уменьшить количество обращений к диску(точнее к eMMC-флешке, на которой размещен своп), причем заметно. Возможно есть сценарии, при которых это будет не самое оптимальное решение, но в подавляющем большинстве это как раз то, что приводило к заметным подтормаживаниям при активной работе с N900.

Далее, page-cluster — эта опция контролирует количество страниц памяти, которые будут записываться в своп за один раз. Значение «0» означает 1 страницу, «1» — 2 страницы, 2 — 4 страницы и т.д. по экспоненте. По умолчанию в Maemo установлено значение «5» (32 страницы). Возможно на десктоп системах это значение лучше повышать, но на мобильном девайсе один такой цикл записи уже даёт более заметное замедление отзывчивости, а при swappines=100 проявляется во всей красоте. Ставим «1» — пусть в своп пишется дольше, но незаметно для пользователя и без влияния на отзывчивость UI.

Третий параметр, laptop_mode — если установлен не в «0», то активирует отложенную запись на диск. Причем активирует достаточно хитро, пытаясь выделять так называемые «периоды активности» системы, чтобы использовать обращения к диску максимально эффективно. Грубо говоря — если у нас есть страницы памяти, ожидающие сброса на диск(своп или «грязные» — ещё не синхронизированные буферы диска), не начинать операцию записи, пока не будет обращения к диску — это позволяет как-бы «сгруппировать» операции записи на диск, уменьшая количество обращений к диску, увеличивая срок жизни флеш-памяти и уменьшая электропотребление(насколько заметно не знаю, но сам факт).
С этим параметром неразрывно связаны еще четыре:
dirty_expire_centisecs, dirty_writeback_centisecs — это отдельные параметрs для отложенного сброса «грязных» буферов. В laptop_mode установлены в 0 — за откладывание теперь заботится laptop_mode (по-умолчанию, установлены в 500 сантисекунд)
dirty_background_ratio, dirty_ratio — минимальное и максимальное количество памяти(в процентах от общей памяти), которое может отводиться для хранения «грязных» буферов. Эти параметры для меня остаются слегка темным пятном, но поверю на слово maemo-сообществу. По умолчанию установлены в 10 и 40, мы же ставим 60 и 95.

Дальше, oom_kill_allocating_task — меняет поведение «убийцы процессов» — OOM-киллера. Обычно при нехватке памяти(у меня никогда на N900 еще не случалось, правда) он убивает процессы которые сидят в фоне и едят память — и это может быть в принципе любой процесс. Данная же опция заставляет его убивать именно тот процесс, который пытается сейчас получить память и получает ошибку out-of-memory. Звучит здраво, но видимо на общую работоспособность системы не очень влияет, только на критические состояния.

И последние две опции, относятся к TCP/IP стеку:
tcp_timestamps — позволяет отключить добавление временных меток в TCP-пакеты. Как-бы экономит и процессор и место — всмысле в один пакет больше влезет. Насколько реально помогает, не знаю. На безопасность вроде не влияет.
tcp_no_metrics_save — говорит стеку, не кешировать последние соединения. Может быть полезно для 2G/3G сетей.

Вкратце вот как-то так.
В целом резюме такое — раньше можно было спокойно судить о степени загруженности системы по скорости анимации и реакции UI, теперь же система ведет себя одинаково плавно при практически любой нагрузке.
divan0 @divan0
карма
63,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (14)

  • 0
    Риторический вопрос: а почему инженеры Nokia этого не сделали заранее?
    • 0
      На самом деле не такой уж и риторический вопрос.
      Я думаю, они были заняты более приоритетными вопросами, и «тонкий тюнинг и повышение отзывчивости UI» был принесен в жертву срокам — пришлось его дать на растерзание сообществу. :)
  • 0
    Отличная статья!
    Всё настроил, пока у меня эффект плацебо, но со временем посмотрим)
  • 0
    Интересно, а для Андроида поможет?
    • 0
      Для Андроида есть свои трюки
      www.android-devs.com/?p=31
      • 0
        Спасибо, любопытно…

        Но мну интересуют твики при использовании свопа…
  • 0
    Версия для N810 была бы очень кстати…
    • 0
      Я не очень в курсе какое ядро в Diabolo(или что там на N810), но наверняка 2.6.х, поэтому эти настройки должны работать и там. Поэтому необязательно ждать или писать такую программу — выполните вышеописанные команды(echo… > ....) в терминале под рутом.
  • +1
    Faster Kinetic Scrolling — быстрая кинетическая прокрутка меню приложений — очень приятная и крутая штука. Мое меню приложений теперь отзывчиво как никогда до этого и прокручивается с хорошей инерцией одним быстрым движением.
  • 0
    И да, как мне показалось, swappolube сделало навигацию и переходы плавнее и мягче. Но у меня в добавок еще куча дополнений стоит, типа кернела от Титана, и процессора, работающего на 500-900 частотах вместо 250-600.
    • 0
      Ну данный «тюнинг» работает с одинаковым эффектом и на стандартном, и на -power ядре.
      • 0
        я просто уточнил, что не знаю, как данный «тюнинг» работает на стоковом ядре. Все-таки разгон процессора сделал телефон более отзывчивым.
  • 0
    Классно!
    Не поставил бы без этого обзора. Спасибо!
  • 0
    А ведь реально, теперь однажды запущенное приложение второй раз запускается за наносекунды. )
    Особенно радует, что это работает с браузером и телефонной частью.

    Эх… жаль диспетчер приложений быстрей не стал работать (без сети) и пункт Параметры по прежнему открывается с задержкой и индикатором загрузки.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.