# Maximizing performance (Русский)

Эта страница нуждается в сопроводителе

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

Эта статья является ретроспективным анализом и кратким изложением того, как увеличить производительность в Arch Linux.

## Основы

### Узнай свою систему

Лучший способ настроить систему — определить «узкие места», т.е. подсистемы, которые снижают общую скорость работы. Как правило, они могут определены, зная характеристики системы, однако есть несколько основных признаков:

- Если компьютер начинает медленнее работать при запуске «больших» приложений, таких как OpenOffice и Firefox, запущенных одновременно, то существует большая вероятность того, что объём оперативной памяти недостаточен. Чтобы проверить объём оперативной памяти, используйте эту команду:

    $ free -m

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

    $ hdparm -t /dev/sdX

Это только скорость чтения с диска и не является абсолютным критерием, но значение скорости выше 40 МБ/с можно считать приемлимым для средней системы.

- Если загрузка процессора постоянно высокая, даже когда есть достаточно оперативной памяти, то снижение загрузки процессора является приоритетной задачей. Загрузку процессора можно контролировать множеством способов, например, используя команду top (а лучше htop):

    $ top

- Если медленно работают только те приложения, которые используют ускорение (direct rendering), т.е. где используется видеокарта (видеоплееры, игры и т.п.), то увеличение производительности видеокарты возможно будет достичь. Чтобы убедиться в этом, поставьте `mesa-demos`:

    # pacman -S mesa-demos

Затем попробуйте запустить эту команду на 20 секунд (vblank_mode=0 отключает вертикальную синхронизацию у свободных драйверов):

    $ vblank_mode=0 glxgears

Если у вас ниже 300 FPS, то, возможно, у вас отключён direct rendering. Чтобы проверить это, введите команду:

    $ glxinfo | grep direct

## Первое, что необходимо сделать

Самый простой и эффективный способ повысить общую производительность — это использовать легковесные окружения (Desktop Environment) и легковесные приложения:

- Использовать оконный менеджер вместо среды рабочего стола. Вы можете выбрать dwm, Openbox или JWM.
- Выберите минималистичные оркужения рабочего стола (не GNOME и KDE), а, например, LXDE или Xfce.
- Используйте легковесные приложения. См. список приложений и темы на форуме, посвящённые легким и быстрым приложениям: 2007, 2008, 2009, and 2010.
- Удалите из запуска все ненужные демоны. Для этого надо сначала посмотреть какие демоны запущены:

    $ systemctl

Затем, если вам, например, не нужен avahi-daemon.service, ввести:

    # systemctl disable avahi-daemon

## Жёсткие диски

### Выбор и настройка файловых систем

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

### Резюме

- XFS: Высокая производительность при работе с большими файлами. Низкая скорость при работе с маленькими файлами. Хороший выбор для /home.
- Reiserfs: Хорошая производительность при работе с маленькими файлами. Хороший выбор для /var.
- Ext3: Средняя производительность, надёжность.
- Ext4: Превосходная общая производительность, надёжность, имеет проблемы с производительностью SQLite и другими базами данных.
- JFS: Хорошая общая производительность, низкое потребление ресурсов процессора.
- Btrfs: Превосходная общая производительность (лучше чем у ext4), надёжна (как только станет стабильной). Множество функций. Тем не менее эта файловая система находится на стадии разработки, и рассматривается как нестабильная. Не используйте эту файловую систему, если вы не знаете, что вы делаете, и не готовы к возможной потери данных.

### Параметры монтирования

Опции монтирования позволяют легко увеличить скорость без переформатирования. Они могут быть установлены при использовании команды mount:

    $ mount -o option1,option2 /dev/partition /mnt/partition

Чтобы сделать эти опции постоянными, измените свой /etc/fstab

    /dev/partition /mnt/partition partitiontype option1,option2 0 0

Два параметра, которые увеличивают проивзодительность почти всех файлов систем — это noatime, nodiratime. Первый является расширением второго, который применяется только к каталогам (noatime применяется и к каталогам и к файлам). В редких случаях, например если вы используете mutt, это может стать причиной незначительных проблем. Их вы можете использовать вместо параметра relatime.

### Ext3

Смотри Ext3 Filesystem Tips.

### JFS

Смотри JFS Filesystem.

### XFS

Для оптимизации скорости создайте XFS командой:

    # mkfs.xfs -l internal,lazy-count=1 size=128m -d agcount=2 /dev/thetargetpartition

Такой специфичный для XFS параметр монтирования как `logbufs=8` может увеличить производительность.

    #/etc/fstab
    LABEL=XFSHOME /home xfs noatime,logbufs=8 0 1

### Reiserfs

Параметр `data=writeback` увеличивает скорость, но это может привести к повреждению данных при отключении питания. Опция монтирования ((Codeline | notail)) увеличивает пространство, используемое файловой системы примерно на 5 %, но и повышает общую скорость. Вы также можете уменьшить нагрузку на диск, располагая файловую систему и журнал на разных дисках. Сделать это можно следующим образом:

    # mkreiserfs –j /dev/hda1 /dev/hdb1

Тут /dev/hda1 будет зарезервирован для журнала, а /dev/hdb1 для данных. Вы можете узнать больше о ReiserFS в этой статье.

### Btrfs

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

#### mkinitcpio.conf для btrfs

Для Btrfs в качестве некорневой файловой системы модули и зависимости загружаются, когда это необходимо. При использовании btrfs в качестве корневой файловой системы в загрузочном ramdisk должен быть соответствующий модуль. Модуль btrfs зависит от libcrc32c. Вам нужно добавить crc32c модули в /etc/mkinitcpio.conf, как показано ниже:

    MODULES="crc32c libcrc32c zlib_deflate btrfs"

Это позволяет избежать ошибок, таких как «неизвестный символ» при загрузке Btrfs модулей. См. также mkinitcpio-btrfs.

### Сжатие /usr

Одним из способов увеличить скорость чтения данных с диска — это сжатие, т.к. уменьшается объём данных для чтения. Однако данные должны быть распакованы, что увеличит нагрузку на ЦП. Некоторые файловые системы поддерживают прозрачное сжатие, такие как Btrfs и Reiserfs4, но их сжатия ограничивается 4K (btrfs 128К) размер блока. Поэтому в этом руководстве рассматривается сжатие /usr в SquashFS и последующее монтирование через Aufs. Это экономит довольно много места, как правило две трети, и приложения запускаются быстрее. Однако установка, обновление или перестановка приложений будут перезаписывать несжатый /usr, поэтому вам придётся периодически сжимать /usr. SquashFS уже включён в ядро, Aufs можно найти в extra репозитории, так что перекомпиляция ядра не требуется. Чтобы всё это заработало, нужно установить всего два пакета:

    # pacman -S aufs2 squashfs-tools

Эта команда установит Aufs модули и некоторые утилиты для файловой системы SquashFS. Теперь нам понадобятся две директории. Одна для сохранения сжатого /usr в режиме «только для чтения» и вторая — для записи изменений с момента последнего сжатия, т.е. «для записи».

    $ mkdir -p /squashed/usr/{ro,rw}

### Кэширование файлов

Есть такой параметр vm.vfs_cache_pressure. Он влияет на тенденцию ядра освобождать оперативную память, использованную для кэширования объектов ФС. Значение по умолчанию 100. При значении 0, объекты он кэширует (в оперативную память) навсегда. Чем больше значение, тем чаще ядро занимается чисткой их (так будет больше свободной оперативной памяти). Если у вас оперативной памяти не хватает (например, всего 2 ГБ), то лучше поставить 1000:

    # sysctl -w vm.vfs_cache_pressure=1000

Эта команда будет действует только на текущий сеанс ОС. А чтобы при каждом старте ОС действовало, надо:

    # echo "vm.vfs_cache_pressure=1000" >> /etc/sysctl.d/99-sysctl.conf

## Процессор

Единственный способ увеличить производительность ЦП — его разгон (оверклокинг). Так как это сложный рискованный процесс, производить его рекомендуется только экспертам. Не забывайте, что у многих материнских плат под процессоры Intel отключена возможность разгона.

Также многие Intel Core i5 и i7, даже после правильного оверклокинга через BIOS или UEFI, не могут сообщить правильную частоту acpi_cpufreq и многим другим утилитам.

### VeryNice

VeryNice — демон, который доступен в AUR под названием veryniceAUR. Он занимается динамической регулировкой приоритетов (nice level) приложений. Чем больше приоритет, тем относительно больше ресурсов будет выделено именно этому приложению. Это особенно может пригодиться для мультимедиа приложений (например, чтобы проигрывание и запись видео была без особых задержек). Просто определите важные процессы в `/etc/verynice.conf` как goodexe, а ненужные CPU-hungry (например, make, gcc, g++ при компиляции) как badexe. При большой нагрузкe всё это сильно поднимет отзывчивость системы.

Однако для PulseAudio приоритет надо править в файле `/etc/pulse/daemon.conf`, после чего произвести перезагрузку.

Category:

- Русский