Linux оптимизация java машины

Обновлено: 01.07.2024

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

За все время существования толстых пингвинов (период, отсчитываемый примерно с момента появления GTK+ 2.X, X Free 4.X и Linux 2.6) было придумано немало способов ускорения запуска приложений и всей ОС.

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

Предварительное связывание или PRELINK

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

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

Файлы a.out всегда точно знали, по какому адресу они будут загружены в память процесса, и по каким адресам будут располагаться их внутренние функции, константы и т.д. Эта особенность, с одной стороны, давала им преимущество в скорости загрузки, а с другой — создавала проблемы сосуществования библиотек в памяти (что, если две библиотеки будут загружены в память по одному адресу?). Проблемы надо было решать, поэтому появился формат ELF (его создатели на самом деле были поклонниками книг Толкиена :)), который снимал с исполняемых файлов ответственность за выбор адреса своего размещения в виртуальной памяти и перекладывал ее на динамический линковщик. Отныне адреса загрузки приложений, библиотек и всех их символов (переменных, констант, функций т.д.) вычислялись динамически на этапе загрузки.

ELF позволил UNIX/Linux сделать огромный шаг вперед и стать системой, способной загружать и исполнять огромное количество приложений, слинкованных с таким же количеством библиотек, без всяких проблем. Однако с точки зрения производительности это был провал. Процедура динамического связывания очень быстра, и при запуске приложений, зависящих всего от нескольких библиотек, она не вносит в процесс заметных задержек, но если это запуск громоздкого приложения с зависимостями порядка 50 библиотек, то задержка может быть весьма существенной (вплоть до нескольких десятков секунд).

Так называемое пре-связывание наделяет ELF-файлы наиболее выгодной чертой формата a.out. Запускаемые файлы модифицируются таким образом, чтобы уже включать в себя результат динамического связывания и, соответственно, заранее знать собственные адреса в памяти процесса и не тратить на их вычисление время в течение запуска. Процедура пре-связывания была предложена сотрудником Red Hat Jakub Jelinek еще в 2004 году и оказалась очень удачным методом повышения скорости запуска приложений. Согласно тестам, она может дать прирост, равный 50% от первоначальной скорости запуска, а в особо тяжелых случаях (OpenOffice, KDE, Gnome) — и того больше. При этом для ускорения системы достаточно запустить всего одну команду и немного подождать.

Да, задействовать механизм пре-связывания действительно просто. Для этого уже упомянутый выше Jakub Jelinek написал программу под названием prelink. Она доступна практически в любом Linux-дистрибутиве, поэтому собирать из исходников ничего не придется. Просто установи пакеты prelink, используя пакетный менеджер дистрибутива, и выполни следующую команду:

Аргументы командной строки в этом случае значат следующее:

  • v — выводить больше информации на экран;
  • a — подвергнуть пре-связыванию все бинарные файлы;
  • m — сохранить виртуальную память (нужно, если библиотек очень много);
  • R — рандомизировать порядок следования участков памяти (повышает уровень защиты от атак на срыв стека).

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

  1. Prelink не способен увеличить скорость загрузки бинарников, скомпилированных без опции '-fPIC'. К сожалению, таких библиотек достаточно много, обычно сборщики пакетов нарочно отключают этот флаг для увеличения производительности приложения;
  2. Prelink не умеет обрабатывать библиотеки проекта wine, поэтому об ускорении Windows-софта придется забыть;
  3. Некоторые статические библиотеки могут перестать запускаться после обработки prelink;
  4. После установки новых приложений или библиотек операцию прелинкинга рекомендуется повторить. Для удаления prelink делаем так:

Далее можно тереть пакет из системы.

Предварительная загрузка или PRELOAD

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

Демон preload может существенно повысить скорость загрузки приложений, но произойдет это только в том случае, если система оснащена достаточно большим объемом памяти. Два гигабайта — это минимум, при котором preload даст выигрыш, при меньших объемах он только помешает. Пакет preload можно найти в составе любого современного дистрибутива, поэтому для его установки достаточно использовать стандартный менеджер пакетов:

$ sudo apt-get install preload

Далее следует отредактировать конфигурационный файл /etc/preload.conf. Демон вполне сносно работает и при стандартных настройках, однако каждый из нас индивидуален и использует систему по-своему, поэтому, вероятно, ты захочешь подогнать preload под себя. Перечислю основные опции в секции model:

  • cycle — частота обращений к системе для сбора статистики. Значение по умолчанию — 20 секунд. В большинстве случаев изменять его не имеет смысла, однако если ты чувствуешь, что preload вредит производительности системы, увеличь значение.
  • halflife — задает интервал, по истечению которого preload будет забывать накопленную статистику на 50%. Значение по умолчанию — 168 часов (неделя). Рекомендуется уменьшить значение тем, кто часто меняет софт, и увеличить тем, кто может месяцами/годами пользоваться одним и тем же набором приложений.
  • minsize — минимальный размер объекта (программы, библиотеки), обрабатываемого preload. Значение по умолчанию — 2 000 000 байт (около 2 Мб), поэтому preload не будет выполнять предварительную загрузку файлов меньшего размера. Нет особой нужды менять это значение, однако если тебе кажется, что памяти будет достаточно и для кэширования более мелких приложений — уменьши значение.
  • memtotal, memfree, memcached — эти три опции взаимосвязаны и указывают на потребляемый preload объем памяти. Для расчетов используется следующая формула: (общее количество памяти х memtotal) + (память, доступная при старте х memfree) + (кэш х memcached).

Секция system также содержит три интересных для нас опции:

  • mapprefix — список каталогов, файлы которых должны быть предварительно загружены (имей в виду, что это не только бинарники и библиотеки, но и другие типы файлов).
  • exeprefix — список каталогов с бинарными файлами.
  • sortstrategy — способ оптимизации операций ввода-вывода. Значение по умолчанию — 3 (оптимизация для жестких дисков). Для твердотельных дисков лучше всего подойдет значение 1, для сетевых файловых систем — 2.

На этом все, можешь перезагрузить preload:

$ sudo /etc/init.d/preload reload

Как и любой другой демон, preload ведет логи, которые ты сможешь найти в файле /val/log/preload.log. Информация о текущем состоянии preload и его кэше доступна в файле /var/lib/preload/preload.state.

Предварительное чтение или READAHEAD

Ubuntu, а также некоторые другие современные дистрибутивы Linux, используют систему readahead во время инициализации системы. Как и демон preload, readahead заранее загружает необходимые компоненты приложений в оперативную память с целью ускорить их запуск. Разница заключается лишь в том, что readahead частично работает внутри ядра Linux и оптимизирован специально для ускорения процесса инициализации системы.

Система использует утилиту /sbin/readahead-list, которая читает файлы /etc/readahead/boot и /etc/readahead/desktop и загружает перечисленные в них файлы во время инициализации системы. Эта простая и эффективная схема, которая, однако, имеет и очевидные недостатки. Дело в том, что любая стандартная установка Ubuntu со временем претерпевает изменения в количестве установленных и загружаемых во время старта ОС сервисов. Списки файлов в этом случае становятся неактуальными и требуют обновления. Параметр ядра profile позволяет перестроить списки предварительно загружаемых файлов. Для его включения перезагрузи систему, во время загрузки нажми <Esc> для входа в меню загрузчика, далее нажми <e> и добавь в конец списка параметров ядра слово profile. Нажми <b> для загрузки. Инициализация системы в режиме профилирования займет время, поэтому будь готов потерпеть.

Заморозка процесса или CRYOPID

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

Так почему бы не развить эту идею дальше и не сделать так, чтобы вместо остановки процессов их состояние можно было бы заморозить, а позже — восстановить, избавив программу от необходимости каждый раз производить сложную и трудоемкую инициализацию внутреннего состояния? Не мы первые, не мы последние. CryoPID — простое приложение для заморозки процессов и последующего их восстановления. Прога не требует прав root или модификации ядра, работает на архитектурах x86 и amd64 и, что самое главное, не привязывает замороженный процесс к конкретной машине. После заморозки процесс превращается во что-то вроде самораспаковывающегося архива, ты легко можешь перенести его на другую машину и просто запустить. Пакет CryoPID есть далеко не в каждом дистрибутиве, поэтому его придется установить самостоятельно:

После этого можно запустить программу следующим образом:

/bin/freeze имя-файла pid-поцесса

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

Шустрая загрузка UBUNTU

Ubuntu быстра, на самом деле быстра. Скорость загрузки этого дистрибутива оставляет далеко позади многие другие линуксы и заставляет завидовать поклонников BSD-систем. Однако нет пределов совершенст ву, и в этом разделе мы попробуем ускорить ускоренное.

1. Отключи таймаут в grub. По умолчанию загрузчик ждет 3 секунды, чтобы пользователь смог изменить параметры загрузки. Открой файл /boot/grub/menu.lst, найди строку «timeout=3» и замени 3 на 0.

2. Отключи splash. Ubuntu splash-screen, показываемый во время загрузки системы, малоинформативен и требует время на свою загрузку. Поэтому открываем все тот же /boot/grub/menu.lst и убираем опции «quiet» и «splash» из параметров загрузки ядра.

3. Отключи IPv6. Раньше поддержка пока ненужного протокола IPv6 в Linux была реализована в виде загружаемого модуля, поэтому для ее отключения требовалось лишь слегка отредактировать файл /etc/ modprobe.d/aliases. Сегодня IPv6 вшит прямо в ядро, поэтому для его отключения ядру должен быть передан параметр «ipv6.disable=1». Сделать это можно, отредактировав файл /boot/grub/menu.lst.

4. Отключи проверку на выход из спящего режима. Во время своей загрузки ядро выполняет проверку, выходит ли комп из спящего режима (suspend) или выполняет обыкновенную загрузку. Занимает эта процедура всего одну секунду, однако ее тоже можно сэкономить, добавив опцию «noresume» к параметрам загрузки ядра. Естественно, владельцам ноутбуков этого делать не стоит.

5. Оптимизируй initramfs. Образ RAM-диска используется для хранения низкоуровневых компонентов ОС, которые должны быть доступны еще до монтирования корневой файловой системы. По умолчанию этот образ содержит всевозможные компоненты, подобранные на все случаи жизни. Без них образ грузится в память быстрее, что способст вует сокращению общего времени загрузки системы. Открываем файл /etc/initramfs-tools/initramfs.conf, находим строку «MODULES=most» и заменяем ее на «MODULES=dep». Далее пересобираем все доступные образы только с необходимыми компонентами:

$ sudo update-initramfs -k all -u

После обновления ядра образы будут сгенерированы автоматически.

6. Отключи ненужные сервисы. По умолчанию в Ubuntu активировано множество фоновых сервисов на все случаи жизни. Вряд ли тебе нужны они все, поэтому идем отключать. Открываем System q„ Administration

  • Bluetooth Manager — менеджер устройств Bluetooth
  • Check for new hardware drivers — проверка новых версий проприетарных драйверов
  • Evolution Alarm Notifier — сигнализатор прихода почты в Evolution
  • Print Queue Applet — апплет очереди печати
  • Tracker — служба поиска и индексирования

7. Отключи автостарт ненужных приложений. Во время входа в систему происходит автозапуск большого количества различных приложений (в основном это апплеты). Не все они нужны, поэтому открой System ra Preferences p„ Applications startup и удали все, что считаешь ненужным (например, апплет bluetooth). Запуск оставшихся приложений можно немного оптимизировать с помощью следующего трюка: отредактируй строку запуска каждого из них так, чтобы она приняла примерно такой вид:

sh -c "sleep 10; exec bluetooth-applet"
sh -c "sleep 20; exec /usr/lib/evolution/2.28/evolution-alarm-notify"

Ускоряем запуск тяжеловесов

/.mozilla/firefox/ -name *.sqlite \
-exec sqlite3 <> VACUUM \;

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

Если вам необходима виртуальная машина Java, вы можете воспользоваться ее отличной реализацией с открытым исходным кодом под названием OpenJDK с плагином IcedTea для веб-браузера. Оба упомянутых программных компонента доступны из официальных репозиториев пакетов большинства дистрибутивов Linux и своевременно обновляются. Для большинства пользователей данная реализация виртуальной машины Java является адекватной заменой реализации виртуальной машины от компании Oracle.

Именно по этой причине реализация виртуальной машины Java от компании Oracle с закрытым исходным кодом Java Runtime Enviroment (JRE) была удалена из официальных репозиториев пакетов некоторых дистрибутивов. Например, она была удалена из репозитория пакетов пртнеров компании Canonical «Partners» дистрибутива Ubuntu.

Для установки OpenJDK вместе с плагином IcedTea необходимо использовать терминал.

В Linux Mint и Ubuntu следует ввести в него следующую команду (используйте функции копирования/вставки):

В Fedora Workstation — следующую команду:

sudo dnf install icedtea-web

После окончания ввода команды следует нажать клавишу Enter для ее исполнения. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter. Виртуальная машина OpenJDK будет установлена вместе с плагином для веб-браузера.

2. Дополнительный вариант: Oracle Java (JRE)

Однако, некоторым пользователям Linux просто необходима виртуальная машина Oracle Java (JRE).

2.1. Установка Oracle JRE в Linux Mint и Ubuntu

A. В Linux Mint и Ubuntu вы можете установить виртуальную машину Oracle Java (JRE) либо вручную, либо из персонального архива пакетов проекта Webupd8 таким образом, как описано ниже. Для этого вам потребуется терминал.

В первую очередь следует удалить из системы компоненты виртуальной машины OpenJDK. Для этого следует вставить в терминал следующую команду (используйте функции копирования/вставки):

sudo apt-get purge openjdk-*

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

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

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update

После ввода каждой из команд следует нажимать клавишу Enter для ее исполнения.

После ввода команды следует нажать клавишу Enter для ее исполнения. В процессе установки пакета программного обеспечения вам будет предложено согласиться с лицензионным соглашением компании Oracle — сначала просто подтвердите свое намерение, нажав клавишу Enter, после чего выразите согласие с лицензионным соглашением, нажав сначала клавишу Tab, затем — Enter.

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

После ввода команды следует нажать клавишу Enter для ее исполнения. В результате в вашу систему будет установлена виртуальная Oracle Java вместе с плагином для веб-браузера.

E. После окончания процесса установки виртуальной машины вы можете воспользоваться следующей командой для проверки ее работоспособности:

java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

Если вы получите аналогичный вывод, можете быть уверены в том, что установка виртуальной машины прошла успешно. В противном случае следует воспользоваться следующей командой, ввести номер пункта с путем «/usr/java/latest/jre/bin/java» и нажать на клавишу Enter:

sudo alternatives --config java

Имеется 6 программ, которые предоставляют 'java'.

Выбор Команда
-----------------------------------------------
*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.fc25.x86_64/jre/bin/java)
2 /usr/java/jre1.8.0_102/bin/java
3 /usr/java/default/bin/java
4 /usr/java/jre1.8.0_112/bin/java
5 /usr/java/latest/jre/bin/java
6 /usr/java/latest/bin/java

Enter - сохранить текущий выбор[+], или укажите номер: 6

Эта же команда может оказаться полезной при обновлении пакета программного обеспечения виртуальной машины Java до новой версии. Для проверки работоспособности плагина веб-браузера достаточно перейти по ссылке и нажать на кнопку "Verify Java version".

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

2.2. Установка Oracle JRE в Fedora Workstation

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

В том случае, если вы получите вывод «i386», «i486», «i586» или «i686», ваша система является 32-битной, если же вы получите вывод «x86_64», ваша система является 64-битной.

B. Теперь следует перейти на официальный сайт компании Oraсle, открыть вкладку «Downloads» и нажать на кнопку «Download» под надписью «JRE». На следующей странице следует выбрать одну из секций, выбрать вариант «Accept License Agreement» и загрузить RPM-пакет. Для 32-битной операционной системы следует загружать пакет «jre-<версия>-linux-i586.rpm», для 64-битной — пакет «jre-<версия>-linux-x64.rpm».

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

После ввода команды следует нажать клавишу Enter для ее исполнения.

D. Далее нужно установить RPM-пакет в систему с помощью одной из следующих команд (следует отредактировать команду, подставив версию загруженного пакета в нее).

Команда для 32-битных систем:

sudo rpm -ihv jre-8u112-linux-i586.rpm

Команда для 64-битных систем:

sudo rpm -ihv jre-8u112-linux-x64.rpm

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

E. Наконец, для активации виртуальной машины и плагина придется воспользоваться следующими командами:

sudo alternatives --install /usr/bin/java java /usr/java/latest/jre/bin/java 200000
sudo alternatives --install /usr/bin/javaws javaws /usr/java/latest/jre/bin/javaws 200000

Команда для активации плагина веб-браузера в 32-битной системе:

sudo alternatives --install /usr/lib/mozilla/plugins/libjavaplugin.so libjavaplugin.so /usr/java/latest/jre/lib/i386/libnpjp2.so 200000

Команда для активации плагина веб-браузера в 64-битной системе:

sudo alternatives --install /usr/lib64/mozilla/plugins/libjavaplugin.so libjavaplugin.so.x86_64 /usr/java/latest/jre/lib/amd64/libnpjp2.so 200000

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

F. В результате виртуальная машина Oracle Java будет установлена в систему вместе с плагином для веб-браузера. После окончания процесса установки виртуальной машины вы можете воспользоваться следующей командой для проверки ее работоспособности:

java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

Если вы получите аналогичный вывод, можете быть уверены в том, что установка виртуальной машины прошла успешно. В противном случае следует воспользоваться следующей командой, ввести номер пункта с путем «/usr/java/latest/jre/bin/java» и нажать на клавишу Enter:

sudo alternatives --config java

Имеется 6 программ, которые предоставляют 'java'.

Выбор Команда
-----------------------------------------------
*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.fc25.x86_64/jre/bin/java)
2 /usr/java/jre1.8.0_102/bin/java
3 /usr/java/default/bin/java
4 /usr/java/jre1.8.0_112/bin/java
5 /usr/java/latest/jre/bin/java
6 /usr/java/latest/bin/java

Enter - сохранить текущий выбор[+], или укажите номер: 6

Эта же команда может оказаться полезной для возвращения к использованию OpenJDK или при обновлении пакета программного обеспечения виртуальной машины Java до новой версии. Для проверки работоспособности плагина веб-браузера достаточно перейти по ссылке и нажать на кнопку "Verify Java version".

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

Команда для 32-битных систем:

sudo rpm -Uhv jre-<версия>-linux-i586.rpm

Команда для 64-битных систем:

sudo rpm -Uhv jre-<версия>-linux-x64.rpm

Процедура выбора новой версии виртуальной машины описана в предыдущем пункте.

2.3. Оптимизация параметров виртуальной машины Java

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

В первую очередь следует открыть окно терминала и ввести в него следующую команду (используйте функции копирования/вставки):

После ввода команды следует нажать на клавишу Enter для ее исполнения. В результате откроется панель управления виртуальной машины Java. Для ограничения объема хранилища для временных файлов следует нажать на кнопку «Settings» из раздела «Temporary Internet Files» с вкладки «General» и в открывшемся диалоговом окне с помощью ползунка из раздела «Disk Space» установить значение 50 MB. После этого следует нажать на расположенную под данным разделом кнопку «Delete Files. », нажать на кнопку «OK» в нижней части диалогового окна и снова нажать на кнопку «OK» в нижней части окна панели управления виртуальной машины Java.

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

3. Решение проблем, связанных с блокировкой веб-браузерами плагинов Java

3.1. Разблокировка плагина Java в Firefox 52 и более новых версиях данного веб-браузера

Современные веб-браузеры начали блокировать плагин Java из-за проблем с их безопасностью. В Firefox 52 и более новых версиях данного веб-браузера все еще возможно снять блокировку рассматриваемого плагина. Это делается следующим образом.

Для начала следует ввести с помощью адресной строки браузера специальный адрес

После окончания ввода адреса следует нажать клавишу Enter. Вы должны будете увидеть предупреждение. Можете смело проигнорировать его и нажать кнопку «Я принимаю на себя риск!».

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

По окончании ввода следует нажать на кнопку OK.

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

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

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

Примечание: данная настройка осуществляется на уровне учетной записи пользователя. Вам придется повторить описанные действия для всех учетных записей пользователей.

4. Хотите ознакомиться с дополнительными советами?

Хотите узнать о других настройках и приемах работы с Linux-системами? На данном веб-сайте размещено большое количество подобных материалов.

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

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

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

Используйте VirtualBox

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

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

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

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

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

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

Чтобы ускорить загрузку Linux откройте файл /etc/default/grub от имени root. Измените значение GRUB_TIMEOUT = 10, на 3.

sudo vi /etc/default/grub

А затем обновите конфигурацию Grub. Вот:

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

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

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

Кроме того, вы можете посмотреть все сервисы списком, добавленные в автозагрузку:

systemctl list-unit-files --state=enabled

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

sudo systemctl disable имя_сервиса

3. Отключите приложения

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

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

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

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

Чтобы перестать тратить процессорное время на эту задачу кликните по иконке бутерброда, затем выберите пункт Параметры:

В открывшемся меню перейдите на вкладку Поиск и предпросмотр файлов, в разделе Миниатюры измените параметр из Всегда или Только локальные файлы на Никогда.

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

5. Используйте легкое окружение


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

Самая важная задача рабочего окружения - управлять запущенными графическими программами, и давать вам достаточно контроля над ними. Но такие окружения могут выполнять намного больше функций чем вам нужно. Вы можете попробовать XFCE, LXDE или какой либо оконный менеджер. Они ещё более лековесны и быстры. К самым популярным можно отнести Openbox, Fluxbox, i3wm, awesome и другие.

Кроме того, вы можете использовать легкий оконный менеджер вместо стандартного оконного менеджера окружения. Для этого, например, после установки для запуска оконного менеджера openbox наберите:

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

6. Ускорьте KDE

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

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

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

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

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

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

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

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

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

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

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

patch -p1 < patch-5.*-ck1

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

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

Не нужно использовать BIOS, для видеокарт Nvidia была создана утилита с помощью которой можно выполнить разгон видеокарты. Но чтобы включить поддержку разгона вам надо добавить одну строчку в файл /etc/X11/xorg.conf. В современных дистрибутивах такого файла обычно нет, но его можно создать выполнив:

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

Option "Coolbits" "5"

Или для разгона:

Option "Coolbits" "8"

Затем перезапустите Х сервер. Утилиту можно установить с помощью из FlatHub. В самой программе вы можете создать профиль разгона для видеокарты увеличив частоту памяти и графического ядра, а также регулировать обороты кулера.

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

Есть ещё один способ увеличить производительность видеокарты. Утилита Nvidia XSettings на вкладке PowerOptimizer позволяет не только менять частоту графического ядра, но и выбирать профиль производительности. Вы можете включить профиль Prefer maximum performance:

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

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

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

Вы можете настроить все это в своем BIOS. Для доступа к нему используйте клавиши F2 или Del. Возможно, вы найдете там опции для ускорения процессора, увеличения частоты оперативной памяти и т д. Но после разгона не забывайте протестировать стабильность процессора и следить за температурой с помощью консольной утилиты sensors или графической xsensors:

12. Отключите IPv6

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

Откройте настройки вашего подключения к сети, перейдите на вкладку IPv6 и выберите пункт Выключить:

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

Кроме того, можно отключить IPv6 на уровне всего дистрибутива. На этом сайте уже есть статья об этом: Как отключить IPv6 в Ubuntu.

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

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

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

sudo apt install prelink

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

sudo prelink --all

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

sudo vi /etc/default/prelink

Далее установите Preload:

sudo apt 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 включена по умолчанию.

16. Настройте работу подкачки

Не все системы рационально используют пространство подкачки на жестком диске. По умолчанию значение vm.swappiness установлено 60:

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

sudo sysctl -w vm.swappiness=10

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

Выводы

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

Читайте также: