Ускорение xubuntu. Настройка Swappiness и кеширования в Linux

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

В ОС семейства 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.

Де́мон (англ. daemon) - в системах класса UNIX - служба, работающая в фоновом режиме без прямого общения с пользователем. Демоны обычно запускаются во время загрузки системы. Типичные задачи демонов: серверы сетевых протоколов (HTTP , FTP , электронная почта и др.), управление оборудованием, поддержка очередей печати, управление выполнением заданий по расписанию и т. д. В зависимости от задач, выполняемых компьютером, некоторые из этих демонов можно отключить и, таким образом, сэкономить на времени запуска системы и уменьшить нагрузку на систему во время работы. Для этого воспользуемся утилитой sysv-rc-conf . Утилита эта консольная, но очень проста и интуитивно понятна, поэтому использовать ее могут даже люди с паническим страхом терминала. Установка:

sudo apt-get install sysv-rc-conf

Запускаем:

sudo sysv-rc-conf

В терминале получаем следующее: Управление осуществляется несколькими клавишами: Пробел - ставим/убираем крестик, + - - остановка/запуск процесса, Q - выход.

Цифры в верхей строчке - это уровни выполнения. Для отключения сервиса, надо просто убрать крестик со всех уровней.

    Acpi-support - Лучше оставить уровень по умолчанию. То есть: 2,3,4,5.

    Acpid - Демон acpi. Этот и предыдущий процессы отвечают за управление питанием и очень важны и для ноутбуков, и для рабочих станций, так что лучше оставить их включенными. По умолчанию: 2,3,4,5.

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

    Alsa - Если используется звуковая подсистема alsa, то да, запуск надо оставить. Но если у вас есть служба alsa-utils, то эту можно отключить. По умолчанию: выключена, если включена alsa-utils.

    Alsa-utils - В моей системе эта служба заменяет alsa, так что я выключил alsa и включил эту на уровне S. -Примечание- Говоря «Выключил» я подразумеваю - снял все «X» со всех уровней выполнения. Если у вас их и не было - замечательно. Продолжаем настройку. По умолчанию: уровень выполнения S.

    Anacron - Подсистема cron, которая выполняет любую его задачу, которая не была выполнена вовремя. Чаще всего такое случается, если в момент наступления задачи по cron ваш компьютер был выключен. Например, updatedb запланирован каждый день на 2 часа ночи, но в это время компьютер не работал. При запуске компьютера anacron попытается определить пропущенные задачи и выполнит их. Я убрал эту службу, поскольку не так часто выключаю свой ноутбук, но в большинстве случаев она должна быть включена. По умолчанию: 2,3,4,5.

    Apmd - Эта служба меня немного смутила. У меня уже включен acpid, так зачем мне включать ещё и apmd? Если ваш компьютер не настолько старый, чтоб даже не поддерживать acpi, попробуйте отключить эту службу. Я отключил. По умолчанию: 2,3,4,5.

    Atd - Планировщик, наподобие cron. Я отключил. По умолчанию: 2,3,4,5.

    Binfmt-support - Поддержка ядром других форматов бинарников. Я оставил. По умолчанию: 2,3,4,5.

    Bluez-utiles - Я выключил. У меня нет устройств bluetooth. По умолчанию: 2,3,4,5.

    Bootlogd - Оставьте запускаться. По умолчанию: S.

    Cron - Тоже надо оставить. По умолчанию: 2,3,4,5.

    Cupsys - Подсистема для управления принтером. У меня принтера нет, так что я смело отключил, но вы смотрите по обстоятельствам. По умолчанию: 2,3,4,5.

    Dbus - Система сообщений (Message bus system). Очень важна, оставьте включённой. По умолчанию: 2,3,4,5.

    Dirmngr - Утилита управления списками сертификатов. Работает заодно с gnupg. По умолчанию: 2,3,4,5.

    Dns-clean - В основном служит для очистки DNS при использовании соединений dial-up. У меня нет dial-up, так что я выключил. По умолчанию: S.

    Evms - (Enterprise Volume Management System) - система управления томами для ОС Linux. EVMS предлагает единые унифицированные механизмы для управления дисками, дисковыми разделами, файловыми системами, физическими томами LVM ит.д. Я выключил. По умолчанию: S.

    Fetchmail - Демон доставки электронной почты. Я выключил. По умолчанию: 2,3,4,5.

    Gdm - Менеджер рабочего стола (Gnome Desktop Manager). Я его в любом случае уже выключил, когда решил загружаться в консоль. В данном случае - дело предпочтений, так что решать вам, хотите ли вы загружаться напрямую в GUI . По умолчанию: 2,3,4,5.

    Gdomap - Я понятия не имею, зачем этот процесс должен запускаться. Я не видел этого демона больше ни в одной системе, так что я его выключил и не чувствую какой-либо утраты. Есть какие-нибудь причины для его использования на ноутбуках или рабочих станциях? По умолчанию: 2,3,4,5.

    Gpm - Поддержка мыши для консоли. Если вы чувствуете, что не можете обойтись без мыши в консоли - поставьте уровень выполнения 1 и 2. Это всё, что нужно. По умолчанию: 2,3,4,5.

    Halt - Не менять. По умолчанию: 0.

    Hdparm - Скрипт для подстройки жёсткого диска. Я отключил уровни 2,3,4,5, но установил уровень S. Я полагаю, что открытие DMA, 32-битного ввода-вывода и т.д. принесёт пользу остальным процессам. Также я сменил родной скрипт на очень простой, который сделал самостоятельно. Я думаю, не стоит производить все эти избыточные проверки, если я сам знаю, что делаю. Файл конфигурации - /etc/hdparm.conf. По умолчанию: 2,3,4,5.

    Hibernate - Если ваша система поддерживает спящий режим - оставьте службу работать. В противном случае она бесполезна. По умолчанию: S.

    Hotkey-setup - Этот демон включает некоторые специфические горячие клавиши в ноутбуках. Есть заводская поддержка: HP, Acer, ASUS, Sony, Dell, и IBM. Если у вас ноутбук этих производителей, можно оставить службу запускаться, в противном случае её запуск будет бесполезен. По умолчанию: 2,3,4,5.

    Hotplug и hotplug-net - Включение подсистем hotplug занимает время. Я бы задумался, включать ли их вообще. Я сделал несколько изменений в своём файле /etc/network/interfaces. Вместо того, чтобы адресовать свою беспроводную карту в процессе hotplug, я включил её в автоматический режим. Таким образом, я могу отключить эти процессы. Я удостоверился, что даже при их отключении, ubuntu находит драйверы usb, цифровой камеры и так далее. Так что, думаю, отключение этих процессов достаточно безопасно. -Примечание- Если после отключения hotplug ваша звуковая карта перестала работать, можно включить его обратно. Или можно отредактировать файл /etc/modules, чтобы добавить модуль драйвера звуковой карты. Более поздние работают быстрее, проверено. По умолчанию: S.

    Hplip - Подсистема печати и обработки изображений HP. Я отключил. По умолчанию: S.

    Hwtools - Утилита для оптимизации irq.

    Ifrename - Скрипт по именованию сетевых интерфейсов. Звучит красиво, но я отключил. Нужен, в основном, для управления именами нескольких сетевых интерфейсов. С тех пор, как у меня две сетевые карты - беспроводная и проводная - они обозначены ядром как eth0 и ath0, так что процесс для меня бесполезен. По умолчанию: S.

    Ifupdown и ifupdown-clean - Не отключайте. Это скрипты для включения сетевых интерфейсов при загрузке. По умолчанию: ifupdown - 0,6,S и ifupdown-clean - S.

    Inetd или inetd.real - Посмотрите в файл /etc/inetd.conf и закомментируйте все службы, которые вам не нужны. Если активных служб после этого не осталось - демон можно смело убирать из запуска. По умолчанию: 2,3,4,5.

    Klogd - Не выключать. По умолчанию: 2,3,4,5.

    Laptop-mode - Служба для проверки в ноутбуке: не пора ли выкинуть батарею. Бесполезна для стационарного компьютера. По умолчанию: 2,3,4,5.

    Libpam-devperm - Демон для восстановления прав доступа к файлам-устройствам после сбоя системы.

    Linux-restricted-modules-common - Нужно посмотреть, не загружены ли несвободные модули в систему. Эти модули можно найти в /lib/linux-restricted-modules. Если такие модули не используются - можно смело отключать демона. По умолчанию: 0,6,S.

    Lm-sensors - Если материнская плата поддерживает сенсорные чипы, можно посмотреть их состояние.

    Lvm - Я не использую, потому отключил. Оставьте, если у вас есть lvm. По умолчанию: S.

    Makedev - Не отключать. По умолчанию: 2,3,4,5.

    Mdamd - Инструмент для управления устройствами RAID . В большинстве случаев можно отключить. По умолчанию: 2,3,4,5.

    Mdamd-raid - Инструмент RAID . По умолчанию: S.

    Module-init-tools - Загружает дополнительные модули из файла /etc/modules. Можно посмотреть его содержимое на наличие ненужных модулей. Обычно включен. По умолчанию: S.

    Mountvirtfs - Монтирование виртуальных файловых систем. Не отключать. По умолчанию: S.

    Networking - Поднимает сетевые интерфейсы и конфигурирует DNS при загрузке, путём сканирования файла /etc/network/interfaces. Отключать не стоит. По умолчанию: 0,6,S.

    Ntpdate - Синхронизирует время с сервером времени ubuntu (или заданным другим). По умолчанию: S. -Примечание- Если второй системой стоит Windows, лучше оставить процесс включённым. Windows хранит в BIOS не универсальное (по Гринвичу), а локальное время и при перезагрузке из одной системы в другую они будут пытаться корректировать друг друга. В последних версиях эта проблема вроде бы исправлена.

    Nvidia-kernel - Я собирал драйвер nvidia самостоятельно, поэтому мне служба не нужна. Если используете несвободный драйвер nvidia - оставьте службу включённой. По умолчанию: 1,2,3,4,5.

    Pcmcia - Активирует устройство PCMCIA. Я поставил уровень выполнения в 0,6,S вместо умолчательных 2,3,4,5, поскольку, по моему мнению, оборудование надо подключать в первую очередь. С другой стороны, если устройства PCMCIA не используются, то и службу можно отключать.

    Portmap - Демон для управления такими службами, как nis, nfs, и т.д. По умолчанию: 2,3,4,5,0,6,S.

    Powernowd - Клиент для управления cpufreq. Нужен в основном для ноутбуков с поддержкой технологии изменения частоты процессора. Полезен для ноутбуков и наоборот для стационарных компьютеров. По умолчанию: 2,3,4,5.

    Ppp и ppp-dns - Мне не нужно. У меня нет dial-up. По умолчанию: ppp - 2,3,4,5 и pppd-dns - S.

    Readahead - Похоже, readahead это разновидность «предзагрузчика». Загружает при старте несколько библиотек в оперативную память, что позволяет некоторым программам быстрее стартовать. Но увеличивает время загрузки системы на 3-4 секунды. По умолчанию: S.

    Reboot - Не менять. По умолчанию: 6.

    Resolvconf - Автоматически настраивает DNS в соответствии со статусом сети. По умолчанию: S.

    Rmnologin - Убирает nologin, если находит. У меня такого не будет, я убрал. По умолчанию: 2,3,4,5.

    Rsync - Демон rsync. Можно убрать, если не уверены, что он вам нужен. По умолчанию: 2,3,4,5.

    Urandom - Генератор случайных чисел. Нельзя угадать какому приложению, особенно в графике, может понадобиться. По умолчанию: 0,6,S.

    Usplash - Картинка при загрузке системы, с индикатором загрузки. Для полного отключения надо редактировать файл /boot/grub/menu.lst: закомментировать строку splashimage и убрать опцию splash из строки загрузки ядра. По умолчанию: 2,3,4,5.

    Vbesave - Утилита для настройки BIOS видеокарты. По умолчанию: 2,3,4,5.

    Xinetd - Сверхдемон inetd для управления другими демонами. Включать имеет смысл только в том случае, если есть демоны под его управлением.

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

Пока наши братья-гентушники неделями компилят свою систему, мы применим парочку советов и точно обгоним самого быстрого пингвина на планете. Убунту и так шла практически вровень с 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
  • Применяй советы по одному, каждый раз желательно перезагружать систему. Проверяй влияние совета временем, не торопись.
  • Чудес не бывает. Советы либо задействуют свободную память, либо отключают чтото для ускорения.

В целом пользователи Linux пользуются более быстрой операционной системой, чем пользователи Windows. Однако, если вы используете среду с супертяжелом окружением, например, Unity, ваш Ubuntu 16.04 может работать медленно. В этом посте перечислены 4 простых совета, которые вы можете применить, чтобы ускорить работу системы Ubuntu 16.04. Вы увидите увеличение скорости на low-end оборудовании и в Virtualbox. Это также помогает, даже если вы установили Ubuntu на твердотельный диск.

Кстати, мы уже писали о том, как существенно ускорить скорость работы и производительность Ubuntu в VitrualBox на нашем сайте. Если вы пользуетесь системой через эту программу, то вам будет интересно.

Давайте посмотрим, как сделать Ubuntu 16.04 быстрее !

  1. Отключите ненужные приложения для запуска, чтобы ускорить загрузку Ubuntu.

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

Большинство приложений запуска скрыты. Чтобы отобразить их, выполните следующую команду:

sudo sed -i ‘s/NoDisplay=true/NoDisplay=false/g’ /etc/xdg/autostart/*.desktop

Затем запустите приложение для запуска из Unity Dash.

Чтобы отключить загрузочное приложение, просто снимите его.

Вот некоторые приложения, которые вы можете найти нежелательными.

Ускорение Ubuntu: Диспетчер профилей доступности

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

Резервный монитор

Это deja-dup-монитор. Если вы не хотите копировать что-либо с помощью deja-dup, отключите его.

Ускорение Ubuntu: Caribou

Отключите его, если вам не нужна экранная клавиатура.

Общий доступ к рабочему столу

Это для подключения VNC. Отключите его, если вам не нужно никого, чтобы удаленно управлять вашей системой Ubuntu. У вас все еще есть возможность удаленного управления компьютером других через VNC.

Программное обеспечение Gnome

Отключите его, если вы хотите установить программное обеспечение в терминал и не использовать программное обеспечение Gnome.

Устройство чтения с экрана Orca

Отключите это, если вы хотите ускорить Ubuntu.

Ускорение Ubuntu: Общий доступ к файлам

Отключите его, если вы не используете bluetooth для обмена файлами.

Уведомления об обновлениях

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

Еще один способ ускорить процесс загрузки Ubuntu — отключить некоторые службы systemd. Вы можете просмотреть дополнительные запускаемые приложения, выполнив следующую команду в терминале.

systemctl list-unit-files | grep enabled

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

sudo systemctl disable

Например, мой компьютер не имеет bluetooth, поэтому я могу отключить службу bluetooth.

sudo systemctl disable bluetooth.service

У меня нет принтера, поэтому я также могу отключить cups.service.

sudo systemctl disable cups.service

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

  1. Отрегулируйте Swappiness

Ускорение Ubuntu 16.04 требует комплексного подхода. Поэтому, этот вариант также пригодится.

Мы все знаем, что оперативная память намного быстрее, чем жесткий диск.

Давайте немного поэкспериментируем: загрузите систему Ubuntu 16.04, откройте несколько приложений, таких как Firefox, LibreOffice, Mozilla Thunderbird, Evince document viewer, а затем ничего не делайте с этим. Не приостанавливайте или не спящий режим. Затем через несколько часов вернитесь к своему Ubuntu 16.04. Вы обнаружите, что эти приложения плохо реагируют на ваши щелчки мышью, потому что они бездействовали и выгружались на жесткий диск.

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

Это связано с значением swappiness по умолчанию для Ubuntu. Swappiness — это параметр ядра Linux, который контролирует, как часто Linux сворачивает незанятые процессы в пространство подкачки на вашем жестком диске.

Значение swappiness находится между 0 ~ 100. Нижнее значение означает, что Linux будет использовать пространство подкачки меньше, тогда как более высокое значение заставляет Linux чаще использовать пространство подкачки. Значение по умолчанию для Ubuntu равно 60, что означает, что, если ваш компьютер использует до 40% физической памяти, ядро ​​Linux начинает подкачку. То есть ускорить Ubuntu можно просто правильно отрегулировав эту функцию.

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

cat /proc/sys/vm/swappiness

sudo sysctl vm.swappiness=10

Не добавляйте пробелы до и после знака равенства. Эта команда указывает ядру Linux использовать пространство подкачки при использовании 90% или более физической памяти. Этот параметр не является постоянным.

Чтобы сделать его постоянным при перезагрузках, вам необходимо отредактировать файл.

sudo nano /etc/sysctl.d/99-sysctl.conf

В конце этого файла добавьте следующую строку.

Сохраните и закройте этот файл. (Нажмите Ctrl + O, чтобы сохранить, нажмите Ctrl + X, чтобы выйти). Этот совет также применим к вашему серверу Ubuntu 16.04.

Следующий совет поможет существенно ускорить Ubuntu на любых конфигурациях устройств.

  1. Предварительно загружайте часто используемые приложения

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

Установите предварительную загрузку на Ubuntu 16.04 с помощью этой однострочной команды.

sudo apt install preload

После установки и «монтировки» предварительной загрузки, процесс будет автоматически запущен. Вы можете проверить это:

systemctl status preload

Если он не запущен, запустите его с помощью следующей команды:

sudo systemctl start preload

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

  1. Отключить дополнительные эффекты

Необычные эффекты — это глазные конфеты, но они могут замедлить работу вашего компьютера. Мы можем использовать compizconfig-settings-manager для их отключения.

sudo apt install compizconfig-settings-manager

Начните его с Unity Dash. Затем нажмите вкладку Эффекты слева и отключите эффекты, которые вам не нравятся. Вы можете отключить все эффекты, если хотите.

Вы также можете отключить размытие фона Unity Dash с помощью инструмента Tweak Unity, чтобы сделать Dash более отзывчивым.

sudo apt install unity-tweak-tool

Затем откройте его, выберите вкладку поиска и установите для параметра «Размытие фона» значение «Выкл.».

Некоторым людям нравится прозрачный фон. Какой вы предпочитаете? И насколько помог этот способ ускорить Ubuntu на вашей системе.

После

Ускорение Ubuntu как мы уже говорили, требует выполнение множества способов для хорошей производительности устройства.

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

Как вы можете видеть из приведенного выше скриншота, mnt-pi.mount и vboxadd.service являются виновниками на моем компьютере. Я знаю, что mnt-pi.mount отвечает за установку NFS с моего Raspberry Pi, но мне больше не нужна NFS, поэтому я могу безопасно удалить монтирование NFS из файла / etc / fstab. Я также знаю, что служба vboxadd полезна только для виртуальных машин, поэтому я могу отключить эту службу на своей физической машине.

sudo systemctl disable vboxadd.service

Чтобы узнать время загрузки, запустите:

После

Другие способы ускорить работу Ubuntu 16.04

Перевод статьи из отличного английского ресурса LinuxBabe .

Надеюсь, эти настройки производительности помогли вам сделать Ubuntu 16.04 быстрее. Знаете ли вы другие способы, которые могут ускорить работу Ubuntu 16.04 ? Поделитесь своими советами в комментариях ниже. Если вы нашли этот пост полезным, подпишитесь на нашу бесплатную рассылку или поделитесь ссылкой в Google+, Одноклассники, Twitter, ВКонтакте или, например, Facebook.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .

Изменим поведение 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