Оптимизация Linux для desktop и игр. Linux оптимизация


Как ускорить Linux | Losst

Linux дает много преимуществ своим пользователям. Например, его можно считать свободным от вирусов, поскольку их существует очень небольшое количество. Для многих очень важно, что никто, кроме вас, не будет контролировать то что вы делаете в системе. Свободное программное обеспечение звучит очень привлекательно, в свете последних событий, когда в прошлом году мы узнали что большие компании вроде Microsoft и Apple следят за своими пользователями.

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

Многие помнят, что кликнув двойным щелчком по ярлыку в Windows нужно достаточно долго подождать, пока запустится программа. Здесь у Linux тоже преимущество - он намного быстрее. И это касается всех, кто использует компьютер с новеньким восьмиядреным процессором, и тех у кого старый ноутбук прошлого века. Если вы хотите еще большое скорости в Linux, следуйте инструкциям из этой статьи. Дальше мы рассмотрим как ускорить Linux. Мы будем ориентироваться в первую очередь на Ubuntu, но все эти советы могут быть применены также к другим дистрибутивам.

Содержание статьи:

VirtualBox - ваш друг

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

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

1. Ускорение загрузчика Grub

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

Например, в Ubuntu - это 10 секунд. Обычно вы можете нажать Enter, но если вы находитесь далеко от машины, более благоразумным будет поставить интервал покороче, например, 3 секунды. Этого будет вполне достаточно чтобы выбрать ОС.

Чтобы ускорить загрузку linux откройте файл /etc/default/grub от имени root. Измените значение GRUB_DEFAULT = 10, на 3. А затем обновите конфигурацию Grub. Вот:

sudo vi /etc/default/grub

GRUB_DEFAULT=3

sudo grub-update

Или

sudo grub2-mkconfig -o /boot/grub/grub.cfg

2. Отключите сервисы

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

В системе инициализации на основе sysvinit все сервисы находятся в папке /etc/init.d и вы можете остановить те, которые вам не нужны. Посмотреть состояние всех сервисов можно командой:

service --status-all

Отключить сервис можно командой:

update-rc.d -f сервис remove

А в systemd:

sudo systemctl disable сервис

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

3. Ускорение файлового менеджера Nautilus

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

Чтобы перестать тратить процессорное время на эту задачу перейдите в меню Правка, Предварительный просмотр в Nautilus и измените параметр из Всегда или Только локальные файлы на Никогда.

Вы увидите, что теперь Nautilus работает намного быстрее.

4. Уменьшение нагрузки

Для старого оборудования мы, как правило, выбираем специально легковесные дистрибутивы. Причина того, что VectorLinux и другие ему подобные дистрибутивы настолько хороши на слабом оборудовании - то что они не требуют много системных ресурсов.

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

5. Используйте более быстрый оконный менеджер

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

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

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

Пожалуй, самым популярным есть Openbox, и он может быть установлен на большом количестве дистрибутивов.

После установки для запуска оконного менеджера наберите:

openbox --replace

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

6. Ускоряем KDE

Если вы используете окружение рабочего стола KDE, то у вас есть отличный шанс получить ускорение работы linux. Хотя Plasma работает довольно быстро если у вас современная машина, но это сложный стек программного обеспечения. Каждый компонент KDE может быть настроен для более эффективной его работы. Мы уже рассматривали как ускорить KDE, читайте об этом подробно в отдельной статье.

7. Заблокируйте рекламу

При просмотре веб-страниц вы заметите что сайт загружается не сразу, он ждет пока будут загружены все компоненты страницы, в том числе и рекламные объявления. Flash анимация очень раздражает при большом количестве блоков на странице, поэтому вы можете ее заблокировать (не нужно этого делать на нашем сайте, мы белые и пушистые).

Для большинства популярных браузеров - Chromium, Firefox, Opera есть расширение Adblock, которое отлично справляется с этой функцией. Программа использует базу данных чтобы заблокировать наиболее популярные источники объявлений.

8. Используйте сочетания клавиш

Кому-то это может показаться очевидным. Работа только с клавиатурой намного быстрее, чем движение от мышки к клавиатуре и обратно. Много функций можно сделать с помощью клавиатуры. Например, стандартные команды копирования и вставки из меню правка.

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

Интерфейс запуска приложений открываемый по Alt+F2 может сделать намного больше. Например, вы можете набрать выключить для выключения или заблокировать для блокировки экрана. Вы можете выполнять простые расчеты начав выражение со знака =. Там есть еще много подобных функций в зависимости от плагинов. Наберите знак ? и нажмите стрелку вправо чтобы узнать подробнее.

9. Пропатчите ядро

Если вам нужна максимальная производительность программного обеспечения, то множество исправлений можно внести в ядро. Оптимизация ядра Linux может дать отличный эффект. Вы можете оптимизировать ядро самостоятельно, но есть и более легкий путь. Вы можете использовать ядро, скомпилированное Con Koliva, оно включает огромное количество патчей производительности. Патчсет ядра называется -ck и он был собран с упором на производительность.

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

$ patch -p1 < patch-3.*-ck1

Теперь соберите ядро в соответствии с инструкциями из вашего дистрибутива. Это проще сказать чем сделать, но в интернете есть очень много инструкций, в том числе на нашем сайте - собираем ядро Linux.

10. Разгоните видеокарту Nvidia

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

Не нужно использовать BIOS, достаточно панели управления NVIDIA. Прежде чем появятся эти параметры, вам нужно добавить строчку в конфигурационный файл X сервера. Этот файл больше не используется в большинстве дистрибутивов, но утилита настройки NVIDIA может его сгенерировать.

Просто запустите ее, перейдите на вкладку Конфигурация Х сервера и нажмите на кнопку Сохранить в файл конфигурации X.

После того как файл /etc/X11/xorg.conf будет создан откройте его в текстовом редакторе с правами root, найдите секцию Device который описывает вашу графическую карту и добавьте в конец строчку: Option "Coolbits" "5". Перезапустите Х сервер.

Теперь после запуска утилиты настройки NVIDIA вы увидите дополнительную страницу с настройкой тактовых частот. Нажмите кнопку Enable Overclocking и примите заявление об отказе. Теперь вы можете отрегулировать частоту работы для 2D и 3D рендеринга. Лучшие регулировать их одновременно.

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

11. Разгон оборудования

Разгон и различные трюки с увеличением параметров выше рекомендуемых скоростей и температур может повредить ваши данные и привести к поломке вашего оборудования и это очень хорошее ускорение linux. Но многие компоненты сейчас разработаны с учетом больших нагрузок, чем их стандартная конфигурация. Этот запас оставляет много места для экспериментов.

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

Вы можете настроить все это в своем BIOS. Для доступа к нему используйте клавиши F2 или Del. Возможно, вы найдете там опции для ускорения процессора, увеличения частоты оперативной памяти и т д.

12. Повышение производительности сети

Linux уже очень давно поддерживает ipv6, но если вы его не используете, то его отключение может повысить быстродействие сети, таким образом, выполнив ускорение Linux при работе с сетью. Самый простой способ сделать это через NetworkManager.

Если вы используете Gnome, откройте апплет сетевых подключений. и выберите пункт редактировать для соединения которое вы используете. На вкладке ipv6 выберите отключить.

Если у вас KDE без NetworkManager, то можете установить глобальную переменную окружения KDE_NO_IPV6=1:

export KDE_NO_IPV6=1

Для сохранения изменений после перезагрузки можно добавить команду в файл /etc/profile.

Еще можно отключить модуль ядра, отвечающий за ipv6, для этого добавьте его в файл: /etc/modprobe.d/blacklist

Браузер Firefox тоже позволяет отключить ipv6. Просто наберите в адресной строке about:config и активируйте пункт \network.dns.disableIPv6.

Если вы работаете в небольшой сети, вы можете отключить arp в DHCP и настроить статические ip адреса. Добавьте строчку noarp в конфигурационный файл /etc/dhcpd.conf и перезапустите систему. Теперь адреса должны раздаваться быстрее.

13. Статическая линковка

Многие программы подгружают для своей работы библиотеки динамически, во время работы программы. На это уходит не очень много времени, но если приложения большие и подгружают много библиотек, то статическая линковка может дать отличное ускорение Linux. Для этого используются утилиты preload и prelink.

Prelink преобразует исполняемые файлы таким образом, чтобы они загружали как можно больше библиотек. Preload же следит за системой и держит в памяти часто используемые программы. После небольшой калибровки хорошо чувствуется оптимизация Linux.

Сначала установим Prelink:

sudo apt-get install prelink

Затем запустим утилиту для обработки всех исполняемых файлов:

sudo prelink --all

Для периодичного запуска prelink, чтобы выполнялась оптимизация Linux для новых файлов, откройте файл /etc/default/prelink и замените строчку PRELINKING=unknown на yes:

sudo gedit /etc/default/prelink

PRELINKING=yes

Установим Preload:

sudo apt-get install preload

Эту программу достаточно только установить, она не требует настройки после установки.

14. Используйте ZRAM

Если у вас недостаточно оперативной памяти, вы можете очень просто увеличить ее количество на 25, а то и 50% с помощью сжатия оперативной памяти zram. Это модуль ядра, который позволяет сжимать содержимое оперативной памяти на лету, таким образом вместимость ОЗУ остается увеличивается, а скорость остается прежней. Это даст хорошее ускорение работы Linux для старых компьютеров.

15. Уменьшите активность жесткого диска

Система очень активно пишет и читает файлы из каталога /tmp. Это каталог для временных файлов, и с ним могут одновременно работать большое количество программ. Будет лучше, если содержимое этого каталога будет находиться в оперативной памяти. Чтобы ускорить работу linux, таким образом, добавьте строчку в файл /etc/fstab:

$ sudo vi /etc/fstab

tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0

Сначала убедитесь не примонтирована ли уже папка tmp в оперативную память, выполнив команду mount. Во многих дистрибутивах эта оптимизация linux включена по умолчанию.

Но это еще не все. Не все системы рационально используют пространство подкачки на жестком диске. По умолчанию значение  vm.swappiness установлено 60, поэтому, если (100-60) 40% оперативной памяти занято, система начнет сбрасывать данные на жесткий диск. Это справедливо для систем с небольшим количеством ОЗУ, 1-2 Гб, но если у вас 10 Гб, то нагружать жесткий диск когда у вас занято только 4 Гб несерьезно. Чтобы это изменить выполните команду:

$ sudo sysctl -w vm.swappiness=10

Это значит начинать сбрасывать данные в Swap когда занято 90% памяти (100-10). Можно использовать и другие значения. При частом переполнении памяти это отличная оптимизация Linux.

Выводы

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

Оцените статью:

Загрузка...

losst.ru

Оптимизация Linux для desktop и игр / Хабр

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

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

Хоть я и пообещал, что после прочтения этой статьи, можно будет играть в Metro 2033 на калькуляторе (шутка, такого не будет), все же она начнется с рекомендации купить кое-что из железа, если у вас этого еще нет.

1. Купите SSD, если у вас его еще нет
Почему-то многие люди скептически относятся к SSD, хотя это первый и важнейший компонент компьютера, который собирается быстро работать.

Серьезно, все что описано дальше в статье даст вам какой-то прирост в производительности и времени отклика, но любой, даже самый дешевый SSD, сократит время запуска большинства программ до 0, что, визуально, будет очень заметно. Почти в любом компьютере (и сервере) главный тормоз это всегда дисковая подсистема и никакой HDD никогда не даст вам нужной скорости поиска (которая у SSD стремится к 0 мс). За все время общения с компьютерами и их апгрейда, только переход на SSD дал значительный прирост в скорости работы и отклике. Помните как медленно работают дискеты, какое у них огромное время поиска? Примерно вот так воспринимается жесткий диск после SSD.

Так что если у вас еще нет SSD, то продолжать дальше смысла нет, ваш компьютер (хоть даже оснащенный 12-ядерным Xeon’ом) все равно будет работать медленно, так что вперед за покупками.

Касательно надежности: есть миф что SSD умирают спустя год. Его рождению мы обязаны первым SSD на бажных чипах SandForce. Естественно, любой новый SSD из магазина как минимум надежнее и долговечнее современных жестких дисков, так что не стоит беспокоиться по этому поводу вообще. Свой SSD я купил 2 года назад б/у, на то время он был в использовании год. Сейчас у него 11 681 часов наработки и использование ресурса 10%, так что при том же режиме использования, мне его хватит еще на 27 лет. Думаю, к этому времени технологии хранения данных уже несколько раз изменятся. Так что повторюсь, проблемы с надежностью более чем надуманы.

Более подробно о мифах SSD расписал товарищ Вадим Стеркин в своём блоге. Правда, блог у него о Windows, но сути это не меняет. Настоятельно советую почитать, очень интересно.

В Ubuntu 14.04 SSD работают из коробки, опция discard автоматом прописывается в fstab, кроме этого больше ничего не нужно делать. В других дистрибутивах нужно проверять, есть ли эта опция у разделов на SSD. Стоит упомянуть, что данную опцию поддерживает только ext4. Для других ФС придется пользоваться fstrim из планировщика.

2. Таблица разделов
Не делите диски на разделы.

Для домашнего компьютера это бессмысленно и вредно. На SSD у вас должен быть один раздел для корня, там у вас будет хранится система и все данные. На HDD (если нужен) у вас должен быть один раздел с точкой монтирования в /mnt (у меня /mnt/data), где будут хранится большие малоиспользуемые данные (фильмы, музыка, игры). НЕ НУЖНО делать HDD точкой монтирования /home, так как в /home 99% программ хранит свои данные и постоянно к ним обращается, поэтому /home должен быть на SSD.

Повторюсь кратко: на SSD у вас должно быть все, к чему система постоянно обращается (пишет/читает)!

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

Насчет SWAP-раздела: он вам не нужен. Если у вас не хватает оперативной памяти, то OOM-killer будет прибивать ресурсоемкие приложения, если это происходит то докупите оперативки, благо ее цена не сильно кусается. Использование swap как расширителя оперативной памяти значительно замедляет работу компьютера. Есть много мнений, что без SWAP будут какие-то проблемы, но ИМХО, корни эти разговоров растут от Win9x и на сегодня это уже мифы, лично я не замечал никаких проблем от отказа от SWAP. Как пруф: на VPS сейчас редко увидишь подключенный SWAP и работают же как-то! suspend-to-disk вам тоже не нужен, потому что холодный старт с SSD быстрее чем восстановление из спячки с HDD, так что пользуйтесь suspend-to-ram или выключайте компьютер полностью. Единственный плюс от свапа — возможность уйти в гибридную спячку, это когда система готовится к suspend-to-disk, но выполняет suspend-to-ram, так что позже, если все хорошо, идет простой выход из спячки, а если произошел сбой питания — то система восстановится с диска.

Я использую везде файловую систему ext4, так как с другими мне не удалось получить заметной разницы в производительности, а ext4 наиболее распространена, плюс имеются утилиты для восстановления данных (но не надейтесь на них, а делайте бэкапы). При создании используйте -T largefile или largefile4.

3. Используйте 64-битное ядро
От производительности оперативной памяти мало что зависит, от нее не увеличится FPS в играх и не станут быстрее запускаться приложения. Использование 64-битных приложений тоже не дает никакого прироста для обычных задач, только для очень специфичных математических расчетов и операций архивирования. Также, использование 64 ядра не требуется для адресации более 4 ГБ памяти, PAE позволяет адресовать до 64 ГБ памяти на 32 битной системе.

Но используя 64-битное ядро, приложения могут адресовать больше чем 4 ГБ памяти, что довольно полезно, так как иначе может возникать ситуация когда OOM-killer будет прибивать программы, хотя оперативки еще достаточно. Также на 64-битной системе можно адресовать сразу же всю физическую память, на 32 битной же все что выше ~800 МБ надо постоянно ремапить, что несколько снижает скорость страничного обмена, хотя, как я уже сказал, это особо не влияет на скорость работы.

Еще замечал эффект, что OOM-killer может прибивать процессы, которые вроде бы еще не заняли 4 ГБ. У меня такое было с некоторыми играми. Проблема решилась переходом на 64 бита. Так что без 64-битного ядра уже никуда, хоть это и добавляет небольшие накладные расходы на использование памяти.

4. Используйте патсет pf-kernel
pf-kernel — это набор патчей для ядра linux, собранные украинцем Александром Наталенко (pfactum) направленные на улучшения desktop-experience linux-систем.

Он состоит из:

Наиболее полезными являются патчи BFS и BFQ, про которые уже очень много написано. BFQ борется с проблемой тормозов системы во время выполнения больших дисковых операций (знаменитый баг 12309, который по документам исправлено, но по факту продолжает досаждать), BFS — планировщий процессов, более подходящий для десктопной работы, чем те что идут в ядре. Например CFS, который используется по умолчанию допускает ситуацию, когда 2 процесса, которые требуют приоритет реального времени будут исполнятся на одном ядре, хотя другие ядра заняты низкоприоритетными задачами. Естественно, такое поведение приводит к глобальным тормозам. Зато «честный планировщик». BFS не такой «честный», но зато намного более приближен к реалиям настольных компьютеров с небольшим (большое — это 4096) количеством ядер.

Для установки, я качаю с kernel.org необходимую версию ядра без стабилизационнх патчей и накладываю на него pf-kernel. В общем случае это выглядит так:

cd /usr/src wget ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-3.12.tar.xz tar -xf linux-3.12.tar.xz cd linux-3.12 wget https://pf.natalenko.name/sources/3.12/patch-3.12.4-pf.bz2 bunzip2 patch-3.12.4-pf.bz2 patch -p1 < patch-3.12.4-pf Это очень важный патчсет, именно он позволяет системе быть отзывчивой, даже в моменты большой нагрузки. В результате, например, даже при максимальной нагрузке, время запуска приложений остается таким же, как и при простое!

Вот, например, скриншот htop при работе Dota 2 + The Sims 3 (multiseat):

При такой нагрузке на третьем экране можно спокойно работать и 25% (в 5-минутном окне по данным load-average) перегрузка CPU даже не чувствуется. Хотя, конечно, проц надо менять :(

5. Тюнингуйте ядро!
В ядре по умолчанию используются не очень оптимальные параметры, обусловленные историческим предназначением linux для серверов и доступности для отладки.

Так что делайте make xconfig

Я расскажу о наиболее важных опциях для оптимизации

Выключаем preemption, устанавливаем низкую частоту таймера и выключаем dynticks!

ДА! Мы действительно, даже вопреки документации к BFS отключаем «жизненно важные» опции для повышения отзывчивости системы. А причина в том что они — устарели, толку от них никакого и к тому же preemption негативно влияет на производительность.

Было время, когда у меня был одноядерный процессор, тогда еще в готовых ядрах не включали preemption и высокочастотный таймер, вот тогда, после включения этих опций был огромный эффект. А именно, тяжеловесное приложение, занимающее 100% CPU, даже при наличии дискового ввода-вывода и нехватке ОЗУ никак не влияло на интерактивность и отзывчивость. В те времена, еще кроме WinXP ничего не было, а подробно рассказывать как ужасно себя ведет XP в таких ситуациях, думаю, не надо, она обычно намертво виснет, заставляя тянуться к кнопке reset. Так что иметь систему, которая почти никогда не тормозит и не зависает было приятно.

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

Так что идем в Processor type and features и выбираем для параметра Preemption Model значение No Forced Preemption (Server). Не пугаемся фразы «ocasional longer delays are possible» потому что данную проблему у нас эффективно решает BFS и многоядерный процессор. Как и написано в описании, мы выигрываем в «raw processing power».

Также, в целях оптимизации, для параметра Processor family выберите свой процессор.

Далее, устанавливаем для параметра Timer frequency значение 300 HZ. 100 все же будет маловато, да и смысла особого нет (читайте в описании почему), но вы можете поэкспериментировать. Также, 300 Гц нацело делится и на 25 и 30, что является типичными частотами для видео, это вносит свой вклад в борьбу с тирингом (это из хелпа. По факту, с тирингом успешно борется только тройная буферизация + vsync).

В этом разделе есть немало интересных опций, посмотрите, например можно выключить hot-plug для cpu и памяти, так как на десктопе это просто невозможно сделать (а выключать-включать на лету ядра редко кому нужно).

Так как у меня не ноутбук, я выключаю все что связано с энергосбережением, то есть к примеру выключаю поддержку CPU Frequency scaling вообще.

Теперь отключим динамический таймер. Не уверен точно, так как не проверял конкретно, но похоже именно эта опция приводит к постоянным «подергиваниям» на некоторых видео и особенно в играх. Так что идем General setup -> Timers subsystem и для опции Timer tick handling выбираем Periodic timer ticks (constant rate, no dynticks).

Включаем BFQ

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

Идем Enable the block layer -> IO Schedulers включаем опции BFQ I/O scheduler и BFQ hierarchical scheduling support, для опции Default I/O scheduler выбираем, очевидно, BFQ.

6. Prelink
Можно предварительно связать с исполняемыми файлами динамические библиотеки, что позволяет еще более уменьшить время запуска приложений. По этой теме есть отдельная статья от peter23.
7. Заключение
Самое главное, что я всегда замечаю — после наложения патчсета и тюнинга ядра уходят «подергивания» в играх. Чем слабее железо, тем заметнее эти подергивания, хотя у меня есть подозрения что это все же какая-то проблема в драйверах nVidia, потому что разные версии ведут себя по-разному.

Ради пруфов решил провести тесты с помощью Geekbench 3 из Steam и gputest, результаты которых немного странные:

3.14-pf: Single-Core Score 2421 Multi-Core Score 8209 gputest: 3720 pts, 62 FPS

3.13-generic: Single-Core Score 2646 Multi-Core Score 8414 gputest: 3713 pts, 61 FPS

Windows: Single-Core Score 2572 Multi-Core Score 8242 gputest: 3634 pts, 60 FPS

Как видно, почему-то на «оптимизированный» вариант в тесте CPU набирает меньше попугаев, а в тесте GPU — больше. Только сейчас я заметил что тестировал разные ядра, возможно в этом и причина различий результатов. Как будет время, проведу эти же тесты на 3.16, надеюсь, удастся найти причину. Самое же веселое тут в том, что у Windows результаты хуже, особенно в 3D значительно.

habr.com

Блог X-PRESS: Оптимизация Linux Mint

Сегодня я обнаружил что Linux mint 18 стал грузиться медленнее чем Linux mint 17. Что не очень хорошо для моего ноутбука. Я выяснил что это связано с ненужными службами, приложениями, визуальными эффектами. Существует множество оптимизаций, позволяющих повысить скорость работы дистрибутива Linux Mint.

В этой статье мы рассмотрим как выполняется оптимизация Linux Mint. Я покажу только максимально безопасные. Проверял их сам на Toshiba Satelite l20 - 101 с Linux Mint 18.1 xfce и на компьютере HP Elite 7200 c linux mint 18.1 MATE. Перед дальнейшими инструкциями установите все обновления, чтобы не возникло ненужных ошибок.

Оптимизация Linux Mint

1. Оперативная память

При работе с Linux Mint выполнение различных операций со временем осуществляется медленнее. К счастью, это можно минимизировать. На жестком диске существует отдельный раздел для хранения данных, помещенных в оперативную память, который называется разделом подкачки. Интенсивность использования ядром дистрибутива Linux Mint раздела подкачки может быть изменена с помощью специального параметра конфигурации системы.

Вначале надо проверить величину этого параметра. Откройте терминал - ctrl + alt + t и выполните команду:

$ cat /proc/sys/vm/swappiness

Должно быть число 60. Дальше надо установить приложения gksu и leafpad. Можно через Synaptic или Терминал. В терминале используйте команду, она запросит ваш пароль

$ sudo apt install gksu leafpad

Установим новое значение параметра. Перейдите по пути /etc/ и откройте файл sysctl.conf текстовым редактором, либо командой:

$ gksudo leafpad /etc/sysctl.conf

В конце надо будет добавить vm.swappiness=10. Сохраните файл и перезагрузите ваш Компьютер / Ноутбук.

2. Настройка кэша inode

Только для ПК с 1 гб и больше так как это оптимизация приведет к долгому хранению системных файлов в оперативной памяти. Откройте файл /etc/sysctl.conf:

$ gksudo leafpad /etc/sysctl.conf

Опуститесь вниз файла и добавьте эту строчку в конце:

$ vm.vfs_cache_pressure=50

3. Настройка zram

Только ПК с оперативной памятью 768 Мб или больше. Внимание это может привести к нестабильной работе всей системы! Сделайте бэкап данных.

Работа данной оптимизации:

Нужен пакет zram-config. Можете через synaptic, но я больше люблю использовать терминал.

$ sudo apt install zram-config

Перезагрузите ПК после установки. Можно командой:

Надо проверить работу данного модуля:

Должен появится отчёт о разделах на /dev/zram. Если система стала работать неправильно или zram вам уже не нужен, то делаем следующее:

$ sudo apt purge zram-config

Если у вас мало оперативной памяти, то вы точно заметите ускорение Linux Mint 18. Подробнее про настройку zram в linux написано в другой статье.

4. Отключение индексации

Как и в Windows, в Linux есть приложение для ускорения поиска, которое также тормозит работу системы. Данное приложение удалить полностью через synaptic нельзя. Он удалит лишь его часть. Следовательно надо использовать терминал.

$ sudo apt purge apt-xapian-index

Перезагрузите ПК для окончания применения изменений.

5. Оптимизация LibreOffice

Как всем известно, java имеет очень медленный компилятор. Скорость запуска LibreOffice повысилась раза в 3 после отключения java. Но она стоит там не просто так. Некоторые функции требуют java. Так что если вам они нужны то не отключайте. Откройте приложение Writer.

Зайдите в меню Сервис — Параметры LibreOffice — Расширенные возможности» и убрать флажок «Использовать виртуальную машину Java». Включить поддержку можно в любой момент просто вернув галочку в том поле:

6. Настройка автозагрузки

В Wndows это msconfig, а в Linux есть несколько способов решения этой задачи. Автозапуск сильно замедляет как и запуск системы, так и работу в целом. Часть программ настраивается через графический интерфейс - Меню - Параметры - Автозапуск. В XFCE это Сеансы и запуск. Но там не все службы. Далее, я буду писать зачем нужна каждая из служб, которые я буду отключать и как их отключить через терминал. Сначала смотрим скорость загрузки системы:

Выключить:

$ sudo systemctl disable служба

Включить:

$ sudo systemctl enable служба

avahi-daemon.service - это процесс для обнаружения ПК в домене .local. Если у вас один пк в домашней сети или у вас нет домена .local. То можно смело отключать:

$ sudo systemctl disable avahi-daemon.service

cgmanager.service - предназначен для управления cgroup. Служба нужна только людям использующих контейнер LXC. Этот контейнер позволяет создавать виртуальные машины почти без потерь производительности. Но я не использую виртуализацию. Отключаю:

$ sudo systemctl disable cgmanager.service  

cups-browsed.service – это служба для принтеров. Сейчас у меня нет принтера, но если появится я просто включу эту службу.

$ sudo systemctl disable cgmanager.service  

geoclue.service – это служба, которая отправляет вашу геолокацию приложениям. Без каких-либо вопросов отключаем:

$ sudo systemctl disable geoclue.service  

Службы vm2-lvmetad и lvm2-monitor относятся к службам управления логическими томами (LVM – Logical Volume Management). Если вы не используете логические тома то можно отключать. Если при установке вы выбрали автоматическую, то у вас все первичные.

$ sudo systemctl disable vm2-lvmetad.service 

$ sudo systemctl disable lvm2-monitor.service  

Результаты выполнения может быть таким:

Failed to execute operation: No such file or directory и

Removed symlink /etc/systemd/system/sysinit.target.wants/lvm2-monitor.service

ModemManager.service – это интерфейс, позволяющий реализовать подключение к сети интернет, используя мoдемы, каналы связи (2G/3G/4G/CDMA). У меня вообще шнур так что отключаю.

$ sudo systemctl disable ModemManager.service

speech-dispatcher.service - это унифицированный API, который имеет предназначение для изменения порядка вызова синтезатора, так же позволяет предотвратить наложения звука при нескольких приложениях, использующих звук. Я не планирую включать сразу штук 8 песен. Так что отключаю:

$ sudo systemctl disable speech-dispatcher.service   

ssh.service - это сервис удаленного управления системой через терминал. Я таким не пользуюсь => отключаем.

$ sudo systemctl disable ssh.service 

ufw.service – служба межсетевого экрана. Это брандмауэр. Мне он нужен, но многим нет.  Будем не отключать а удалять. Через Synaptic или терминал.

Я перечислил все службы, которые можно отключить безболезненно для системы. Теперь перезагрузка и тест скорости. После отключения служб вы точно заметите ускорение работы linux mint.

7. Настройка окружения

Визуальные эффекты делают систему красивой. Если вы любите MacOS вам не пережить их отключение. Те, кто пользовался Windows 7 aero знают как это всё тормозит.

Linux Mint Cinnamon: для начала необходимо открыть: «Меню — Параметры системы — Эффекты» и отключить все эффекты в открывшемся окне. Далее, необходимо открыть: «Меню — Параметры системы — Общие» и активировать переключатель в пункте списка «Отключить композитинг для полноэкранных окон».

Linux Mint Mate: откройте «Меню — Настройки — Окна», перейдите на вкладку «Общие» открывшегося окна и уберите флажок «Включить композитный менеджер».

Linux Mint Xfce: необходимо «Меню — Параметры рабочего стола» и изменить оконный менеджер с «Xfwm4 + Compositing» на «Xfwm4».

Не забудьте поставить фоном один сплошной цвет.

8. Браузеры

Каждое дополнительное расширение для firefox и chromium замедляют его запуск и работу. удалите ненужные вам. Например, вместо онлайн читалки поставить локальную программу.

Теперь конкретно про firefox. В первую очередь следует ввести в адресную строку веб-браузера about:config и нажать клавишу Enter. Далее, нужно нажать на кнопку Я принимаю на себя риск!.

Вам следует ввести в поле поиска на открывшейся странице запрос sessionstore и использовать двойной клик для редактирования значения параметра browser.sessionstore.interval. По умолчанию он имеет значение 15000, соответствующее 15 секундам. Вы можете добавить к значению несколько нулей таким образом, чтобы оно превратилось в значение 15000000 и нажать на кнопку OK для сохранения изменений.

Далее, переключите эти параметры в положение false:

Осталось закрыть все окна веб-браузера Firefox и перезапустить его.

9. Очистка Linux Mint

В Linux, как и в Windows скапливается мусор. Но в отличие от Windows у него нет реестра, что даёт возможность удалить весь мусор.

Не забудьте удалить ненужные программы. Например, мне не нужен VLC когда стоит dragon player.

10. Установка драйверов

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

11. Оптимизация tmp

Если у вас много оперативной памяти можно ещё больше ускорить систему с помощью перемещения файлов с жесткого диска на виртуальный раздел в оперативной памяти. Откройте терминал.

$ sudo cp -v /usr/share/systemd/tmp.mount /etc/systemd/system/ 

$ sudo systemctl enable tmp.mount 

Проверка работы:

$ systemctl status tmp.mount 

Если вам он больше не нужен просто удалите его:

$ sudo rm -v /etc/systemd/system/tmp.mount 

12. Оптимизация wifi

Оптимизация Linux Mint также может включать ускорение wifi. Узнаем как названа ваша сетевая карта в системе:

Затем вы сможете узнать название. Например, wlp2s0. Отключим энергосбережение.

$ gksudo xed /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf 

Строчку:

меняем на:

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

Если появилась надпись Power management:off то вы все настроили. Для сетевых карт intel есть особый способ ускорения, поскольку система для неё использует драйвер iwlwifi. Нужно активировать функцию Tx AMPDU.

Функция AMPDU предназначена для ускорения передачи данных путем объединения нескольких наборов данных друг с другом. До версии 18.1 включалась автоматически, но была убрана из-за проблемных чипсетов.

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

Если появилась строка «iwlwifi» то можно продолжать.

$ echo "options iwlwifi 11n_disable=8" | sudo tee /etc/modprobe.d/iwlwifi11n.conf 

Теперь нужно перезагрузить ПК. Перед перезагрузкой запишите себе эту команду:

$ sudo rm -v /etc/modprobe.d/iwlwifi11n.conf 

Она нужна для отката изменений если сеть не будет работать.

Выводы

Теперь вы знаете как выполняется ускорение Linux Mint 18. Я очень надеюсь что помог другим пользователям. Пишите в комментариях вашу скорость запуска и скорость работы после проделанных изменений. Насколько вам помогла оптимизация Linux Mint 18 по сравнению с тем, как было раньше?

xpressdnepr.blogspot.com

Познаем всё вместе!: Тонкая оптимизация Linux

Эта статья проведет вас через различные шаги настройки вашего VDS и файловой системы под конкретный тип процессора, объем памяти и сеть.

Заранее предупреждаю что данная оптимизация подразумевает редактирование критически важных параметров системы(ядра)и одно не верное значение может уложить систему по этому всегда делайте копии тех конфигов прежде чем что либо в них изменять.А лучше на домашней машине развените виртуальную машину например VirtualBox и сначала проэкспеременируйте там плюсом такого варианта является безопасность и возможность проводить любые экспирименты над LINUX и только после того как вы добетесь стабильности и повышенного быстродествия только после этого применяйте это на своем VDS. Имено так я всегда и делаю.

Такие настройки используются для серверов, позволяя повышать их быстродействие. Первое, что мы будем изменять, это файл /etc/profile. Файл /etc/profile содержит системное окружение всех исполняемых программ. Все настройки, добавленные в этот файл, отражаются на переменные окружения вашей системы. Так, поместив в этот файл флаги оптимизации, мы получим увеличение производительности компилируемых программ. Чтобы выжать максимальную эффективность из ваших программ, при компиляции вы можете использовать флаг -09, обозначающий полную оптимизацию по скорости. В Makefile многих программ, которые вы компилируете, содержится опция -02. Но, поставив вместо нее -09, мы получим высший уровень оптимизации, при которой размер файла увеличивается, но увеличивается и скорость выполнения.Замечание. Использование опции -09 не всегда приводит к наилучшим результатам. Опцию следует использовать для процессоров x686 и выше, но не для более старых процессоров.Также при компиляции можно использовать опцию -fomit-frame-pointer, которая говорит, что для доступа к переменным нужно использовать стек. К сожалению, с этой опцией практически невозможна отладка. Также можно использовать переключатели -mcpu=cpu_type и -march=cpu_type, при помощи которых создается код, оптимизированный под определенный CPU. Полученный код будет работать только на заданном процессоре или более новом.

Итак, приведенные ниже оптимизационные флаги запишем в файл /etc/profile (они влияют только на программы, которые вы будете компилировать в дальнейшем, и не оказывают никакого действия на существующие файлы):? для CPU i686 или PentiumPro, Pentium II, Pentium III в файл "/etc/profile" добавьте следующую строку: CFLAGS='-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions'? для CPU i586 или Pentium в файл "/etc/profile" добавьте следующую строку: CFLAGS='-O3 -march=pentium -mcpu=pentium -ffast-math -funroll-loops -fomit-frame-pointer -fforce-mem -fforce-addr -malign-double -fno-exceptions'? для CPU i486 в файл "/etc/profile" добавьте следующую строку: CFLAGS='-O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486 -fomit-frame-pointer -fno-exceptions'

Сразу же после выбора типа процессора добавим в строку export файла "/etc/profile" переменные "CFLAGS LANG LESSCHARSET":export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL INPUTRC CFLAGS LANG LESSCHARSETТеперь выйдите из системы и вновь в нее войдите, чтобы опции, определенные переменной CFLAGS, вступили в силу и все программы и другие configure-утилиты стали ее учитывать. Оптимизация под Pentium (Pro/II/III) будет работать только с компиляторами egcs и pgcc. Egcc уже входит в стандартную поставку Linux. Ниже приведено описание опций, которые мы использовали:-funroll-loops ? выполняется оптимизация развертыванием циклов. Осуществляется для циклов, число итераций которых может быть определено во время компиляции или во время выполнения.-funroll-all-loops ? выполняется оптимизация развертыванием циклов. Развертывает все циклы, и обычно программы, скомпилированные с этой опцией, медленнее запускаются.-ffast-math ? эта опция разрешает GCC нарушать некоторые ANSI или IEEE правила и/или спецификации в интересах оптимизации кода по скорости выполнения. Например, это позволяет компилятору предполагать, что параметры к функции sqrt ? неотрицательные числа.-malign-double ? контролирует, выравнивает ли GCC double, long double и long long переменные на двусловной границе или однословной границе.

Выравнивание double переменных на двусловной границе создает код, который выполняется на Pentium-процессорах несколько быстрее, расходуя больше памяти.-mcpu=cpu_type ? определяет значение типа процессора при планировании используемых инструкций. При определении конкретного типа CPU, GCC будет использовать инструкции специфичные для него. Если эта опция не определена, то будут использоваться только команды, работающие на i386 процессоре. Тип процессора I586 эквивалентен Pentium, i686 эквивалентен Pentium Pro, K6 ? AMD.-march=cpu_type ? использовать инструкции для процессора cpu_type. Выбор типа процессора производится так же, как и для опции mcpu. Кроме того, использование опции -march=cpu_type подразумевает и использование опции -mcpu=cpu_type.-fforce-mem ? принуждает копировать операнды, хранящиеся в памяти, в регистры перед выполнением арифметических операций над ними. В результате получается более лучший код, в котором все ссылки на ячейки памяти потенциально общие подвыражения. Когда они не являются общими подвыражениями, то комбинации команд должны устранить отдельную загрузку регистра.-fforce-addr ? вынуждает копировать постоянные адреса памяти в регистры перед выполнением арифметических операций над ними. В результате может создаваться более хороший код, так же как и при -fforce-mem.-fomit-frame-pointer ? не сохранять frame pointer в регистре для функций, которые не нуждаются в этом. Это позволяет избежать инструкций на сохранение, определение и восстановление frame pointer, в то же время освобождая регистры для других функций. Это также делает невозможным отладку программы.

Следующее, на что стоит обратить внимание, это файл bdflush. Он вплотную связан с операциями в подсистеме виртуальной памяти ядра Linux и имеет некоторое влияние на использование диска. Этот файл (/proc/sys/vm/bdflush) контролирует операции демона ядра bdflush. Мы используем этот файл для улучшения производительности файловой системы. Изменяя некоторые значения в файле, принятые по умолчанию, мы добьемся, чтобы система стала более "отзывчивой", например, она ждет чуть больше при осуществлении записи на диск, что позволяет таким образом избегать некоторых конфликтов доступа.За основу возьмем Red Hat Linux. По умолчанию bdflush в Red Hat Linux использует следующие значения: "40 500 64 256 500 3000 500 1884 2".

Для изменения значений в bdflush введите следующие команды на вашем терминале:echo "100 1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush

Вы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Для более свежих дистрибутивов следует использовать другой способ: в файл /etc/sysctl.conf добавьте следующую строку:vm.bdflush = 100 1200 128 512 15 5000 500 1884 2

Чтобы изменения вступили в силу, надо перезагрузить систему.В вышеприведенном примере согласно файлу документации /usr/src/linux/Documentation/sysctl/vm.txt первый параметр в % определяет максимальное число "грязных" буферов в кэше буферов. "Грязные" означают то, что содержимое буфера должно быть записано на диск. Присвоение этому параметру высокого значения означает, что Linux в течение долгого времени может задерживать запись на диск, но в то же время это означает, что когда это все же потребуется, то сброс всех буферов будет осуществляться дольше, т.к. самих "грязных" буферов будет больше. Низкое значение будет распределять операции ввода-вывода более равномерно.

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

Третье значение (nrefill=128) определяет число буферов, которые bdflush будет добавлять в список свободных при вызове функции refill_freelist(). Чем выше число, тем больше памяти будет потрачено впустую и тем реже будет необходимо вызывать refill_freelist().

Следующий параметр ? nref_dirt=512. Когда refill_freelist() натолкнется на больше, чем nref_dirt "грязных" буферов, то просыпается демон bdflush.Параметры age_buffer (50*m) и age_super parameters (5*m) обозначают максимальное время, которое Linux ждет перед записью грязных буферов на диск. Значение выражено в мигах (clockticks), число мигов в секунду m=100. Как описывается в английской литературе, "age_buffer это "возраст" блоков данных, а age_super ? "возраст" метаданных файловой системы" (дословный перевод).

Пятый параметр (15) и последние два (1884 и 2) не используются системой, так что мы оставим их значения по умолчанию.Замечание. Читайте /usr/src/linux/Documentation/sysctl/vm.txt о том, как улучшить параметры ядра, связанные с виртуальной памятью.

Файл buffermem. Этот файл тесно связан с работой подсистемы виртуальной памяти Linux ядра. Значения в этом файле (/proc/sys/ vm/buffermem) контролируют, как много памяти используется под буферную память (в процентах). Следует отметить, что проценты берутся от общей системной памяти. Значение по умолчанию в buffermem для Red Hat:"20 10 60"Для изменения значений параметров используйте следующие команды:echo "80 10 60" >/proc/sys/vm/ buffermemВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Или отредактируйте файл "/etc/sysctl.conf" и добавьте следующую строку:vm.buffermem = 80 10 60Чтобы изменения вступили в силу, стоит перезагрузить систему.В вышеприведенном примере согласно файлу документации /usr/src/linux/Documentation/sysctl/vm.txt первый параметр (80%) говорит использовать минимум 80% системной памяти под буферный кэш (минимальное число процентов памяти, которое должно быть использовано под буферную память). Последние два параметра (10 и 60) не используются системой, и мы их оставляем без изменений. Замечание. О том, как улучшить параметры ядра, связанные с виртуальной памятью, читайте в файле /usr/src/linux/Documentation/sysctl/vm.txt.

Файл ip_local_port_range. Этот файл содержит два целых числа, определяющих интервал портов, которые используют TCP и UDP при выборе локального порта. Первое число ? это нижнее возможное значение, а второе ? верхнее. В серверных системах эти числа имеют значения 32768 и 61000 соответственно. По умолчанию в Red Hat файл ip_local_port_range содержит значения "1024 4999". Чтобы изменить эти значения, используйте следующие команды:echo "32768 61000" > /proc/ sys/net/ipv4/ip_local_port_rangeВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Или отредактируйте файл /etc/sysctl.conf и добавьте следующую строку:net.ipv4.ip_local_port_range = 32768 61000Чтобы изменения вступили в силу, стоит перезагрузить систему.

Файл /etc/nsswitch.conf. Этот файл используется для настройки того, какой сервис использовать для получения такой информации, как имя хоста, файл паролей, файл с группами и т.д. Два последних пункта (файл с паролями и файл с группами) рассматриваться не будут. Таким образом, акцентируем наше внимание на строке hosts. Отредактируйте файл nsswitch.conf и измените строку hosts, чтобы она читалась:hosts: dns filesкоторая говорит программам, желающим определить адреса, что вначале необходимо воспользоваться службой DNS, а затем, если DNS не отвечает, файлом "/etc/hosts". Также настоятельно рекомендуется удалить все вхождения NIS из каждой строки, если вы не используете NIS. В результате файл /etc/nsswitch.conf может выглядеть следующим образом:passwd: filesshadow: filesgroup: fileshosts: dns filesbootparams: filesethers: filesnetmasks: filesnetworks: filesprotocols: filesrpc: filesservices: filesautomount: filesaliases: files

Файл file-max. Значение в этом файле определяет максимальное число дескрипторов файлов, которые может распределить ядро. Мы настраиваем этот файл на увеличение числа открытых файлов. Для серверных систем рекомендуется следующее правило: увеличьте значение /proc/sys/fs/file-max до значения примерно равного 256 на каждые 4M RAM, например, для машины со 128 M установите значение равное 8192 (128/4=32, 32*256=8192). По умолчанию в Red Hat file-max равен 4096. Чтобы изменить эти значения, используйте следующие команды:echo "8192" >/proc/sys/fs/file-maxВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Или отредактируйте файл "/etc/sysctl.conf" и добавьте следующую строку:fs.file-max = 8192Чтобы изменения вступили в силу, стоит перезагрузить систему.Замечание. Когда вы начинаете получать много ошибок о выходе за пределы файловых дескрипторов (running out of file handles), увеличьте значение file-max. Файловому и веб-серверам нужно много открытых файлов.

Файл inode-max. Этот файл (/proc/sys/fs/inode-max) определяет максимальное число дескрипторов блоков индексов (inode). В нашем примере мы настраиваем этот файл на увеличение числа открытых блоков индексов (inode), увеличивая "/proc/sys/fs/inode-max" до значения в 3-4 раза большего (8192*4=32768) числа открытых файлов (file-max). Это обусловлено тем, что на каждый открытый файл приходится как минимум 1 блок индекса, а для больших файлов ? намного больше. По умолчанию в Red Hat inode-max равен 16376. Чтобы изменить эти значения, используйте следующие команды:echo "32768" >/proc/sys/fs/ inode-maxВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Или отредактируйте файл /etc/sysctl.conf и добавьте следующую строку:fs.inode-max = 32768Чтобы изменения вступили в силу, стоит перезагрузить систему.Замечание. Если вы регулярно получаете сообщение run out of inodes, то вам необходимо увеличить значение inode-max. Помните, что этот параметр зависит от file-max. Файловому и веб-серверам требуется много открытых индексных блоков.

Параметр ulimit. Linux имеет ограничение "Max Processes" для каждого пользователя. Этот параметр показывает, как много процессов может иметь пользователь. Для улучшения производительности вы можете спокойно увеличить это значение для пользователя root, сделав его неограниченным. Добавьте следующую строку в файл /root/.bashrc:ulimit -u unlimitedТеперь вы должны перелогиниться (сделать logout и login). Для проверки, что вы все сделали правильно, дайте команду (как root):ulimit -aв строке с max user processes должен быть текст "unlimited".Увеличим также системные ограничения на открытые файлы. Процесс в Red Hat 6.0 с ядром 2.2.5 может открыть не меньше 31000 файловых дескрипторов и процесс на ядре 2.2.12 ? не меньше 90000 файловых дескрипторов (согласно установленным ограничениям). Верхняя граница зависит от доступной памяти. Увеличение этого числа до 90000 для пользователя root делается следующим образом: отредактируйте файл /root/.bashrc, добавив следующую строку:ulimit -n 90000Теперь вы должны перелогиниться. Для проверки, что вы все сделали правильно, дайте команду (как root):ulimit -aв строке с open files должен быть текст "90000".

Атрибут atime (access time). В дополнении к информации о дате создания и последней модификации файла, Linux создает запись о последнем обращении к файлу. Эта информация не очень полезна и при этом происходят затраты системных ресурсов на ее ведение. Файловая система ext2 позволяет суперпользователю маркировать отдельные файлы, чтобы запись о времени последнего доступа к ним не велась. Это может существенно улучшить эффективность системы, особенно, если установить этот атрибут для часто используемых файлов, например, для /var/spool/news. Для установки атрибута на один файл используется команда:chattr +A filenameДля всех файлов в каталоге:chattr -R +A /var/spool/Для снятия же атрибута надо писать не +A, а -A.

Атрибут noatime. Linux имеет опцию монтирования файловой системы, называемую noatime. Она может быть добавлена в поле опций файла /etc/fstab. Если файловая система смонтирована с этой опцией, то при доступе к ней по чтению информация atime изменяться не будет. Важность установки опции noatime в том, что она устраняет необходимость операции записи в файловую систему для файлов, которые просто читаются. Так как запись "дорогая" операция, то ее отсутствие может существенно улучшить эффективность системы. Обратите внимание, что информация wtime продолжает изменяться при записи в файл. В нашем примере мы устанавливаем опцию noatime для файловой системы /mnt/linux_games. Отредактируйте файл /etc/fstab и добавьте, например, такую строку:/dev/hda7 /mnt/linux_games ext2 defaults,noatime 1 2Перезагрузите вашу систему и проверьте, что у вас получилось:rebootcat /proc/mountsВ результате одной из строк, выводимых на экране, должна быть/dev/hda7 /mnt/linux_games ext2 rw,noatime 0 0Мы видим, что /mnt/linux_games имеет атрибут noatime.

Swap-раздел. Поместите ваш swap-раздел вблизи начала вашего диска, которое физически располагается на внешней стороне цилиндра. В результате за один оборот головка охватывает большую поверхность. При помощи команды hdparm -t я вижу, что с разделом, помещенным в конце диска, скорость работы на 3 MB/s медленнее.

Настройка производительности IDE-дисков. Быстродействие IDE-дисков увеличивается при использовании UDMA. Ядро использует консервативный режим работы с дисками, пока ему не скажешь изменить это. "Волшебная" команда для изменения установок ? это hdparm. Включение 32-bit I/O через шину PCI:/sbin/hdparm -c 1 /dev/hda (или hdb, hdc и т.д.)Руководство man для hdparm говорит, что для некоторых чипсетов нужно использовать "-c 3". Все (E)IDE диски до сих пор имеют 16-разрядное подключение через ленточный кабель к интерфейсной карте. Включение DMA:/sbin/hdparm -d 1 /dev/hda (или hdb, hdc и т.д.)Возможность использования этой команды зависит от поддержки чипсета вашей материнской платы ядром. При включении DMA отменяется синхронизация буферизированного чтения диска, в результате чего быстродействие может увеличиться в 2 раза. Для включения multiword DMA mode 2:/sbin/hdparm -d 1 -X34 /dev/ hda (или hdb, hdc и т.д.).Эта установка используется для (E)IDE/ATA2 дисков (посмотрите документацию к вашему диску). Для включения UltraDMA mode2:/sbin/hdparm -d 1 -X66 /dev/ hda (или hdb, hdc и т.д.)Вам нужно будет заранее подготовить ваш чипсет к использованию UltraDMA, так что прочитайте man-ы к hdparm. Используйте этот режим очень осторожно!Для включения multiple sector mode I/O:[root@deep]# /sbin/hdparm -m XX /dev/hda (или hdb, hdc и т.д.)где "XX" ? максимальные установки, поддерживаемые вашим диском. Для поиска максимальных значений установленных жестких дисков может использоваться флаг -i (в выводимой информации смотрите значение MaxMultSect).

Многосекторный режим (IDE Block Mode) поддерживается большинством современных IDE жестких дисков, передача нескольких секторов за одно I/O прерывание быстрее, чем обычное односекторное. Когда эта возможность включена, обычно, понижаются "накладные расходы" на операциях ввода/вывода на 30-50%. На многих системах в результате также увеличивается пропускная способность от 5% до 50%. Вы можете проверить, чего добились, запустив hdparm в режиме проверки производительности:/sbin/hdparm -t /dev/hda (или hdb, hdc и т.д.)Как только вы определили все параметры hdparm, не забудьте добавить соответствующие команды в файл /etc/rc.d/rc.local.

Последнее, что мы сделаем, это заставим Linux обрабатывать большее число TCP/IP соединений за определенное время. Нижеописанные настройки уменьшают время TCP/IP подключения, чтобы можно было обработать больше соединений за тот же интервал. Также будет уменьшено время, которое Linux ждет до закрытия соединения, и время, через которое Linux разрывает устаревшее соединение. Эти настройки отключат некоторые расширения протокола TCP/IP, которые нам не нужны. Значения параметров TCP/IP стека, принятые в Red Hat по умолчанию:tcp_fin_timeout "180"tcp_keepalive_time "7200"tcp_window_scaling "1"tcp_sack "1"tcp_timestamps "1"Чтобы изменить параметры TCP/IP, используйте следующие команды:echo 30 > /proc/sys/net/ipv4/ tcp_fin_timeoutecho 1800 >/proc/sys/net/ipv4/ tcp_keepalive_timeecho 0 > /proc/sys/net/ipv4/ tcp_window_scalingecho 0 > /proc/sys/net/ipv4/ tcp_sackecho 0 > /proc/sys/net/ipv4/ tcp_timestampsВы можете добавить эти команды в /etc/rc.d/rc.local, чтобы они выполнялись каждый раз при загрузке компьютера. Или отредактируйте файл /etc/sysctl.conf и добавьте следующие строки:net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 1800net.ipv4.tcp_window_scaling = 0net.ipv4.tcp_sack = 0net.ipv4.tcp_timestamps = 0Чтобы изменения вступили в силу, стоит перезагрузить систему.Мы рассмотрели некоторые ухищрения, которые помогают заоптимизировать систему.

Теперь можно приступить к освобождению памяти.Начнем с ядра. Все ядра Linux, которые поставляются вместе с дистрибутивами, раздуты и поддерживают множество возможностей, которые вам могут никогда не понадобиться. Если вы еще не пересобирали ядро, то можете попробовать это сделать, но здесь нужен трезвый ум и полное понимание того, что делаешь. Существуют множество прекрасных книг и руководств по Linux, которые также рассказывают об этом.Если вы пересобираете ядро, запомните, что совсем не надо использовать все возможности ядра. Например, как часто вы включаете, к примеру, поддержку PLIP в ядро? Как часто вы будете это использовать? Маленькое ядро требует меньше времени для загрузки, меньше памяти и меньше загружает процессор.Другая важная вещь в ядре ? модули. Использование модулей позволяет не держать код ядра, который реализует какую-нибудь фишку, в памяти, а подгружать его только тогда, когда это необходимо.Виртуальные консоли ? это прекрасный путь освободить память. Большинство дистрибутивов Linux запускают около 6 виртуальных консолей ? именно между ними вы переключаетесь, используя комбинации Alt+F1 ? Alt+F6. В среднем, использование 6 консолей требует около 4 Мб памяти. Если убрать пару консолей, можно освободить пару мегабайт памяти. Большинство пользователей используют 3-4 консоли. Например, я использую только две. Сколько консолей вы оставите ? это ваше личное дело. Просто запомните, что чем меньше виртуальных консолей вы используете, тем больше памяти остается для работающих приложений. Количество используемых консолей описывается в файле /etc/inittab. Для того чтобы убрать виртуальную консоль, загрузите /etc/inittab в текстовый редактор, найдите строки, похожие на:c1:12345:respawn:/sbin/getty tty1 38400 linuxc2:12345:respawn:/sbin/getty tty2 38400 linuxНачиная с наибольшего номера (например, c6), закомментируйте строку, поставив знак '#' в начале строки. Повторите этот шаг столько раз, сколько вам нужно. Запомните, каждая закомментированная строка убирает одну виртуальную консоль. Перезапустите систему, чтобы изменения вступили в силу.Большинство дистрибутивов Linux запускают множество демонов (что это такое, грубо говоря это типа сервисов, как в Win2k, но только лучше), которые никогда не используются. Чаще всего они запускаются через скрипты. Где находятся скрипты и какие из них запускаются, зависит от дистрибутива. Чаще всего их можно найти в /etc/rc.d/rc.*.

Прежде чем продолжить, стоит сказать, что вам было бы неплохо уметь писать скрипты. Для тех, кто уже знаком со скриптами, напомню, что скрипт должен начинаться со строки "#!/bin/sh" или подобной, после которой каждая строка запускается командным интерпретатором так, как будто она была введена с клавиатуры (так что скрипт ? не что иное, как простые макросы клавиатуры).Строки, начинающиеся с '#', являются комментариями и не исполняются. Большинство скриптов запуска демонов выглядят следующим образом:if условие thenчто-тоfiВсе, что мы хотим сделать ? это закомментировать строки между if и fi.Для того чтобы найти скрипт, в котором запускается демон, нужно поискать скрипт на предмет наличия в нем названия демона. Если я хочу найти, где запускается inetd, то должен сделать следующее:cd /etc/rc.dgrep -n inetd rc.*

Кратко перечислю демоны, которые можно удалять (список не претендует на полноту и достаточность):? lpd ? используется для печати файлов на принтере командой lpr. Если вы не пользуетесь печатью на своей машине, то можете убрать lpd;? nfsd и mountd ? это два демона, образующие NFS сервер. Если вы не используете свою машину как NFS сервер, то можете спокойно убрать эти два демона;? portmap ? этот демон используется для поддержки сервиса RPC. Если вы не используете NFS или любую другую программу, использующую RPC, то можете убрать portmap;? sendmail ? это еще один демон, требующий достаточно много памяти. Если вы не используете свою машину в качестве почтового сервера, то можете убрать sendmail. Если вы пользуетесь электронной почтой, то программу чтения почты можно настроить на другой почтовый сервер.Могут быть также другие демоны в системе, которые вам не нужны. Удалите их, если они не нужны. Вы должны обязательно оставить только два демона ? это syslogd и klogd, которые ведут логи вашей Линукс-системы.

В более новых дистрибутивах запуск демонов прописан другим способом. В etc/rc.d есть другие подкаталоги, каждый из которых соответствует определенному runlevel'у. Для отключения какого-либо сервиса достаточно удалить соответствующую символическую ссылку в нужном каталоге на скрипт, запускающий этот сервис. Все скрипты, как правило, лежат в /etc/rc.d/init.d. Стоит также заметить, что еще проще и удобнее делать отключение сервисов при помощи соответствующих конфигурационных программ: linuxconf, drakconf (для Mandrake Linux).Вот и все. Стоит заметить, что результат выполнения вышеописанных действий зависит лишь от того, насколько вы разобрались в Linux. Так что используйте эти принципы на свой страх и риск. А также побольше читайте документацию.

workscripts.blogspot.com

Продвинутая оптимизация Linux | |

Первое, что мы будем изменять, это файл /etc/profile. Файл /etc/profile содержит системное окружение всех исполняемых программ. Все настройки, добавленные в этот файл, отражаются на переменные окружения вашей системы. Так, поместив в этот файл флаги оптимизации, мы получим увеличение производительности компилируемых программ. Чтобы выжать максимальную эффективность из ваших программ, при компиляции вы можете использовать флаг -09, обозначающий полную оптимизацию по скорости. В Makefile многих программ, которые вы компилируете, содержится опция -02. Но, поставив вместо нее -09, мы получим высший уровень оптимизации, при которой размер файла увеличивается, но увеличивается и скорость выполнения.Замечание. Использование опции -09 не всегда приводит к наилучшим результатам. Опцию следует использовать для процессоров x686 и выше, но не для более старых процессоров.Также при компиляции можно использовать опцию -fomit-frame-pointer, которая говорит, что для доступа к переменным нужно использовать стек. К сожалению, с этой опцией практически невозможна отладка. Также можно использовать переключатели -mcpu=cpu_type и -march=cpu_type, при помощи которых создается код, оптимизированный под определенный CPU. Полученный код будет работать только на заданном процессоре или более новом.

Итак, приведенные ниже оптимизационные флаги запишем в файл /etc/profile (они влияют только на программы, которые вы будете компилировать в дальнейшем, и не оказывают никакого действия на существующие файлы):? для CPU i686 или PentiumPro, Pentium II, Pentium III в файл "/etc/profile" добавьте следующую строку: CFLAGS='-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions'? для CPU i586 или Pentium в файл "/etc/profile" добавьте следующую строку: CFLAGS='-O3 -march=pentium -mcpu=pentium -ffast-math -funroll-loops -fomit-frame-pointer -fforce-mem -fforce-addr -malign-double -fno-exceptions'? для CPU i486 в файл "/etc/profile" добавьте следующую строку: CFLAGS='-O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486 -fomit-frame-pointer -fno-exceptions'

Сразу же после выбора типа процессора добавим в строку export файла "/etc/profile" переменные "CFLAGS LANG LESSCHARSET":export PATH PS1 HOSTNAME HISTSIZE HISTFILESIZE USER LOGNAME MAIL INPUTRC CFLAGS LANG LESSCHARSETТеперь выйдите из системы и вновь в нее войдите, чтобы опции, определенные переменной CFLAGS, вступили в силу и все программы и другие configure-утилиты стали ее учитывать. Оптимизация под Pentium (Pro/II/III) будет работать только с компиляторами egcs и pgcc. Egcc уже входит в стандартную поставку Linux. Ниже приведено описание опций, которые мы использовали:-funroll-loops ? выполняется оптимизация развертыванием циклов. Осуществляется для циклов, число итераций которых может быть определено во время компиляции или во время выполнения.-funroll-all-loops ? выполняется оптимизация развертыванием циклов. Развертывает все циклы, и обычно программы, скомпилированные с этой опцией, медленнее запускаются.-ffast-math ? эта опция разрешает GCC нарушать некоторые ANSI или IEEE правила и/или спецификации в интересах оптимизации кода по скорости выполнения. Например, это позволяет компилятору предполагать, что параметры к функции sqrt ? неотрицательные числа.-malign-double ? контролирует, выравнивает ли GCC double, long double и long long переменные на двусловной границе или однословной границе.

Выравнивание double переменных на двусловной границе создает код, который выполняется на Pentium-процессорах несколько быстрее, расходуя больше памяти.-mcpu=cpu_type ? определяет значение типа процессора при планировании используемых инструкций. При определении конкретного типа CPU, GCC будет использовать инструкции специфичные для него. Если эта опция не определена, то будут использоваться только команды, работающие на i386 процессоре. Тип процессора I586 эквивалентен Pentium, i686 эквивалентен Pentium Pro, K6 ? AMD.-march=cpu_type ? использовать инструкции для процессора cpu_type. Выбор типа процессора производится так же, как и для опции mcpu. Кроме того, использование опции -march=cpu_type подразумевает и использование опции -mcpu=cpu_type.-fforce-mem ? принуждает копировать операнды, хранящиеся в памяти, в регистры перед выполнением арифметических операций над ними. В результате получается более лучший код, в котором все ссылки на ячейки памяти потенциально общие подвыражения. Когда они не являются общими подвыражениями, то комбинации команд должны устранить отдельную загрузку регистра.-fforce-addr ? вынуждает копировать постоянные адреса памяти в регистры перед выполнением арифметических операций над ними. В результате может создаваться более хороший код, так же как и при -fforce-mem.-fomit-frame-pointer ? не сохранять frame pointer в регистре для функций, которые не нуждаются в этом. Это позволяет избежать инструкций на сохранение, определение и восстановление frame pointer, в то же время освобождая регистры для других функций. Это также делает невозможным отладку программы.

Следующее, на что стоит обратить внимание, это файл bdflush. Он вплотную связан с операциями в подсистеме виртуальной памяти ядра Linux и имеет некоторое влияние на использование диска. Этот файл (/proc/sys/vm/bdflush) контролирует операции демона ядра bdflush. Мы используем этот файл для улучшения производительности файловой системы. Изменяя некоторые значения в файле, принятые по умолчанию, мы добьемся, чтобы система стала более "отзывчивой", например, она ждет чуть больше при осуществлении записи на диск, что позволяет таким образом избегать некоторых конфликтов доступа.За основу возьмем Red Hat Linux. По умолчанию bdflush в Red Hat Linux использует следующие значения: "40 500 64 256 500 3000 500 1884 2".

Для изменения значений в bdflush введите следующие команды на вашем терминале:echo "100 1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush

Вы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Для более свежих дистрибутивов следует использовать другой способ: в файл /etc/sysctl.conf добавьте следующую строку:vm.bdflush = 100 1200 128 512 15 5000 500 1884 2

Чтобы изменения вступили в силу, надо перезагрузить систему.В вышеприведенном примере согласно файлу документации /usr/src/linux/Documentation/sysctl/vm.txt первый параметр в % определяет максимальное число "грязных" буферов в кэше буферов. "Грязные" означают то, что содержимое буфера должно быть записано на диск. Присвоение этому параметру высокого значения означает, что Linux в течение долгого времени может задерживать запись на диск, но в то же время это означает, что когда это все же потребуется, то сброс всех буферов будет осуществляться дольше, т.к. самих "грязных" буферов будет больше. Низкое значение будет распределять операции ввода-вывода более равномерно.

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

Третье значение (nrefill=128) определяет число буферов, которые bdflush будет добавлять в список свободных при вызове функции refill_freelist(). Чем выше число, тем больше памяти будет потрачено впустую и тем реже будет необходимо вызывать refill_freelist().

Следующий параметр ? nref_dirt=512. Когда refill_freelist() натолкнется на больше, чем nref_dirt "грязных" буферов, то просыпается демон bdflush.Параметры age_buffer (50*m) и age_super parameters (5*m) обозначают максимальное время, которое Linux ждет перед записью грязных буферов на диск. Значение выражено в мигах (clockticks), число мигов в секунду m=100. Как описывается в английской литературе, "age_buffer это "возраст" блоков данных, а age_super ? "возраст" метаданных файловой системы" (дословный перевод).

Пятый параметр (15) и последние два (1884 и 2) не используются системой, так что мы оставим их значения по умолчанию.Замечание. Читайте /usr/src/linux/Documentation/sysctl/vm.txt о том, как улучшить параметры ядра, связанные с виртуальной памятью.

Файл buffermem. Этот файл тесно связан с работой подсистемы виртуальной памяти Linux ядра. Значения в этом файле (/proc/sys/ vm/buffermem) контролируют, как много памяти используется под буферную память (в процентах). Следует отметить, что проценты берутся от общей системной памяти. Значение по умолчанию в buffermem для Red Hat:"20 10 60"Для изменения значений параметров используйте следующие команды:echo "80 10 60" >/proc/sys/vm/ buffermemВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Или отредактируйте файл "/etc/sysctl.conf" и добавьте следующую строку:vm.buffermem = 80 10 60Чтобы изменения вступили в силу, стоит перезагрузить систему.В вышеприведенном примере согласно файлу документации /usr/src/linux/Documentation/sysctl/vm.txt первый параметр (80%) говорит использовать минимум 80% системной памяти под буферный кэш (минимальное число процентов памяти, которое должно быть использовано под буферную память). Последние два параметра (10 и 60) не используются системой, и мы их оставляем без изменений.Замечание. О том, как улучшить параметры ядра, связанные с виртуальной памятью, читайте в файле /usr/src/linux/Documentation/sysctl/vm.txt.

Файл ip_local_port_range. Этот файл содержит два целых числа, определяющих интервал портов, которые используют TCP и UDP при выборе локального порта. Первое число ? это нижнее возможное значение, а второе ? верхнее. В серверных системах эти числа имеют значения 32768 и 61000 соответственно. По умолчанию в Red Hat файл ip_local_port_range содержит значения "1024 4999". Чтобы изменить эти значения, используйте следующие команды:echo "32768 61000" > /proc/ sys/net/ipv4/ip_local_port_rangeВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Или отредактируйте файл /etc/sysctl.conf и добавьте следующую строку:net.ipv4.ip_local_port_range = 32768 61000Чтобы изменения вступили в силу, стоит перезагрузить систему.

Файл /etc/nsswitch.conf. Этот файл используется для настройки того, какой сервис использовать для получения такой информации, как имя хоста, файл паролей, файл с группами и т.д. Два последних пункта (файл с паролями и файл с группами) рассматриваться не будут. Таким образом, акцентируем наше внимание на строке hosts. Отредактируйте файл nsswitch.conf и измените строку hosts, чтобы она читалась:hosts: dns filesкоторая говорит программам, желающим определить адреса, что вначале необходимо воспользоваться службой DNS, а затем, если DNS не отвечает, файлом "/etc/hosts". Также настоятельно рекомендуется удалить все вхождения NIS из каждой строки, если вы не используете NIS. В результате файл /etc/nsswitch.conf может выглядеть следующим образом:passwd: filesshadow: filesgroup: fileshosts: dns filesbootparams: filesethers: filesnetmasks: filesnetworks: filesprotocols: filesrpc: filesservices: filesautomount: filesaliases: files

Файл file-max. Значение в этом файле определяет максимальное число дескрипторов файлов, которые может распределить ядро. Мы настраиваем этот файл на увеличение числа открытых файлов. Для серверных систем рекомендуется следующее правило: увеличьте значение /proc/sys/fs/file-max до значения примерно равного 256 на каждые 4M RAM, например, для машины со 128 M установите значение равное 8192 (128/4=32, 32*256=8192). По умолчанию в Red Hat file-max равен 4096. Чтобы изменить эти значения, используйте следующие команды:echo "8192" >/proc/sys/fs/file-maxВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Или отредактируйте файл "/etc/sysctl.conf" и добавьте следующую строку:fs.file-max = 8192Чтобы изменения вступили в силу, стоит перезагрузить систему.Замечание. Когда вы начинаете получать много ошибок о выходе за пределы файловых дескрипторов (running out of file handles), увеличьте значение file-max. Файловому и веб-серверам нужно много открытых файлов.

Файл inode-max. Этот файл (/proc/sys/fs/inode-max) определяет максимальное число дескрипторов блоков индексов (inode). В нашем примере мы настраиваем этот файл на увеличение числа открытых блоков индексов (inode), увеличивая "/proc/sys/fs/inode-max" до значения в 3-4 раза большего (8192*4=32768) числа открытых файлов (file-max). Это обусловлено тем, что на каждый открытый файл приходится как минимум 1 блок индекса, а для больших файлов ? намного больше. По умолчанию в Red Hat inode-max равен 16376. Чтобы изменить эти значения, используйте следующие команды:echo "32768" >/proc/sys/fs/ inode-maxВы можете добавить эту команду в /etc/rc.d/rc.local, чтобы она выполнялась каждый раз при загрузке компьютера. Или отредактируйте файл /etc/sysctl.conf и добавьте следующую строку:fs.inode-max = 32768Чтобы изменения вступили в силу, стоит перезагрузить систему.Замечание. Если вы регулярно получаете сообщение run out of inodes, то вам необходимо увеличить значение inode-max. Помните, что этот параметр зависит от file-max. Файловому и веб-серверам требуется много открытых индексных блоков.

Параметр ulimit. Linux имеет ограничение "Max Processes" для каждого пользователя. Этот параметр показывает, как много процессов может иметь пользователь. Для улучшения производительности вы можете спокойно увеличить это значение для пользователя root, сделав его неограниченным. Добавьте следующую строку в файл /root/.bashrc:ulimit -u unlimitedТеперь вы должны перелогиниться (сделать logout и login). Для проверки, что вы все сделали правильно, дайте команду (как root):ulimit -aв строке с max user processes должен быть текст "unlimited".Увеличим также системные ограничения на открытые файлы. Процесс в Red Hat 6.0 с ядром 2.2.5 может открыть не меньше 31000 файловых дескрипторов и процесс на ядре 2.2.12 ? не меньше 90000 файловых дескрипторов (согласно установленным ограничениям). Верхняя граница зависит от доступной памяти. Увеличение этого числа до 90000 для пользователя root делается следующим образом: отредактируйте файл /root/.bashrc, добавив следующую строку:ulimit -n 90000Теперь вы должны перелогиниться. Для проверки, что вы все сделали правильно, дайте команду (как root):ulimit -aв строке с open files должен быть текст "90000".

Атрибут atime (access time). В дополнении к информации о дате создания и последней модификации файла, Linux создает запись о последнем обращении к файлу. Эта информация не очень полезна и при этом происходят затраты системных ресурсов на ее ведение. Файловая система ext2 позволяет суперпользователю маркировать отдельные файлы, чтобы запись о времени последнего доступа к ним не велась. Это может существенно улучшить эффективность системы, особенно, если установить этот атрибут для часто используемых файлов, например, для /var/spool/news. Для установки атрибута на один файл используется команда:chattr +A filenameДля всех файлов в каталоге:chattr -R +A /var/spool/Для снятия же атрибута надо писать не +A, а -A.

Атрибут noatime. Linux имеет опцию монтирования файловой системы, называемую noatime. Она может быть добавлена в поле опций файла /etc/fstab. Если файловая система смонтирована с этой опцией, то при доступе к ней по чтению информация atime изменяться не будет. Важность установки опции noatime в том, что она устраняет необходимость операции записи в файловую систему для файлов, которые просто читаются. Так как запись "дорогая" операция, то ее отсутствие может существенно улучшить эффективность системы. Обратите внимание, что информация wtime продолжает изменяться при записи в файл. В нашем примере мы устанавливаем опцию noatime для файловой системы /mnt/linux_games. Отредактируйте файл /etc/fstab и добавьте, например, такую строку:/dev/hda7 /mnt/linux_games ext2 defaults,noatime 1 2Перезагрузите вашу систему и проверьте, что у вас получилось:rebootcat /proc/mountsВ результате одной из строк, выводимых на экране, должна быть/dev/hda7 /mnt/linux_games ext2 rw,noatime 0 0Мы видим, что /mnt/linux_games имеет атрибут noatime.

Swap-раздел. Поместите ваш swap-раздел вблизи начала вашего диска, которое физически располагается на внешней стороне цилиндра. В результате за один оборот головка охватывает большую поверхность. При помощи команды hdparm -t я вижу, что с разделом, помещенным в конце диска, скорость работы на 3 MB/s медленнее.

Настройка производительности IDE-дисков. Быстродействие IDE-дисков увеличивается при использовании UDMA. Ядро использует консервативный режим работы с дисками, пока ему не скажешь изменить это. "Волшебная" команда для изменения установок ? это hdparm. Включение 32-bit I/O через шину PCI:/sbin/hdparm -c 1 /dev/hda (или hdb, hdc и т.д.)Руководство man для hdparm говорит, что для некоторых чипсетов нужно использовать "-c 3". Все (E)IDE диски до сих пор имеют 16-разрядное подключение через ленточный кабель к интерфейсной карте. Включение DMA:/sbin/hdparm -d 1 /dev/hda (или hdb, hdc и т.д.)Возможность использования этой команды зависит от поддержки чипсета вашей материнской платы ядром. При включении DMA отменяется синхронизация буферизированного чтения диска, в результате чего быстродействие может увеличиться в 2 раза. Для включения multiword DMA mode 2:/sbin/hdparm -d 1 -X34 /dev/ hda (или hdb, hdc и т.д.).Эта установка используется для (E)IDE/ATA2 дисков (посмотрите документацию к вашему диску). Для включения UltraDMA mode2:/sbin/hdparm -d 1 -X66 /dev/ hda (или hdb, hdc и т.д.)Вам нужно будет заранее подготовить ваш чипсет к использованию UltraDMA, так что прочитайте man-ы к hdparm. Используйте этот режим очень осторожно!Для включения multiple sector mode I/O:[root@deep]# /sbin/hdparm -m XX /dev/hda (или hdb, hdc и т.д.)где "XX" ? максимальные установки, поддерживаемые вашим диском. Для поиска максимальных значений установленных жестких дисков может использоваться флаг -i (в выводимой информации смотрите значение MaxMultSect).

Многосекторный режим (IDE Block Mode) поддерживается большинством современных IDE жестких дисков, передача нескольких секторов за одно I/O прерывание быстрее, чем обычное односекторное. Когда эта возможность включена, обычно, понижаются "накладные расходы" на операциях ввода/вывода на 30-50%. На многих системах в результате также увеличивается пропускная способность от 5% до 50%. Вы можете проверить, чего добились, запустив hdparm в режиме проверки производительности:/sbin/hdparm -t /dev/hda (или hdb, hdc и т.д.)Как только вы определили все параметры hdparm, не забудьте добавить соответствующие команды в файл /etc/rc.d/rc.local.

Последнее, что мы сделаем, это заставим Linux обрабатывать большее число TCP/IP соединений за определенное время. Нижеописанные настройки уменьшают время TCP/IP подключения, чтобы можно было обработать больше соединений за тот же интервал. Также будет уменьшено время, которое Linux ждет до закрытия соединения, и время, через которое Linux разрывает устаревшее соединение. Эти настройки отключат некоторые расширения протокола TCP/IP, которые нам не нужны. Значения параметров TCP/IP стека, принятые в Red Hat по умолчанию:tcp_fin_timeout "180"tcp_keepalive_time "7200"tcp_window_scaling "1"tcp_sack "1"tcp_timestamps "1"Чтобы изменить параметры TCP/IP, используйте следующие команды:echo 30 > /proc/sys/net/ipv4/ tcp_fin_timeoutecho 1800 >/proc/sys/net/ipv4/ tcp_keepalive_timeecho 0 > /proc/sys/net/ipv4/ tcp_window_scalingecho 0 > /proc/sys/net/ipv4/ tcp_sackecho 0 > /proc/sys/net/ipv4/ tcp_timestampsВы можете добавить эти команды в /etc/rc.d/rc.local, чтобы они выполнялись каждый раз при загрузке компьютера. Или отредактируйте файл /etc/sysctl.conf и добавьте следующие строки:net.ipv4.tcp_fin_timeout = 30net.ipv4.tcp_keepalive_time = 1800net.ipv4.tcp_window_scaling = 0net.ipv4.tcp_sack = 0net.ipv4.tcp_timestamps = 0Чтобы изменения вступили в силу, стоит перезагрузить систему.Мы рассмотрели некоторые ухищрения, которые помогают заоптимизировать систему. Но многие спрашивают, а почему я не написал про то, как освободить память или, скажем, "обрезать" Linux. Исправляю эту оплошность.

Начнем с того, что заставим наш Linux занимать меньше места на винчестере. Для этого нам понадобятся следующие инструменты: архиваторы gzip или bzip2 (жмет лучше, чем первый), входящие в любой современный дистрибутив, и упаковщик исполняемых файлов upx, который можно найти в Интернете. Не помешает также иметь ровные руки и трезвую голову:).

Итак, приступим. Для начала мы удалим исходные тексты ядра. Вы могли их поставить просто случайно, ставя первый раз Линукс или просто так, но я практически на сто процентов уверен, что вы ими не пользуетесь. А так как исходные тексты ядра занимают 20-100 и больше мегабайт, то, скорее всего, вы захотите их удалить. Если так, то откомпилируйте новое ядро, которое будет работать с вашей машиной, и освободитесь от исходных текстов. Они лежат в /usr/src/linux. Но удалять их лучше разынсталлируя пакет, их содержащий. Не рекомендуется удалять исходные тексты ядра до тех пор, пока вы не удостоверитесь, что новое ядро, которое вы, возможно, создали, правильно установлено и работает. Кроме того, вам могут понадобиться header-файлы ядра для того, чтобы компилировать программы на C.

Теперь приступим к удалению лишних приложений. Решите, какие приложения вам на самом деле необходимы. Некоторые могут оказаться излишествами: например, уверены ли вы в том, что вам очень нужен Emacs? Вместо него можно использовать другой, более мелкий и удобный текстовый редактор. От вас зависит, что оставлять, а что удалять. Вот несколько основных принципов:

? компилятор gcc довольно велик по размеру. Он используется для компиляции ядра и практически всех программ Linux. Разумеется, он вам понадобится, если вы будете писать собственные программы на C, поэтому определитесь с вашими потребностями, перед тем как удалить его. Также можно удалить все остальные пакеты для разработки программ, если вы не программист;? X11/X-Window система еще больше, но это вещь, которую хотелось бы иметь под рукой. Если вы решились его удалить, то не удаляйте все, постарайтесь обойтись необходимым минимумом: нужный Х-сервер, один простенький менеджер окон, единственный xterm, никаких шрифтов на 100 dpi, и т.п.;? TeX и сопутствующие программы занимают большой объем. Уход от LaTeX и переход на чистый TeX сэкономит много места; это же дает удаление программ предварительного просмотра в X11, таких как xdvi и ghostview, и, возможно, если у вас есть dvitty, dvivga или некоторые им подобные;? игры никогда не являются "необходимостью";).

Практически все программы можно удалить, просто удалив пакет, который их содержит. Для этого используются программы kpackage и gnorpm.Теперь давайте приступим к уменьшению объема самих программ. Перейдите в /usr/bin и наберите командуstrip *Она удалит из запускамых файлов всю информацию, которая может понадобиться только тем, кто занимается debug'ом программ, но не относится к телу программы. Повторите это действие в /usr/X11R6/bin и других каталогах, содержащих исполняемые программы (не забывайте про программы TeX и gcc), но не делайте этого в /sbin, /bin или /usr/sbin, т.к. здесь это особо не уменьшит размер файлов, но может повредить некоторые из них.Следующий шаг ? сжатие программ при помощи upx. Сначала установите upx и прочтите документацию к нему. Затем перейдите в /usr/bin и запустите там командуupx *Она закомпрессирует все исполняемые файлы. Повторите эти действия во всех каталогах, описанных выше. Помните, что архивировать исполняемые файлы надо всякий раз, когда вы устанавливаете новую программу. Т.е. заново пересжимать уже сжатые файлы, конечно, никто не будет, но только что установленные будут сжаты.Есть множество других файлов, которые можно заархивировать раз и навсегда. Начнем с каталога /usr/doc. Перейдите в этот каталог и наберите командуfind. -type f -exec gzip -9 {} ; 2> /dev/nullЭта команда сожмет все файлы документации, расположенные в данном каталоге. Но это не помешает их смотреть, т.к. при просмотре в большинстве случаев автоматически происходит распаковка сжатых gzip или bzip2 файлов. Помните, что архивировать документацию надо всякий раз, когда вы устанавливаете новую программу, к которой прилагается документация. Здесь справедлив тот же принцип, который применялся к предыдущему пункту. Повторите эти действия в других ваших каталогах, содержащих документацию. Если же использовать при сжатии архиватор bzip2, то результат операции будет лучше, но распаковка будет чуть медленнее. Если вы уверены, что документация вам не нужна, то вы просто можете удалить все эти каталоги.

С "обрезанием" и уменьшением Linux'а покончено. Теперь можно приступить к освобождению памяти.Начнем с ядра. Все ядра Linux, которые поставляются вместе с дистрибутивами, раздуты и поддерживают множество возможностей, которые вам могут никогда не понадобиться. Если вы еще не пересобирали ядро, то можете попробовать это сделать, но здесь нужен трезвый ум и полное понимание того, что делаешь. Существуют множество прекрасных книг и руководств по Linux, которые также рассказывают об этом, а я тоже писал про это в последних "Вопросах и ответах".Если вы пересобираете ядро, запомните, что совсем не надо использовать все возможности ядра. Например, как часто вы включаете, к примеру, поддержку PLIP в ядро? Как часто вы будете это использовать? Маленькое ядро требует меньше времени для загрузки, меньше памяти и меньше загружает процессор.Другая важная вещь в ядре ? модули. Использование модулей позволяет не держать код ядра, который реализует какую-нибудь фишку, в памяти, а подгружать его только тогда, когда это необходимо.Виртуальные консоли ? это прекрасный путь освободить память. Большинство дистрибутивов Linux запускают около 6 виртуальных консолей ? именно между ними вы переключаетесь, используя комбинации Alt+F1 ? Alt+F6. В среднем, использование 6 консолей требует около 4 Мб памяти. Если убрать пару консолей, можно освободить пару мегабайт памяти. Большинство пользователей используют 3-4 консоли. Например, я использую только две. Сколько консолей вы оставите ? это ваше личное дело. Просто запомните, что чем меньше виртуальных консолей вы используете, тем больше памяти остается для работающих приложений. Количество используемых консолей описывается в файле /etc/inittab. Для того чтобы убрать виртуальную консоль, загрузите /etc/inittab в текстовый редактор, найдите строки, похожие на:c1:12345:respawn:/sbin/getty tty1 38400 linuxc2:12345:respawn:/sbin/getty tty2 38400 linuxНачиная с наибольшего номера (например, c6), закомментируйте строку, поставив знак '#' в начале строки. Повторите этот шаг столько раз, сколько вам нужно. Запомните, каждая закомментированная строка убирает одну виртуальную консоль. Перезапустите систему, чтобы изменения вступили в силу.Большинство дистрибутивов Linux запускают множество демонов (что это такое, я уже писал раньше; но _грубо_ говоря это типа сервисов, как в Win2k, но только лучше), которые никогда не используются. Чаще всего они запускаются через скрипты. Где находятся скрипты и какие из них запускаются, зависит от дистрибутива. Чаще всего их можно найти в /etc/rc.d/rc.*.

Прежде чем продолжить, стоит сказать, что вам было бы неплохо уметь писать скрипты. Книга по скриптам лежит на моем сайте в разделе документации. Для тех, кто уже знаком со скриптами, напомню, что скрипт должен начинаться со строки "#!/bin/sh" или подобной, после которой каждая строка запускается командным интерпретатором так, как будто она была введена с клавиатуры (так что скрипт ? не что иное, как простые макросы клавиатуры).Строки, начинающиеся с '#', являются комментариями и не исполняются. Большинство скриптов запуска демонов выглядят следующим образом:if условие thenчто-тоfiВсе, что мы хотим сделать ? это закомментировать строки между if и fi.Для того чтобы найти скрипт, в котором запускается демон, нужно поискать скрипт на предмет наличия в нем названия демона. Если я хочу найти, где запускается inetd, то должен сделать следующее:cd /etc/rc.dgrep -n inetd rc.*

Кратко перечислю демоны, которые можно удалять (список не претендует на полноту и достаточность):? inetd ? этот демон поддерживает такие вещи, как telnet, ftp и talk. Если вы не используете свою машину как сервер или не хотите иметь удаленный доступ к своей машине, то можете убрать inetd;? lpd ? используется для печати файлов на принтере командой lpr. Если вы не пользуетесь печатью на своей машине, то можете убрать lpd;? nfsd и mountd ? это два демона, образующие NFS сервер. Если вы не используете свою машину как NFS сервер, то можете спокойно убрать эти два демона;? portmap ? этот демон используется для поддержки сервиса RPC. Если вы не используете NFS или любую другую программу, использующую RPC, то можете убрать portmap;? sendmail ? это еще один демон, требующий достаточно много памяти. Если вы не используете свою машину в качестве почтового сервера, то можете убрать sendmail. Если вы пользуетесь электронной почтой, то программу чтения почты можно настроить на другой почтовый сервер.Могут быть также другие демоны в системе, которые вам не нужны. Удалите их, если они не нужны. Вы должны обязательно оставить только два демона ? это syslogd и klogd, которые ведут логи вашей Линукс-системы.

В более новых дистрибутивах запуск демонов прописан другим способом. В etc/rc.d есть другие подкаталоги, каждый из которых соответствует определенному runlevel'у. Для отключения какого-либо сервиса достаточно удалить соответствующую символическую ссылку в нужном каталоге на скрипт, запускающий этот сервис. Все скрипты, как правило, лежат в /etc/rc.d/init.d. Стоит также заметить, что еще проще и удобнее делать отключение сервисов при помощи соответствующих конфигурационных программ: linuxconf, drakconf (для Mandrake Linux).Вот и все. Стоит заметить, что результат выполнения вышеописанных действий зависит лишь от того, насколько вы разобрались в Linux. Так что используйте эти принципы на свой страх и риск. А также побольше читайте документацию (RTFM ? кто знает, тот поймет;). Удачи!

rootonly.ru

Оптимизация Linux для desktop и игр – Роман Козырьков

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

1. Купите SSD, если у вас его еще нет

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

Любой, даже самый дешевый SSD, сократит время запуска большинства программ до 0, что, визуально, будет очень заметно. Почти в любом компьютере (и сервере) главный тормоз это всегда дисковая подсистема и никакой HDD никогда не даст вам нужной скорости поиска (которая у SSD стремится к 0 мс). За все время общения с компьютерами и их апгрейда, только переход на SSD дал значительный прирост в скорости работы и отклике. Помните как медленно работают дискеты, какое у них огромное время поиска? Примерно вот так воспринимается жесткий диск после SSD.

Так что если у вас еще нет SSD, то продолжать дальше смысла нет, ваш компьютер (хоть даже оснащенный 12-ядерным Xeon’ом) все равно будет работать медленно, так что вперед за покупками.

Касательно надежности: есть миф что SSD умирают спустя год. Его рождению мы обязаны первым SSD на бажных чипах SandForce. Естественно, любой новый SSD из магазина как минимум надежнее и долговечнее современных жестких дисков, так что не стоит беспокоиться по этому поводу вообще. Свой SSD я купил 2 года назад б/у, на то время он был в использовании год. Сейчас у него 11 681 часов наработки и использование ресурса 10%, так что при том же режиме использования, мне его хватит еще на 27 лет. Думаю, к этому времени технологии хранения данных уже несколько раз изменятся. Так что повторюсь, проблемы с надежностью более чем надуманы.

В Ubuntu 14.04 SSD работают из коробки, опция discard автоматом прописывается в fstab, кроме этого больше ничего не нужно делать.

В других дистрибутивах нужно проверять, есть ли эта опция у разделов на SSD. Стоит упомянуть, что данную опцию поддерживает только ext4. Для других ФС придется пользоваться fstrim из планировщика.

2. Таблица разделов

Не делите диски на разделы.

Для домашнего компьютера это бессмысленно и вредно. На SSD у вас должен быть один раздел для корня, там у вас будет хранится система и все данные. На HDD (если нужен) у вас должен быть один раздел с точкой монтирования в /mnt (у меня /mnt/data), где будут хранится большие малоиспользуемые данные (фильмы, музыка, игры). НЕ НУЖНО делать HDD точкой монтирования /home, так как в /home 99% программ хранит свои данные и постоянно к ним обращается, поэтому /home должен быть на SSD.

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

Насчет SWAP-раздела: он вам не нужен. Если у вас не хватает оперативной памяти, то OOM-killer будет прибивать ресурсоемкие приложения, если это происходит то докупите оперативки, благо ее цена не сильно кусается. Использование swap как расширителя оперативной памяти значительно замедляет работу компьютера. Есть много мнений, что без SWAP будут какие-то проблемы, но ИМХО, корни эти разговоров растут от Win9x и на сегодня это уже мифы, лично я не замечал никаких проблем от отказа от SWAP. Как пруф: на VPS сейчас редко увидишь подключенный SWAP и работают же как-то!

suspend-to-disk вам тоже не нужен, потому что холодный старт с SSD быстрее чем восстановление из спячки с HDD, так что пользуйтесь suspend-to-ram или выключайте компьютер полностью. Единственный плюс от свапа — возможность уйти в гибридную спячку, это когда система готовится к suspend-to-disk, но выполняет suspend-to-ram, так что позже, если все хорошо, идет простой выход из спячки, а если произошел сбой питания — то система восстановится с диска.

Я использую везде файловую систему ext4, так как с другими мне не удалось получить заметной разницы в производительности, а ext4 наиболее распространена, плюс имеются утилиты для восстановления данных (но не надейтесь на них, а делайте бэкапы). При создании используйте -T largefile или largefile4.

3. Используйте 64-битное ядро

От производительности оперативной памяти мало что зависит, от нее не увеличится FPS в играх и не станут быстрее запускаться приложения. Использование 64-битных приложений тоже не дает никакого прироста для обычных задач, только для очень специфичных математических расчетов и операций архивирования. Также, использование 64 ядра не требуется для адресации более 4 ГБ памяти, PAE позволяет адресовать до 64 ГБ памяти на 32 битной системе.

Но используя 64-битное ядро, приложения могут адресовать больше чем 4 ГБ памяти, что довольно полезно, так как иначе может возникать ситуация когда OOM-killer будет прибивать программы, хотя оперативки еще достаточно. Также на 64-битной системе можно адресовать сразу же всю физическую память, на 32 битной же все что выше ~800 МБ надо постоянно ремапить, что несколько снижает скорость страничного обмена, хотя, как я уже сказал, это особо не влияет на скорость работы.

Еще замечал эффект, что OOM-killer может прибивать процессы, которые вроде бы еще не заняли 4 ГБ. У меня такое было с некоторыми играми. Проблема решилась переходом на 64 бита. Так что без 64-битного ядра уже никуда, хоть это и добавляет небольшие накладные расходы на использование памяти.

4. Используйте патсет pf-kernel

pf-kernel — это набор патчей для ядра linux, собранные украинцем Александром Наталенко (pfactum) направленные на улучшения desktop-experience linux-систем.

Он состоит из:

Наиболее полезными являются патчи BFS и BFQ, про которые уже очень много написано. BFQ борется с проблемой тормозов системы во время выполнения больших дисковых операций (знаменитый баг 12309, который по документам исправлено, но по факту продолжает досаждать), BFS — планировщий процессов, более подходящий для десктопной работы, чем те что идут в ядре. Например CFS, который используется по умолчанию допускает ситуацию, когда 2 процесса, которые требуют приоритет реального времени будут исполнятся на одном ядре, хотя другие ядра заняты низкоприоритетными задачами. Естественно, такое поведение приводит к глобальным тормозам. Зато «честный планировщик». BFS не такой «честный», но зато намного более приближен к реалиям настольных компьютеров с небольшим (большое — это 4096) количеством ядер.

Для установки, я качаю с kernel.org необходимую версию ядра без стабилизационнх патчей и накладываю на него pf-kernel. В общем случае это выглядит так:

cd /usr/src wget ftp://ftp.kernel.org/pub/linux/kernel/v3.x/linux-3.12.tar.xz tar -xf linux-3.12.tar.xz cd linux-3.12 wget https://pf.natalenko.name/sources/3.12/patch-3.12.4-pf.bz2 bunzip2 patch-3.12.4-pf.bz2 patch -p1 &lt; patch-3.12.4-pf

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

5. Тюнингуйте ядро!

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

Так что делайте make xconfig

Наиболее важные опции для оптимизации

Выключаем preemption, устанавливаем низкую частоту таймера и выключаем dynticks!

Идем в Processor type and features и выбираем для параметра Preemption Model значение No Forced Preemption (Server). Не пугаемся фразы «ocasional longer delays are possible» потому что данную проблему у нас эффективно решает BFS и многоядерный процессор. Как и написано в описании, мы выигрываем в «raw processing power».

Также, в целях оптимизации, для параметра Processor family выберите свой процессор.

Далее, устанавливаем для параметра Timer frequency значение 300 HZ.

В этом разделе есть немало интересных опций, посмотрите, например можно выключить hot-plug для cpu и памяти, так как на десктопе это просто невозможно сделать (а выключать-включать на лету ядра редко кому нужно).

Так как у меня не ноутбук, я выключаю все что связано с энергосбережением, то есть к примеру выключаю поддержку CPU Frequency scaling вообще.

Теперь отключим динамический таймер. Не уверен точно, так как не проверял конкретно, но похоже именно эта опция приводит к постоянным «подергиваниям» на некоторых видео и особенно в играх. Так что идем General setup -> Timers subsystem и для опции Timer tick handling выбираем Periodic timer ticks (constant rate, no dynticks).

Включаем BFQ

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

Идем Enable the block layer -> IO Schedulers включаем опции BFQ I/O scheduler и BFQ hierarchical scheduling support, для опции Default I/O scheduler выбираем, очевидно, BFQ.

6. Prelink

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

7. Заключение

После наложения патчсета и тюнинга ядра уходят «подергивания» в играх. Чем слабее железо, тем заметнее эти подергивания, хотя у меня есть подозрения что это все же какая-то проблема в драйверах nVidia, потому что разные версии ведут себя по-разному.

(via habrahabr)

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

kozyrkov.ru

Оптимизация Linux Mint

В этой небольшой заметки я расскажу как я оптимизирую Linux Mint.

Удаляем не нужные приложения

Для проигрывание видео я обычно использую VLC, поэтому встроенный видео плеер мне не нужен (удаляю его):

sudo apt-get remove --purge xplayer

Я не использую сканер, программу для просмотра изображений, поэтому удаляю их:

sudo apt-get remove --purge simple-scan pix pix-data

Я не использую IRC и поэтому удаляю его:

sudo apt-get remove --purge hexchat hexchat-common

Мне лично не нравится встроенный в Linux Mint аудио плеер Rhythmbox, поэтому его я обычно тоже удаляю:

sudo apt-get remove --purge rhythmbox librhythmbox-core9 gir1.2-rb-3.0 rhythmbox-plugins rhythmbox-plugin-tray-icon rhythmbox-data

Распаковка почти любого архива

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

Оптимизация Libre Office

Отключаем в настройках использование виртуальной машины Java (Сервис -> Параметры -> Libre Office -> Расширенные возможности). В вкладки Libre Office -> Память выставляем следующие настройки:

Использовать для Libre Office: 512 Мб Памяти на объект: 20 Мб

Оптимизация использования раздела подкачки (Swap):

По умолчанию Linux Mint начинает использовать раздел подкачки (swap), когда потреблят более 60% оперативной памяти, что не совсем правильно, так как ОЗУ работает быстрее чем чтения и запись на жесткий диск. Как это исправить, можно прочитать здесь.

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

После загрузки ядра, Linux Mint начинает загружать образ рам-диска (initial ramdisk). Как правило в нём много не нужного и он занимает более 25Мб. Поэтому его желательно пересобрать только с необходимыми модулями. После чего система будет грузиться быстрее. Подробнее об этом можно почитать здесь.

Предзагрузка с помощью preload

Preload наблюдает какие приложения пользователь регулярно использует и после анализа загружает бинарные файлы и зависимости в память, чтобы их запускать быстрее. Через какое-то время это может ускорить загрузку приложений до 55%. Инструкция по настройке находиться здесь.

Получаем контроль над Grub2 - заставляя его показывать информацию о загрузки

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

У вас включён блокировщик рекламы (Adblocker, Adblocker Plus, uBlock).Если вы хотите поддержать автора данного поста, пожалуйста выключите его!

Порекомендуйте эту статью друзьям:

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий:

phpland.org


Prostoy-Site | Все права защищены © 2018 | Карта сайта