Операция «Оптимизация». Советы по ускорению Ubuntu. Настройка Swappiness и кеширования в Linux Ускоряем ubuntu

Изменим поведение Ubuntu в отношении использования ОЗУ и подкачки (раздел swap). Есть такой параметр vm.swappiness , который по умолчанию имеет значение 60, и контролирует процент свободной памяти, при которой начнется активный сброс страниц в раздел swap. Иными словами, при 100-60=40% занятой памяти, Ubuntu уже начнет использовать раздел swap. При большом количестве ОЗУ в компьютере, лучше изменить параметр vm.swappiness до 10 и тем самым приказать Ubuntu не использовать swap пока занятая ОЗУ не достигнет 100-10=90%. Установим значение 10 вместо 60. В консоли введите следующую команду:

Echo 10 > /proc/sys/vm/swappiness

Sysctl -w vm.swappiness=10

Для сохранения настройки после перезагрузки внесите в конец файла /etc/sysctl.conf следующую строку:

Vm.swappiness=10

Что бы сразу применить настройку:

Sysctl -p

В дополнение можно сказать еще о нескольких параметрах.
В псевдофайле vfs_cache_pressure хранится значение - уровень выделяемой памяти под кэш. Значение по умолчанию: 100. Увеличение этого параметра заставляет ядро активнее выгружать неиспользуемые страницы памяти из кеша, т.е. количество выделяемой оперативной памяти под кеш будет расти медленнее, что в свою очередь снизит вероятность того, что будет задействован раздел swap. При уменьшении этого параметра ядро, наоборот, будет дольше держать страницы памяти в кеше, в том числе и в swap"е. Это имеет смысл при небольшом количестве ОЗУ, например, если у нас 512 МБ памяти, то параметр vfs_cache_pressure можно выставить равным 50. Это позволит сократить количество дисковых операций в swap разделе, так удаление неиспользуемых страниц будет происходить реже. Дальнейшее уменьшение этого параметра может привести к нехватке памяти.
Если вы хотите ускорить работу системы и у вас достаточно оперативки (2 Гб и более), то измените значение системы, так: swappiness = 10 , vfs_cache_pressure = 1000 (по умолчанию 100) , внесите в файл /etc/sysctl.conf следующую строку:

Vm.vfs_cache_pressure=1000

или на лету:

Sysctl -w vm.vfs_cache_pressure=1000

Кэширование в Linux

При записи данных на диск (любой программой) Linux кэширует эту информацию в области памяти, называемой Page Cache (страничный кэш). Информацию об этой области памяти можно посмотреть с помощью команд free, vmstat или top . Полную информацию об этой области памяти можно посмотреть в файле /proc/meminfo . Ниже приведен пример этой файла на сервере с 4-мя GB RAM:

MemTotal: 3950112 kB
MemFree: 622560 kB
Buffers: 78048 kB
Cached: 2901484 kB
SwapCached: 0 kB
Active: 3108012 kB
Inactive: 55296 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 3950112 kB
LowFree: 622560 kB
SwapTotal: 4198272 kB
SwapFree: 4198244 kB
Dirty: 416 kB
Writeback: 0 kB
Mapped: 999852 kB
Slab: 57104 kB
Committed_AS: 3340368 kB
PageTables: 6672 kB
VmallocTotal: 536870911 kB
VmallocUsed: 35300 kB
VmallocChunk: 536835611 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB

Размер Page Cache показан в параметре "Cached", в данном примере он составляет 2,9 GB. При записи страниц в память размер параметра "Dirty" увеличивается. При начале записи на диск будет увеличиваться параметр "Writeback" до тех пор, пока запись не закончится. Достаточно сложно увидеть параметр "Writeback" высоким, так как его значение увеличивается только во время опроса, когда операции ввода/вывода (I/O) поставлены в очередь, но еще не записаны на диск.
Linux обычно записывает данные из кэша на диск с помощью процесса pdflush. В любой момент в системе запущено от 2 до 8 потоков pdflush. В файле /proc/sys/vm/nr_pdflush_threads можно посмотреть сколько в данный момент активных потоков. Каждый раз все существующие потоки pdflush заняты по крайней мере 1 секунду. Новые потоки пытаются записать данные в свободные очереди устройств, таким образом, чтобы на каждое активное устройство был 1 поток сбрасывающий данные из кэша. Каждый раз по прошествии секунды без какой-либо активности со стороны pdflush убирается 1 поток. В Linux можно настроить минимальное и максимальное количество pdflush потоков.

Настройка pdflush
Каждый поток pdflush контролируется несколькими параметрами в /proc/sys/vm:

  • /proc/sys/vm/dirty_writeback_centisecs (default 500): в сотых долях секунд. Этот параметр означает как часто pdflush возобновляет работу для записи данных на диск. По умолчанию возобновляет работу 2 потока каждые 5 секунд.
    Возможно недокументированное поведение, которое пресекает попытки уменьшения dirty_writeback_centisecs для более агрессивного кэширования данных процессом pdflush. Например, в ранних версиях ядра 2.6 Linux в файле mm/page-writeback.c код включал логику, которая описывалась "если запись на диск длится дольше, чем параметр dirty_writeback_centisecs, тогда нужно поставить интервал в 1 секунду". Эта логика описана только в коде ядра, и ее функционирование зависит от версии ядра Linux. Так как это не очень хорошо, поэтому вы будете защищены от уменьшения этого параметра.
  • code>/proc/sys/vm/dirty_expire_centiseconds (default 3000): в сотых долях секунд. Этот параметр указывает как долго данные могут находится в кэше, после чего должны быть записаны на диск. Значение по умолчанию очень долгое: 30 секунд. Это означает, что при нормальной работе до тех пор пока в кэш не запишется достаточно данных для вызова другого метода pdflush, Linux не будет записывать данные на диск, находящиеся в кэше менее 30 секунд.
  • /proc/sys/vm/dirty_background_ratio (default 10): Максимальный процент оперативной памяти, который может быть заполнен страничным кэшем до записи данных на диск. Некоторые версии ядра Linux могут этот параметр устанавливать в 5%.
    В большинстве документации этот параметр описывается как процент от общей оперативной памяти, но согласно исходным кодам ядра Linux это не так. Глядя на meminfo, параметр dirty_background_ratio расчитывается от величины MemFree + Cached - Mapped. Поэтому для нашей демонстрационной системы 10% составляет немного меньше, чем 250MB, но не 400MB.

Когда pdflush начинает запись?
В конфигурации по умолчанию, данные, записываемые на диск, находятся в памяти до тех пор пока:

Если на сервере операции записи происходят часто, то однажды будет достигнут параметр dirty_background_ratio , и вы сможете увидеть, что вся запись на диск идет только через этот параметр не дожидаясь истечения параметра dirty_expire_centiseconds .

Процесс записи страниц
Параметр /proc/sys/vm/dirty_ratio (default 40) - максимальный процент общей оперативной памяти, который может быть выделен под страничный кэш, до того как pdflush будет писать данные на диск.

Примечание: Во время записи на диск блокируются все процессы на запись, а не только тот который заполнил буфер на запись. Это может спровоцировать блокировку одним процессов всех операций вводы/вывода в системе.

Рекомендации по оптимизации Linux для операций, требующих частой записи
Обычно, при попытке увеличения производительности дисковой подсистемы сталкиваются с проблемой, что Linux буферизует слишком много информации сразу. Это особенно заметно для операций, требующих синхронизации файловой системы, использующих вызовы fsync. Если во время такого вызова в кэше много данных, то система может "подвиснуть" пока не закончится этот вызов.
Другая частая проблема происходит потому, что слишком много требуется записать до того, как начнется запись на физический диск, операции ввода/вывода происходят чаще, чем при нормальной работе.

  • dirty_background_ratio: Основной инструмент настройки. Обычно уменьшают этот параметр. Если ваша цель снизить количество данных, хранимое в кэше, так что данные будут писаться на диск постепенно, а не все сразу, то уменьшение этого параметра наиболее эффективный путь. Значение по умолчанию наиболее приемлимо для систем имеющих много оперативной памяти и медленные диски.
  • dirty_ratio: Второй по значимости параметр для настройки. При значительном снижении этого параметра приложения, которые должны писать на диск, будут блокироваться все вместе.
  • dirty_expire_centisecs: Попробуйте уменьшить этот параметр, но не сильно. Он позволяет уменьшить время нахождения страниц в кэше до записи на диск, но с другой стороны это значительно снизит среднюю скорость записи на диск, что особенно проявится на системах с медленными дисками.

В итоге получим
В файле /etc/sysctl.conf вносим:

Vm.dirty_background_ratio = 10 vm.dirty_ratio = 40

После синхронизируем данные кэша и диска, очистим кэш и сохраним параметры:

Sync; echo 3 > /proc/sys/vm/drop_caches; sysctl -p

Чтобы уменьшить количество финализаций записи на диск необходимо подкорректировать:

Vm.dirty_writeback_centisecs = 15000

Известно, что в современных операционных системах используется такая технология, как виртуальная память, разработанная для многозадачных ОС.

В ОС семейства Windows файл, служащий для хранения неиспользуемой оперативной памяти в области жесткого диска, именуется «файлом подкачки» (pagefile.sys).

Его организация реализована далеко не лучшим образом (мягко говоря!). В ОС Linux еще при установке создается отдельный раздел подкачки — «Swap», что гораздо лучше.

Файл подкачки Windows и Linux-swap, располагаются на HDD (жестком диске). Когда оперативной памяти становиться недостаточно, происходит выгрузка страниц памяти из ОЗУ на жесткий диск, а когда вы снова обращаетесь к файлам, находящимся в разделе подкачки (swap), они снова загружаются в оперативную память.

Вся проблема в том, что скорость чтения-записи жесткого диска HDD (даже самого быстрого) В РАЗЫ меньше скорости оперативной памяти. Вот это и ведет к замедлению работы компьютера и снижению производительности в целом.

Здесь есть два способа решения этой проблемы: использовать большие объемы ОЗУ или правильно настроить работу системы с файлом подкачки и swap.

Итак, в Ubuntu есть такой параметр, который контролирует процент свободной памяти, при которой начнется сброс страниц памяти в swap - vm.swappiness.

В Ubuntu по умолчанию он имеет значение равное - 60. Это означает, что при 40% занятой оперативной памяти начнется активный сброс страниц памяти в раздел swap, т. е. 100% — 60% = 40%.

Проверить, каково значение параметра у вас, можно следующим образом.

Открываем терминал комбинацией клавиш Ctrl+Alt+T и выполняем команду:

cat /proc/sys/vm/swappiness

Такое значение параметра может быть полезно только для компьютеров с малым количеством оперативной памяти (512 -1024 МБ).

Если у вас современный компьютер или ноутбук с большим объемом ОЗУ (4-6, а то и 8 ГБ), то это вам вряд ли подойдет.

На многих форумах и блогах, посвященных Ubuntu рекомендуется выставить значение параметра vm.swappiness = 10 (т. е. 100% — 10% = 90%). Но, по моему личному опыту, при наличии оперативной памяти объемом в 6 ГБ можно повести себя и по-агрессивнее, выставив значение равным 0. В данном случае система будет обращаться к разделу swap только в крайнем случае.

Я рекомендую поэкспериментировать с данным параметром в текущем сеансе (после перезагрузки все вернется к значению по умолчанию), пока ничего не меняя в конфигурационных файлах системы, дабы найти самый оптимальный параметр. А здесь уже все индивидуально...

Сделать это можно так.

Опять же открываем всемогущий терминал комбинацией клавиш Ctrl+Alt+T и выполняем в нем следующую команду:

sudo sysctl vm.swappiness=

После знака равенства выставите значение от 100 до 0 (в зависимости от объема вашего ОЗУ).

После этого попробуйте «погрузить» свою систему: открыть несколько браузеров с большим числом вкладок, покопировать большие файлы на внешние носители (это, кстати, является больной стороной linux-систем — скорость копирования на внешние носители. Но об этом как-нибудь в следующий раз) и тому подобное.

После того, как вы подобрали для себя наиболее удачное значение, необходимо установить новое значение в качестве постоянного. Копируем и выполняем следующую команду в терминале:

sudo gedit /etc/sysctl.conf

Перед вами откроется конфигурационный файл в текстовом редакторе gedit . В конце этого файла вставляем два следующих параметра без решетки перед ними:

vm.swappiness=0 vm.vfs_cache_pressure = 1000

Сохраняем файл. Он должен выглядеть, как на скриншоте внизу:

Перезагружаем компьютер. После перезагрузки выполняем в терминале:

sudo sysctl -p

Я, как уже было отмечено выше, выбрал параметр равным 0, фактически отключив раздел swap, т. к. для моего компьютера с шестью гигабайтами ОЗУ он оказался наиболее оптимальным. Вы можете выбрать значение параметра равным 10, как это рекомендовано на многочисленных форумах.

В качестве примера мне бы хотелось продемонстрировать загрузку оперативной памяти в Ubuntu 12.10 x64 с 6 ГБ ОЗУ.
Итак, я открыл три браузера - штатный Mazilla Firefox, Opera и Google Chrome с общим количеством вкладок около 40, аудиоплеер Clementine (кстати, довольно требовательный к ресурсам компьютера), Skype, торрент-клиент qBittorrent.
И вот скриншот htop (это довольно продвинутый консольный монитор процессов). Для установки набираем в терминале

sudo apt-get install htop


Я думаю, что все становится понятно: занято менее половины установленной оперативной памяти.
Поэтому если у вас много ОЗУ, то использовать раздел подкачки не имеет никакого смысла. Это будет только замедлять скорость работы компьютера!
В заключении могу сказать, что это не единственное, что можно сделать для ускорения работы Ubuntu. Об этом в следующих статьях. Подписывайтесь на RSS — канал!
Отличного настроения, быстрой работы компьютера и с наступающим Новым годом!
В качестве приятной неожиданности сегодня видео о том, каким увидели уходящий год сотрудники компании Google.

Если сейчас сравнить новые версии десктоп дистрибутива Ubuntu например с версией 14.04, вы должны были бы увидеть, что дистрибутивы Linux стали более «прожорливыми», да новые версии получили проблему в виде Unity которая жрет оперативку как слон и если у вас оперативной памяти меньше 2гб, будет не сладко. В сегодняшнем материале мы обсудим несколько способов более оптимального решения возникшей проблемы которые бы позволили уменьшить апетиты в использовании оперативной памяти. Первый, конечно же - это выбор легкого дистрибутива (Xubuntu или же Lubuntu и прочих). Второй способ, в данном случае мы постараемся уменьшить потребления памяти без ограничения в функциональности работы дистрибутива, для опытов мы выбрали Ubuntu 16.04 LTS.

Введение

Если вы только установили систему на компьютер который имеет два гигабайта ОЗУ, после первого запуска система будет кушать не меньше 1 Гб памяти. Вроде и не критично, но очень много, если взять хотя-бы в сравнение более маленький дистрибутив и сравнить потребление памяти. А если и запустить браузер например с 5-6 вкладками, то ваши 2 ГБ быстро израсходуются и вы увидите первые косяки в производительности прочие зависания браузера итд.

Рассмотрим что нам нужно в функциональности, а что нет.

  • Прежде всего список демонов которые загружаются по умолчанию. Разработчики Ubuntu, попытались сделать минимум, но в нашей ситуации стоит обратить внимание на то, что в зависимости от степени использования дистрибутива, много функционала может быть вовсе лишним, что в итоге может быть отключено и не будет кушать оперативную память.
  • Так же стоит обратить внимание на приложения которые вы не используете. Разное ПО использует плагины, которые реализуются в большей части случаев в виде загружаемых библиотек. В данной ситуации не лишней будет тонкая настройка и отключение ненужного. Стоит вспомнить и о графической подсистеме компоненты которой не всем нужны отключив которые можно немного высвободить оперативной памяти.

Обратите внимание, автор материала не несет ответственно за ваши действия если вы отключите что-то важное и у вас полетит система. Все манипуляции, вы выполняете на свой страх и риск принимая то или иное решение для отключения служб и плагинов.

Отключаем лишние службы / сервисы

В Ubuntu 16.04 используется systemd, чтобы посмотреть ПО которое запускается во время начальной загрузки, мы можем использовать следующую команду:

Sudo systemctl list-units --type service

В результате мы получим список как запущенных(используемых), так и сервисов которые уже завершены. Давайте рассмотрим более детально этот список и подумаем, что нам нужно, а от чего мы можем избавиться.

Список загружаемых сервисов systemd

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

Sudo systemctl disable apparmor.service

Apport - это служба которая предназначена для отправления отчетов об ошибках в Canonical. Да, вроде и полезный инструмент, но представьте ситуацию, у вас мобильный 3G интернет и это окно об ошибках постоянно маячит перед глазами, в данной ситуации имеет смысл отключить данную службу, иногда это окно уж очень слишком часто вылазит когда его не ждешь, я лично отключил сразу же после установки так как иногда оно просто выводит своими появлениями когда его не ждешь. Отключать ли вам, вы должны сами решить для себя. Для отключения набираем команду:

Sudo systemctl disable apport.service

Avahi - это демон который предназначен для обнаружения служб / компьютеров в домене.local. Вроде и удобная штука, но на практике, если у вас есть пара компьютеров в локальной сети, смысла держать этот демон активным нет, мoжете смело отключить:

Sudo systemctl disable avahi-daemon.service

CGManager предназначен для управления cgroup позволяя непривилегированным пользователям получать доступ к cgroup и предотвращая выход из текущего cgroup в родительский не исключение и привилегированные приложения. Если трезво мыслить, он может пригодиться лишь при создании вложенных контейнеров LXC, если вы их не используете и не пользуетесь песочницей, в которой все это может пригодиться для запуска программ, смело отключайте:

Sudo systemctl disable cgmanager.service

Colord используется для управления цветовыми профилями, позволяет отображать идентичные цвета как на экране компьютера так и на принтере. Если вам это не нужно и вы не планируете управлять цвeтами, у вас нет монохромного принтера или вовсе нет никакого принтера, отключайте не раздумывая:

Sudo systemctl disable colord.service

ModemManager - это интерфейс, позволяющий реализовать подключение к сети интернет используя мoдемы, каналы связи (2G/3G/4G/CDMA), способы соединения (RS232, USB, Bluetooth) и методoв управления (AT, QCDM, QMI, MBIM). Если у вас кабельный интернет и вы не планируете использовать модем, отключайте:

Sudo systemctl disable ModemManager.service

Speech Dispatcher - это унифицированный API, который имеет предназначение для изменения порядка вызова синтезатора, так же позволяет предотвратить наложения звука при использовании нескольких приложений и воспроизведении в них звука одновременно. Если вы не планируете использовать синтезаторы речи, отключайте:

Sudo systemctl disable speech-dispatcher.service

Whoopsie - эта служба имеет те же корни что и Apport, если вы ее отключили, так же стоит и поступить с Whoopsie. Прежде всего откройте конфиг /etc/default/whoopsie здесь нам нужно изменить значение в параметре report_crashes замени true на false, сохраняем и после отключаем службу:

Sudo systemctl disable whoopsie.service

Отключение компонентов программ и графической подсистемы

Если отключить графическую подсистему, то ваша Ubuntu будет использовать на 40%. Первое, о чем стоит вспомнить и что может существенно облегчить работу в ubuntu, это отключение онлайн-поиска, который в большей части никому не нужен вовсе. Чтобы отключить вы можете перейти в «Параметры системы -> Защита и приватность -> Поиск» и переключить «Отображать результаты поиска в интернете». Или же воспользоваться консольным способом и выполнить в терминале следующую команду:

Gsettings set com.canonical.Unity.Lenses remote-content-search none

Стоит вспомнить и о композитном менеджере Compiz, который имеет апетит как у слона и кушает вашу память сильнее, чем все остальные процессы. Чтобы умерить его апетиты, вам потребуется установить CompizConfig Settings Manager(после установки запустить):

Sudo apt-get install compizconfig-settings-manager ccsm

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

  • «Команды», если вы для комбинаций клавиш не задаете никаких команд, можете смело отключать; в Unity он не используется и никаких побочных последствий не вызовет если отключить.
  • Enhanced Zoom Desktop - это подобия «Экранной лупы». Если вам не нужно подобное ПО, отключайте.
  • Desktop Wall - это всем известный куб Compiz в 2D. Если вы не планируете использовать куб, отключайте.
  • Viewport Switcher - этот плагин, предназначен для переключения рабочих столов. Он так же создает нагрузки и если для вас он не нужен, отключайте.
  • В группе «Эффекты» можно отключить плагин: Animations и «Проявление/исчезание окон». Я в данном разделе вовсе все отключил и работаю без анимаций и без лишних красот так как в этом нет необходимости.
  • Session Management - предназначен для сохранения/восстановления положений и размера окон в сессии в промежутках между входом/выходом пользователя). Если вам это не нужно, отключайте как и я поступил.
  • При отключении лишних мусорных плагинов лучше всего перейти в вкладку «Все» и отключать ненужно лишь листая вверх или вниз где все будет под рукой.

Отключаем Compiz плагины через ccsm

Возьмем к примеру приложение Network Manager. В списке плагинов данного приложения имеется ofono, в том случае если вы не используете мобильные соединения не пользуетесь модемами и у вас лишь кабельный интернет, можете смело отключать если вы не планируете пользоваться модемами. Чтобы отключить, в терминале выполните команду sudo gedit /etc/NetworkManager/NetworkManager.conf в строчке Plugin удалите ,ofono и сохраните изменения.

Рассмотрим более пристально плагины Network Manager

При запуске рабочего стола ubuntu, запускается много плагинов, о которых пользователь даже и не догадывается или не знает для чего они нужны, как он мог бы о них узнать если они в графическом интеpфейсе нигде не отображаются. Да, некоторые из них нужны, но не все и ниже мы обсудим те от которых можно избавиться.

Для отключения нужно сделать следующее, перейти в каталoг /etc/xdg/autostart:

Cd /etc/xdg/autostart sudo sed --in-place "s/NoDisplay=true/NoDisplay=false/g" onboard-autostart.desktop

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

Sudo sed --in-place "s/NoDisplay=false/NoDisplay=true/g" onboard-autostart.desktop

Посмотрим, что можно отключить:

  • Если вы не пользуетесь GPG, то gnome-keyring-gpg можете отключать, все равно системные утилиты будут напрямую обращаться к связке ключей.
  • Indicator-bluetooth, если вы не используете и не планируете использование Bluetooth, отключайте.
  • Indicator-messages предназначен для отображение входящих сообщений в почтовых клиентах, если не пользуетесь почтовыми клиентами, можете отключать, если пользуетесь, соответственно не отключать.
  • Indicator-printers - отображает подключение принтеры, если у вас нет принтера, отключайте.
  • Onboard-autostart - предназначен для запуска экранной клавиатуры, если не используете, отключайте, я отключил не раздумывая так как не пользуюсь ей и не планирую.
  • Orca-autostart - это экранная лупа, тот же мусор что и клавиатура, если у вас зрение хорошее, отключайте.
  • Print-applet - плагин который отображает задания на печать, как я писал выше к indicator-printers, если нет принтера, отключайте.
  • Telepathy-indicator - плагин который отображает уведомления от этого клиента, если вы им не пользуетесь, отключайте.
  • Update-notifier - плагин для уведомлений об обновлениях. Если вам не лень самому запустить процесс обновления, можете отключать.
  • Zeitgeist-datahub - плагин который имеет роль коллектора который запускает разные собиратели информации по технологии Zeitgeist. Эта технология регистрирует активного пользователя в целях восстановления хронологии событий. Да, стоит напомнить, что эта технология очень хорошо связана с Unity, чтобы ее отключить придется выполнить дополнительные манипуляции.

В первую очередь нужно закрыть доступ записи в файл БД для процесса zeitgeist-daemon, откройте терминал CTRL+ALT+T и выполним следующую команду:

Chmod -rw ~/.local/share/zeitgeist/activity.sqlite

Проверим, что этот процесс туда писать не может:

Zeitgeist-daemon --replace

Если вы выполнили все правильно, после выполнения команды выше, он должен поругается, что нет доступа к файлу БД, после можно отключать плагин.

Используем zRam для увеличения памяти

Используя zRam, мы можем немного пожертвовать в производительности для увеличения количества памяти. Как работает zRam, создается сжатое блочное устройство в вашей памяти и в последующем размещает на нем своп. В результате за счет сжатия мы получаем экономию памяти в два раза.

Для активации zRam, вам нужно установить следующие пакет:

Sudo apt-get install zram-config

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

Sudo swapon -s

Если все хорошо прошло, у вас на устройстве /dev/zram0 появится своп. По дефолту создается по одному на каждый процессор.

Вывод

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

В дополнение еще несколько советов, если вы хотите иметь легкую в работе систему, установите другие более легкие окружения рабочего стола не используя Unity, количество доступных окружений достаточное для выбора, я надеюсь вы подумаете над этим и выберите для себя более оптимальное и легкое.

Если у вас два гигабайта оперативной памяти, вместо нагрузочных приложений, например взяв офисный пакет LibreOffice Writer, вы можете заменить на более легкий AbiWord, вместо системного браузера который предустановлен по умолчанию Firefox, выберите более легкий, например Midori.

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

Пока наши братья-гентушники неделями компилят свою систему, мы применим парочку советов и точно обгоним самого быстрого пингвина на планете. Убунту и так шла практически вровень с Gentoo, но наши изменения позволят вырвать победу из лап Pygoscelis papua. Пристегнись, мы ускоряемся!

Отключение Compiz

Compiz -композитный менеджер окон для X Window System, использующий OpenGL для ускорения 3D-графики. Он предоставляет множество новых графических эффектов, доступных в любых средах рабочего стола, в том числе GNOME и KDE. Если у тебя установлены драйвера для видеокарты, то, скорее всего, менеджер включен. Помни, что видеокарта с Compiz, включенным в режиме «Производительность по запросу», постоянно работает на полную нагрузку и не собирается сбавлять обороты вентилятора. Если хочешь от видеокарты тишины или бережешь киловатты, советую упростить эффекты Compiz или отключить его совсем. В первом случае нужно установить пакет compizconfig-settingsmanager через Синаптик или в Терминале скомандовать:

$ sudo aptitude install
compizconfig-settings-manager

Чтобы получить доступ к возможностям Compiz и упростить эффекты по своему вкусу, проходим по маршруту: Меню {„ Система „„ Параметры „| Менеджер настройки Compiz Config. Если желаешь просто отключить Compiz, то это можно сделать через пункт Меню „| Система Ћ Параметры r„ Внешний вид, в закладке «Внешний вид» выстави «Без эффектов».

Уменьшение задержек GTK

В Ubuntu рабочей средой является Gnome, где важную роль играет GTK. Изменяя настройки этого тулкита, мы влияем на все приложения, использующие его. Предлагаю подкрутить параметры, отвечающие за задержки:

$ gedit ~/.gtkrc-2.0
### Минимальное время в миллисекундах, в течение которого указатель должен оставаться на пункте меню перед появлением подменю
gtk-menu-popup-delay = 0
### Время в миллисекундах перед скрытием подменю, когда указатель перемещается на подменю
gtk-menu-popdown-delay = 0
### Задержка в миллисекундах перед появлением подменю после панели меню
gtk-menu-bar-popup-delay = 0

Ювелирная настройка Gnome

В Gnome настройки хранятся по аналогии с реестром MS Windows, с той лишь разницей, что «реестр» Gnome – это XML-файлы. Доступ к ним можно получить через редактор конфигураций gconf-editor или через вызов команды gconftool-2. Чтобы ускорить время отклика «реестра», предпримем следующие шаги:

1. Укажем Metacity не использовать анимационные эффекты, снизив тем самым потребление ресурсов:

$ gconftool-2 --type bool --set /apps/metacity/general/reduced_resources true

Единственное, что визуально изменится – при перемещении окон не будет отображаться содержимое;

2. Выключим анимацию включения/выключения панелей:

$ gconftool-2 --type bool --set /apps/panel/global/enable_animations false

3. Отключим вспомогательные технологии клавиатуры, мыши и т.д., предназначенные для людей с ограниченными возможностями:

$ gconftool-2 --type bool --set /desktop/gnome/interface/accessibility false

4. Зададим скорость анимации панелей «Быстрая»:

$ gconftool-2 --type string --set /apps/panel/global/panel_animation_speed panel-speed-fast

Если у тебя установлен режим, при котором во время наведения мыши на окно открытого приложения последнее выдвигается на передний план, то можно потвикать параметр auto_raise_delay, контролирующий задержку между наведением мыши и выдвижением окна:

$ gconftool-2 --type integer --set /apps/metacity/general/auto_raise_delay 100

Оптимизация XML

В структурированных файлах XML многие программы в Ubuntu хранят настройки и данные. Есть возможность преобразовать XML из «читабельного» формата, понятного человеку, в формат, удобный компьютеру. Преобразованные XML-файлы быстрее загружаются и занимают меньше ОЗУ. В таком преобразовании помогут скрипты, которые можно скачать по адресу: www.gnomefiles.org/app.php?soft_id=1397 . Распаковываем полученный архив (desktop-optimizations.tar.gz) и по очереди запускаем скрипты от обычной учетной записи:

  1. rhythmbox-quickstart оптимизирует файлы музыкального проигрывателя Rhythmbox;
  2. evolution-optimize оптимизирует файлы почтовой программы Evolution;
  3. gnome-optimize оптимизирует файлы Gnome;
  4. openoffice-optimize оптимизирует файлы офисного пакета OpenOffice. org;
  5. doc-optimize оптимизирует файлы помощи Gnome;
  6. gconf-optimize оптимизирует файлы конфигураций Gnome («реестр» Gnome).

Если в системе несколько аккаунтов, то скрипты rhythmbox-quickstart и gconf-optimize нужно запускать от каждой учетной записи. Ничего страшного не произойдет, если ты запустишь скрипты несколько раз – оптимизация «уже оптимизированного» не разрушительна. Желательно перезайти в систему после оптимизации XML для того, чтобы изменения вступили в силу.

Скрипты оптимизируют как файлы в домашней директории, так и системные файлы, запрашивая привилегии через sudo. Скрипты делают резервные копии, но если при длительной процедуре оптимизации у тебя из-за сбоя электросети перезагрузится компьютер, то результаты, возможно, будут неоднозначны и плачевны. Наличие ИБП приветствуется.

Ускорение запуска программ, использующих QT

Традиционно считается, что Gnome - это GTK, а KDE - это Qt, но пользователю ничто не мешает запускать программы GTK в KDE, а Qt программы в Gnome. Даже больше! Авторы Gnome и KDE многое сделали, чтобы «чужие» программы внешне выглядели так же, как «родные». Сейчас мы рассмотрим, как ускорить запуск программ, написанных с использованием Qt в Gnome. В действительности, Qt"шная прога может не зависеть от KDE, но использовать возможности этой среды. Для этого при старте она должна получить «минимальный набор KDE». Как узнать, какие программы зависят от KDE? В Терминале даем команду:

$ sudo aptitude search "~i!~nlib(~Dqt|~Dkde)"

На экран будут выведены пакеты, которые установлены ("~i") И это не библиотека ("!~nlib") И в зависимостях есть Qt ("~Dqt") ИЛИ в зависимостях есть KDE ("~Dkde"). Заранее запуская «минимальный набор KDE» и удерживая в памяти соответствующие библиотеки, мы добьемся ускорения при старте этих программ. Трюк весьма прост: в Меню DE Система „t Параметры „‘ Запускаемые приложения добавляем запускаемую программу /usr/bin/kdeinit под именем FastQt. Все, после перезагрузки компьютера твои Qt-программы будут стартовать быстрее.

Ускорение запуска программ с помощью Preload

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

$ sudo aptitude install preload

Или запустить Синаптик, найти в нем preload и установить его. Настройки preload по умолчанию подходят для большинства пользователей, поэтому изменять что-либо в файле /etc/preload.conf не нужно.

Легкая оптимизация файлов SQLITE

Многие программы в Ubuntu хранят свои данные не в текстовых файлах, а в базах данных, и часто в качестве последних выступают SQLite. Средствами таких СУБД можно почистить пустые записи и создать индексы файла базы данных заново. Первым делом устанавливаем sqlite3 через Синаптик или набираем в Терминале:

$ gedit ~/bin/optimizer.sh
#!/bin/sh
### Оптимизация для Firefox
find ~/.mozilla/ -name "*.sqlite" -print -exec
sqlite3 {} "VACUUM; REINDEX;" > /dev/null 2>&1 \;
### Оптимизация для Epiphany
find ~/.gnome2/epiphany -name "*.sqlite"
-print -exec sqlite3 {} "VACUUM; REINDEX;" >
/dev/null 2>&1 \;
### Оптимизация для Liferea
sqlite3 ~/.liferea*/liferea.db "VACUUM;
REINDEX;" > /dev/null 2>&1
exit 0

С помощью команды «chmod +x ~/bin/optimizer.sh» делаем файл исполняемым.
Периодически можно вызывать этот скрипт при закрытых программах, чьи файлы баз данных мы хотим оптимизировать.

Тотальная оптимизация файлов SQLITE

В предыдущем разделе мы оптимизировали SQLite-файлы данных браузеров Firefox, Epiphany и RSS-читалки Liferea. Сейчас немного усложним задачу. Найдем в домашней директории все SQLite-файлы и конкретно их заоптимизируем:). Что нам потребуется?

1. Установи sqlite3 через Синаптик или в Терминале, если ты еще этого не сделал:

$ sudo aptitude install sqlite3

2. Создай файл ~/bin/sqlite_shrink.sh следующего содержания:

$ gedit ~/bin/sqlite_shrink.sh
#!/bin/sh
find ~/ -size +100k -type f -print0 | \
while read -d "" FILE; do
abs_file_name=$(readlink -f "$FILE")
headfile=`head -c 15 "$abs_file_name"`;
if [ "$headfile" = "SQLite format 3" ]; then
file_size_do=`du -b "$abs_file_name"|cut
-f1`;
sqlite3 "$abs_file_name" "VACUUM; REINDEX;" > /
dev/null 2>&1
file_size_posle=`du -b "$abs_file_name"|cut -f1`;
echo "$abs_file_name";
echo "Размер ДО $file_size_do";
echo "Размер ПОСЛЕ $file_size_posle";
echo -n "Процент "
echo "scale=2; ($file_size_posle/$file_size_
do)*100"|bc -l
fi
done
sleep 2
exit 0

3. Сделай ~/bin/sqlite_shrink.sh исполняемым через Наутилус или в Терминале «chmod +x ~/bin/sqlite_shrink.sh».

4. Теперь закрой сеанс в Ubuntu и перейди в консоль, нажав . Залогинься в консоли и командуй:

$ sudo /etc/init.d/gdm stop
$ sudo /etc/init.d/kdm stop
$ ~/bin/sqlite_shrink.sh > ~/report_sqlite_shrink.txt

5. Дождись окончания работы скрипта и перезагружайся:

$ sudo shutdown -r +0

После тотальной реиндексации файлов все программы, использующие SQLite, получат выигрыш. А какие именно? Читай ~/report_sqlite_ shrink.txt, в нем увидишь имена файлов, размер до и после чистки и реиндексации. Любители Google Chrome и KDE точно будут рады данному совету. Периодически повторяй процедуру, и освежающий эффект гарантирован.

Создание кэшей

GTK+ может использовать файлы кэша, созданные gtk-update-iconcache, чтобы избежать лишних системных вызовов и дисковых операций при запуске приложений. Так как формат кэш-файлов позволяет множеству приложений (mmap()ed) совместно их использовать, общее потребление памяти тоже сокращается. Нам остается периодически запускать скрипт, который вызывает gtk-update-icon-cache, и создавать кэши, ускоряющие доступ к тем значкам. Вызовем заодно fc-cache, который создает описания для шрифтов.

$ gedit ~/bin/rebuild_cache.sh
#!/bin/sh
### Обновление кэша иконок в своей папке
for d in ~/.icons/*; do gtk-update-icon-cache -f $d;
done
### Обновление кэша иконок в системе
for d in /usr/share/icons/*; do sudo gtk-update-iconcache
-f $d; done
### Обновление кэша шрифтов
sudo fc-cache -fv
fc-cache ~/.fonts

Сделай файл исполняемым с помощью команды “chmod +x ~/bin/ rebuild_cache.sh”. Если добавляешь в систему новые шрифты и темы Gnome, то запускай скрипт ~/bin/rebuild_cache.sh, который построит для них кэши.

Кэширование символьных таблиц

Создай пустой каталог

$ mkdir ~/.compose-cache

Теперь твои Qt/GTK программы будут чуток быстрее стартовать и потреблять меньше памяти, благодаря тому, что libX11 будет создавать в ~/.compose-cache кэши распарсенной информации и использовать ее повторно.

Подкачка Ubuntu

В современных операционных системах используется понятие «подкачка страниц». Вспомним, что это процесс, который при нехватке ОЗУ вытесняет неиспользуемые страницы памяти в область, называемую разделом подкачки. Когда страница снова нужна, ее загружают обратно в ОЗУ. Поскольку своп обитает на жестком диске, который в разы медленнее оперативки, активное перемещение страниц тудасюда-обратно замедляет работу компьютера в целом. Вывод? Нужно, чтобы в компьютере было достаточно ОЗУ для твоих задач. Вывод банален, но это так.

В довершение немного изменим поведение Ubuntu в отношении использования ОЗУ и области подкачки. Есть такой параметр vm.swappiness, по умолчанию он имеет значение 60 и служит для того, чтобы определить процент свободной памяти, при котором начнется активный сброс страниц в раздел swap. Иными словами, при памяти, занятой на 40% (100-60), Ubuntu уже начнет использовать область подкачки. При большом количестве ОЗУ в компьютере лучше снизить значение параметра vm.swappiness до 10, тем самым дав пингвину указание не использовать swap, пока занятый объем оперативки не достигнет 90% (100-10). Для такого изменения проще всего запустить Терминал и в нем скомандовать:

$ sudo sh -c "vm.swappiness = 10" >> /etc/sysctl.conf

После перезагрузки шустрая оперативка будет более эффективно использоваться, а медленный swap – реже задействоваться.

Заключение

Ты должен понимать, что настройки всегда по определению консервативны, и разработчик ОС/программы стремится, чтобы они работали на большом спектре систем. Поэтому тюнинг операционки - это не нажатие одной кнопки с надписью «Сделать все быстро». Понимая, что описано в совете, и анализируя, чем именно достигается ускорение, ты аккуратно применяешь команды и внимательно следишь за поведением системы. Надеюсь, что советы тебе пригодились, и твой пингвин стал более отзывчивым.

Info

  • Проверить степень отзывчивости интерфейса позволит GTKPerf: linux.softpedia.com/progDownload/GtkPerfDownload-6715.html
  • Применяй советы по одному, каждый раз желательно перезагружать систему. Проверяй влияние совета временем, не торопись.
  • Чудес не бывает. Советы либо задействуют свободную память, либо отключают чтото для ускорения.
Похожие публикации