Журнал LinuxFormat - перейти на главную

LXF124:TopSpeed

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Ускоряем Linux

Всего несколько настроек могут сделать всеми любимую ОС легче, быстрее и мощнее. Боб Мосс перерыл пол-Интернета, чтобы узнать, какие именно.

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

Увы, не всегда. Сообществам, развивающим популярные дистрибутивы, нужно привлечь самую широкую аудиторию и гарантировать совместимость с любым оборудованием. Получается, что у тех, кто ставит дистрибутив на нетбуке или недорогом ПК, практически та же конфигурация ПО, что и у владельца мощного игрового компьютера. Но так не должно быть!

При помощи пары-другой настроек и небольшого экспериментирования ваша Linux-система высвободит скрытый потенциал машины. У вас процессор с двумя ядрами? Запускайте процессы параллельно. Избыток оперативной памяти? Отведите его под кэш данных. Сила всеми любимой свободной ОС в том, что ее можно настроить с самого основания, так что Linux – идеальный инструмент для подгонки по вашим меркам.

Ну, а если у вас сверхбыстрая система, куда уж еще эффективнее? Мы расспросили читателей LXF и выдающихся членов сообщества свободного ПО об их любимых ухищрениях для повышения производительности — вам они тоже пригодятся!

Быстрая загрузка

Тратите бесценные мгновения своей жизни, дожидаясь появления рабочего стола?

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

Ликвидация задержки

Можно заметить, что при каждой загрузке идет небольшой обратный отсчет, [обычно] от трех до нуля. Изначально это было введено для гарантии, что более старое оборудование успеет подготовиться к работе до того, как стартует ядро. Современным системам такого не требуется; вот и устраним лишнюю задержку. Откройте от имени суперпользователя-root в текстовом редакторе файл /boot/grub/menu.lst и поищите строку, содержащую:

timeout=3

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

Улучшим работу диска

Если ваш жесткий диск DMA-совместим (DMA – это Direct Memory Access, прямой доступ к памяти), но данный режим почему-то не активирован, небольшой настройкой можно существенно повысить пропускную способность. Это ускорит загрузку: время чтения уменьшится, а общая производительность винчестера повысится. Сначала установите hdparm из вашего менеджера пакетов, затем откройте терминал root и введите:

hdparm -d1 /dev/hda

заменив /dev/hda на имя устройства, соответствующего вашему жесткому диску. Вы можете также добавить соответствующий ключ -X – подробности можно найти на man-странице hdparm.

Пользователи Gnome могут делать все это автоматически, зайдя в Система > Администрирование > Службы. Затем команду следует добавить как пункт, приписав в начале gksudo, чтобы она выполнялась с правами root без дополнительной аутентификации.

Параллелизм

Распараллеливание может дать сильный выигрыш в производительности, ведь выполнение сразу двух процессов вдвое экономит время по сравнению с их поочередной работой (по крайней мере, в теории). Воспользуйтесь этим в системах на базе Debian/Ubuntu, открыв (от имени root) файл /etc/init.d/rc в текстовом редакторе и отыскав такую строку:

CONCURRENCY=none

Затем замените none на shell, сохраните файл и закройте редактор. При следующем старте вы увидите заметное уменьшение времени загрузки (обычно на одну или две секунды).

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

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

Прекрасный способ повысить производительность – умело распорядиться подкачкой. Раздел подкачки – это место, где ядро Linux временно хранит содержимое оперативной памяти, быстро возвращая его обратно в ОЗУ при необходимости. Выделенный раздел не обязателен, однако он также используется для сохранения состояния машины при переходе в спящий режим. Эффект от данной подсказки будет зависеть от вашей системы и от того,есть ли у вас раздел подкачки, однако при достаточном ОЗУ вы увидите, что менее активное использование подкачки приводит к заметному повышению производительности. Откройте в текстовом редакторе, запущенном от имени root, файл /etc/sysctl.conf и припишите в самый конец следующую строку:

vm.swappiness=10

(Чтобы изменения возымели действие, понадобится перезагрузка.) Значение можно менять, отслеживая изменение производительности. Чем меньше этот параметр, тем реже будет использоваться подкачка, и тем больше данных будет храниться в памяти. Представленное значение, на наш взгляд, давало лучшую производительность на тестовой системе с 512 МБ ОЗУ.

Однако этот совет не ограничивается системами с большим ОЗУ – системы с 256 МБ и даже меньше обретут большую производительность, если увеличить интенсивность подкачки: при этом в раздел подкачки попадет больше данных, высвободив память для штатных задач. Точные значения разнятся от системы к системе и требуют экспериментов, главным образом потому, что чтение данных из раздела подкачки занимает больше времени, чем чтение из памяти; но конечный результат обычно стоит затраченных усилий.

Глас Гуру № 1 – Ричард Столлмен

Richard Stallman Основатель проекта GNU

«Главный совет, который я могу дать пользователям – работайте в командной строке. Ограничиваясь GUI, вы смотрите на свою систему сквозь мутное стекло.»

Лучший совет: «Недавно я узнал о команде BashM- (если у вас нет клавиши Meta, нажмите Escape, а потом точку), которая копирует последний аргумент предыдущей команды.»

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

Отправьте ненужные элементы автозапуска и элементы меню на свалку истории.

Наряду с KDE, Gnome является одним из двух наиболее широко используемых окружений рабочего стола в экосистеме Linux, но по части производительности и скорости его резво обгоняют Xfce и другие более легковесные альтернативы. Хотя… несколько подстроек, и Gnome сможет держаться с ними голова к голове.

Установка preload

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

service preload on

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

Автоматический вход

Ну да, мы постоянно напоминаем вам о важности безопасности. Однако если вы живете один в замке, не имеющем выхода в Интернет, отчего бы не включить автоматический вход – сэкономится время на ввод пароля! Проще всего сделать это через GUI. Просто зайдите в System > Administration > Login Window [Система > Администрирование > Вход в систему]. Представьтесь системе, перейдите на вкладку Security [Безопасность] и поставьте галочку рядом с Automatic Login [Автовход]. Затем в выпадающем списке отметьте пользователей, для которых автоматический вход будет работать.

К сожалению, пользователям Fedora такая возможность недоступна, и необходимые изменения нужно проделывать вручную. Чтобы включить автоматический вход, откройте в текстовом редакторе, работающем от имени root, файл /etc/gdm/custom.conf и затем припишите в конце такие строки:

[daemon]
TimedLoginEnable=True
TimedLogin=UserName
TimedLoginDelay=0

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

Проволочные рамки

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

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

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

Ускорение меню

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

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

gtk-menu-popup-delay=0

Сохранив файл, нажмите Ctrl+Alt+Backspace для перезапуска xserver, и ваши меню будут открываться заметно быстрее.

Советы читателей: Экономия в терминале

Сочетание клавиш Действие
Ctrl+L Очистка терминала (работает в Konsole и Bash)
Вверх, затем Ctrl+T Берет последнюю введенную команду и меняет местами последние две буквы
Ctrl+R Поиск в истории введенных команд (только в Bash)
Ctrl+Alt+(F1-7) Переход в виртуальный терминал (F7 возвращает в GUI, если только у вас не Fedora)
Alt+Лево/Право Циклическое перемещение по терминалам (если вы не в GUI)

Эти советы нам дали: mugstar, TomMan, tad, indie, patsychomper и Anonymous Penguin на TuxRadar.com.

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

Скрытые функции KDE резко повышают производительность.

В последнее время о KDE пишут всякое. Однако при том, что у KDE 4 несомненно прекрасный внешний вид, и новые плазмоиды ставят его вне конкуренции, он все еще не может тягаться с KDE 3 (или даже Gnome) в плане скорости и производительности. Хотя эти проблемы усиленно решаются, несколько настроек могут сэкономить пару секунд драгоценного времени загрузки и сделать весь рабочий стол гораздо более отзывчивым.

Ускорение ext3

Можно приобрести значительное преимущество в производительности, задействовав в ext3 режим обратной записи [writeback]. Это свойство не ограничивается системами с KDE, однако почти во всех дистрибутивах оно по умолчанию отключено – в основном потому, что обеспечивает защиту от сбоя для метаданных файловой системы, но не для хранящихся в файлах данных. Данная настройка не оказывает заметного влияния при типовых нагрузках на диск, как в домашней системе, но может сказаться при высокой интенсивности операций чтения/записи, что является прерогативой серверов. Сделав резервную копию данных, откройте от имени root в текстовом редакторе файл /etc/fstab, найдите строку с фрагментом

relatime,errors=remount-ro

и замените ее на

noatime,nodiratime,errors=remount-ro,data=writeback

Если слева или справа от этого фрагмента не будет текста, то вы где-то ошиблись! Сохраните файл и выйдите из редактора, затем откройте /boot/grub/menu.lst и найдите следующие строки:

# defoptions quiet splash
#altoptions=(recoverymode) single

Они стоят не рядом, однако найдя их, припишите к каждой из них следующее:

rootflags=data=writeback

затем сохраните и закройте файл. Откройте терминал root, выполните update grub. Теперь можно просто перезагрузиться, чтобы все изменения вступили в силу, либо применить их на лету, установив tune2fs из вашего менеджера пакетов. При выборе последнего варианта вам нужно будет еще открыть терминал root и ввести там

tune2fs -o journal_data_writeback /dev/hda1

заменив /dev/hda1 на ваш корневой раздел.

Отключение IPv6

Пусть IPv6 уже кое-где реализован, Konqueror вынужден преобразовывать в него более распространенный IPv4 – так что при отключении IPv6 вы получите выигрыш в скорости. Способы сделать это различны для разных дистрибутивов. Например, в Kubuntu нужно отредактировать файл /etc/environment от имени root, добавив такую строку:

KDE_NO_IPV6=True

В openSUSE, отредактируйте от имени root /etc/sysconfig/windowmanager, где отыщите строку

KDE_USE_IPV6=”yes”

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

Автоматический вход

Gnome – не единственный рабочий стол, допускающий автоматический вход в систему: пользователи KDE 4 могут поступить так же, зайдя в System Settings [Параметры системы] и щелкнув по вкладке Advanced [Дополнительно], а потом перейдя к менеджеру входа в систему и задействовав автоматический вход на вкладке Convenience [Удобства]. Вам также нужно будет пометить пользователя, который будет входить автоматически, в выпадающем списке, расположенном под галочкой. После перезагрузки экран входа пропустится, вы сразу увидите заставку KDE 4.

Старт с пустого сеанса

По умолчанию KDE 4 сохраняет ряд данных о вашем текущем сеансе (открытые окна, запущенные процессы и пр.), чтобы при следующем входе в систему он был таким же, как и при окончании работы. Это удобство, однако, замедляет загрузку, так как все данные подгружаются заново. Проблемы можно избежать, приказав стартовать с пустого сеанса. Выберите System Settings (или Configure Desktop в OpenSUSE) в меню KDE и на вкладке Advanced запустите менеджер сеансов. Ближе к низу формы поставьте переключатель в положение Start With An Empty Session [Начинать с пустой сессии], затем нажмите Apply [Применить].

Быстрый старт Konqueror

Konqueror заработает намного быстрее, если включить предзагрузку. Это требует немного памяти, но зато при запуске Konqueror откроется раза в два шустрее, и как раз на том месте, где вы его закрыли. Если вы используете старт KDE с пустой сессии, для паники нет причин, так как мы настроим автоматический запуск предзагрузки при запуске KDE. Чтобы включить предзагрузку, откройте браузер и зайдите в Settings > Configure Konqueror [Параметры > Настроить Konqueror]. В разделе Performance [Производительность] отметьте опцию Preload An Instance After KDE Startup [Загружать экземпляр после запуска KDE]. Тут же можно указать, сколько экземпляров Konqueror будут предварительно загружаться, в зависимости от того, сколько окон Konqueror вам надо держать открытыми одновременно.

Глас Гуру № 2 – Гаэль Дюваль

Gaёl Duval Основатель Mandriva и Ulteo «Очень сложно думать про малоизвестные хаки и подсказки, ведь на свете столько умников – многие из них знают куда больше меня!»

Лучший совет: «Я всегда пользуюсь ‘!кусок_команды’ в качестве повторителя команды оболочки, которую хочу вызвать снова. Например, если я недавно вводил ‘ps auxww’ и хочу выполнить это еще раз, я просто ввожу ‘!ps’. Конечно, здорово использовать это совместно с номером команды, возвращаемом из списка прошлых команд с помощью ‘history’. Просто введите ‘!номер_команды’, и повторится команда из списка истории команд.»

Тюнинг для вашей сети

Если закачки стали тормозить, следуйте нашим советам.

Итак, вы настроили маршрутизатор, оптимизировали сервер и сменили все широкополосные фильтры в своем доме – но скорость все еще мала. Прежде чем злобно звонить своему провайдеру, проверьте, не является ли узким местом клиентская машина. С помощью следующих настроек вы сможете улучшить вашу связь или, по крайней мере, исключить свой компьютер как причину неисправности.

Дать хосту имя ‘localhost’

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

127.0.0.1 localhost yourhost
127.0.0.1 yourhost

где yourhost – имя машины (например, bobdesktop). Обязательно сохраните старую копию файла /etc/hosts, на случай, если что- то пойдет не так!

Оптимизация настроек TCP

Дистрибутивы поставляются с настройками для «усредненных» пользователей Интернета, однако в пестром мире 3G, телефонных модемов и ADSL понятия «среднего потребителя» не существует. Отредактируйте от имени root файл /etc/sysctl.conf, добавив в него такие строки:

net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1

(Отчасти это метод проб и ошибок, так что сохраняйте резервные копии изменяемых вами файлов). Верхняя строка удаляет временные отметки, сокращая сетевые пакеты на 12 байт. Нижняя включает т. н. «выборочное подтверждение» (Selective Acknowledgement, SAK) и уменьшает число пакетов, передаваемых повторно. Это может оказаться заметным на «плохом» канале, но не даст ощутимого эффекта в надежной сети.

Метрики и история

Вы можете продолжить оптимизацию своих TCP-настроек, приписав в тот же текстовый файл следующие строки:

net.ipv4.tcp_no_metrics_save = 1
net.core.netdev_max_backlog = 2500

Верхняя строка ускоряет соединение, обеспечивая, чтобы TCP-метрики для закрытых соединений не сохранялись в кэше. Вторая устанавливает размер «истории» (backlog) пакетов. Что касается примерных значений параметра netdev_max_backlog, то для беспроводных или старых сетей Ethernet рекомендуется брать около 2000, а для Gigabyte Ethernet – около 5000. С другой стороны, для дорогого 10-ГБ кабеля Ethernet это значение можно повысить до 30000. Чем медленнее соединение, тем короче должна быть «история», и цель этой настройки – подобрать такой размер буфера входящих пакетов, при котором ядро успевает обработать их все без отклонения и повторной передачи.

Вариации окна TCP

Настройки окна TCP определяют минимальный и максимальный размер пакетов, которые можно получать и посылать. Владельцы телефонных модемов обнаружат повышение скорости при меньшем размере пакетов, а пользователи широкополосных каналов – при большем размере. Отредактируйте /etc/sysctl.conf от имени root, приписав туда

net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_wmem = 10240 87380 16777216
net.ipv4.tcp_rmem = 10240 87380 16777216
net.ipv4.tcp_mem = 16777216 16777216 16777216
net.core.rmem_max = 16777216
net.core wmem_max = 16777216

Эти цифры оптимизированы для 2-Мбит соединения через широкополосную беспроводную связь Sky, а в общем случае рекомендуемый размер пакета равен максимальной ширине полосы, деленной на время ожидания. Эти значения можно найти, зайдя на http://www.speedtest.net; заодно можно проанализировать, как ваши изменения повлияли на связь, посетив http://www.speedguide.net:8080.

Советы читателей: MySQL

Если у вас работает база данных MySQL, вы можете сделать резервную копию в одном файле, всего одной командой в терминале:

mysqldump -u root -p -F -- masterdata=2 --delete-master-logs -A > backup.sql

Если она не сработает, убедитесь, что в файле ~/.my.cnf (который, может быть, придется создать), выставлено logbin=mysql-bin. Этот файл также можно использовать для установки беспарольного входа. Добавьте в него следующие строки:

[client]
user=имя_пользователя
password=пароль

Главное – не позволяйте другим пользователям системы просматривать данный файл, ведь он содержит пароли MySQL в текстовом виде! Можно ограничить права доступа следующей командой:

chmod 600 ~/.my.cnf

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

Спасибо Джону Хадсону [John Hudson] и Леандро Моргадо [Leandro Morgado] (Sun Microsystems) за эти советы.

Персональные инструменты
купить
подписаться
Яндекс.Метрика