Вкратце, по параметрам, которые меняет Swappolube:
Первый, 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 сетей.
Вкратце вот как-то так.
---
Быть мрачным и непонятным очень просто. Охрененно трудно быть добрым и ясным. (с) Стивен Содеберг.