ValdikSS10th July 2021 at 8:37pm

This article in English / Английская версия заметки

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

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

Если вы ранее пробовали Linux и он сильно тормозил — не волнуйтесь, описанный способ настройки значительно ускоряет работу этой ОС при малом количестве оперативной памяти и с обычным диском (без SSD).

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

  • 64-битный процессор — более слабые 32-битные не подойдут для нынешних веб-сайтов не в силу своей архитектуры, а из-за производительности. 64-битные процессоры массово появились в 2006-2007 годах.
  • 1 ГБ RAM — абсолютный минимум для терпеливых. 2 ГБ и более значительно расширят возможности многозадачности и повысят общую скорость работы, поэтому настоятельно рекомендуются.

Если ваш компьютер старше моего (например, обладает 32-битным процессором), боюсь, данная статья вам не подойдёт. Для таких машин требуется особый подход в выборе ОС и программ, что выходит за рамки данной заметки. Однако описанные настройки и аппаратные апгрейды применимы и к ним.

ValdikSS9th July 2021 at 2:33pm

Типичный офисный компьютер тех времён:

  • Материнская плата Gigabyte GA-945GCM-S2L (ранний сокет LGA775, встроенное видеоядро GMA950, сентябрь 2007)
  • 2-ядерный 64-битный процессор Intel® Core™2 Duo E4600 (2 ядра, 2.4 ГГц, конец 2007)
  • 2 ГБ оперативной памяти (DDR2 667 МГц, одним модулем)
  • Жесткий диск 160 ГБ Samsung HD161HJ (SATA II, июнь 2007)
  • Без дискретной видеокарты

Результат работы тестового компьютера после всех настроек

Одновременно запущены:

  • Firefox с 37 активными вкладками (все данные в RAM, без выгрузки, всё честно)
  • Discord
  • Skype
  • LibreOffice с открытым документом
  • Два PDF-файла (размером 14 и 47 мегабайт)
…и всё это при 2 ГБ оперативной памяти. Впечатляет?


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

ValdikSS14th July 2021 at 11:10pm

Если вам не интересны технические детали, но есть желание попробовать самостоятельно и оценить производительность, воспользуйтесь LiveCD с уже настроенным дистрибутивом Linux Mint 20.2 "Uma" Xfce 64-bit:

linuxmint-20.2-xfce-oldpc-le9-14.07.2021-64bit.iso (🧲 BitTorrent Magnet)

Скачайте, создайте загрузочную флешку любой программой (рекомендую Rosa ImageWriter), загрузитесь в ОС.

Ошибка в ISO 08.08.2021

В версии ISO 08.08.2021 была допущена некритичная ошибка с сервисом systemd, приводящая к ошибке запуска systemd-sysctl.service.

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

sudo sed -i '2aDefaultDependencies=no' /etc/systemd/system/le9-lowram-setup.service

ISO 14.08.2021 содержит исправление ошибки (и это единственное изменение в этой версии).

На некоторых старых материнских платах того времени начальные этапы USB-загрузки осуществляется медленно, на скоростях USB 1.1. Будьте терпеливы.
Для снижения потребления памяти в Firefox установите опцию Максимальное число процессов контента = 2 (Content process limit = 2) в настройках производительности браузера.

Даннная «сборка» не является тестовой/экспериментальной и подходит для ежедневного использования. Она отличается от обычного Linux Mint тремя вещами:

  1. Задействовано ядро XanMod с интегрированным патчем le9, кардинально повышающим производительность при недостатке памяти.
  2. Настроено агрессивное сжатие памяти zram вместо физического swap («файл подкачки» в терминах Windows). При недостатке памяти данные сжимаются, а не вытесняются на (медленный) HDD. Позволяет использовать до 150% больше оперативной памяти, чем её есть физически: 2 ГБ RAM ощущаются как 5 ГБ.
  3. Отключены защиты от аппаратных уязвимостей CPU Spectre и Meltdown: повышает скорость работы программ ценой уменьшения безопасности трудно эксплуатируемых проблем.

ValdikSS9th July 2021 at 12:39am

Старые компьютеры объединяют общие особенности: медленная по современным меркам память, небольшое её количество, медленный процессор, медленная встроенная графика (если дискретная отсутствует).

Эти особенности необходимо учитывать при выборе ОС: графический интерфейс должен быть легковесным, композитинг должен быть лёгким и совместимым со старыми видеокартами по технологиям (видео GMA 500 тестового компьютера поддерживает только OpenGL 1.4).
Также важна общая концепция ОС: обильное использование альтернативного способа установки приложений Snap в Ubuntu приводит к дублированию библиотек и повышенному потреблению памяти как самими программами (из-за нескольких наборов библиотек в оперативной памяти), так и демонами для их обслуживания.
Последний немаловажный фактор: тулкит, на котором написано графическое окружение. Запуск GTK3-браузера в GTK3-окружении потребует меньше оперативной памяти, чем при GTK2 или Qt-окружении, из-за одинаковых библиотек. При малом количестве памяти это играет роль.

Мой выбор пал на лёгкие графические интерфейсы XFCE и LXDE.

Первый предоставляет привычное любому пользователю компьютера окружение и набор программ, обладает обширным количеством настроек окружения, системы и компонентов компьютера.
Второй менее кастомизируем, обладает более скудными возможностями по настройке периферии, но и потребляет меньше оперативной памяти: ≈300 МБ XFCE (Mint 20.2) против ≈180 МБ у LXDE (Lubuntu 18.04).


Рекомендованные дистрибутивы

Так как мы будем использовать компьютер для работы в интернете, нам необходима актуальная операционная система, получающая обновления ПО и безопасности. Существует бесчисленное множество специализированных дистрибутивов «для устаревшего железа», но они либо построены на нестандартной пакетной базе и не обновляются авторами своевременно (а то и вовсе), либо полагаются на самый легковесный набор программ, в частности альтернативные браузеры, которые не способны полноценно работать со сложными и постоянно меняющимися сайтами.
Поэтому наш выбор — полноценный «обычный» дистрибутив Linux.

Для компьютеров с 2 ГБ и более оперативной памяти лучшим выбором считаю Linux Mint 20.2 "Uma" - Xfce (64-bit): красивый и вылизанный интерфейс, отличный встроенный софт для управления системой, хороший набор ПО по умолчанию, качественная русификация и понятное приветственное окно идеально подойдут не знакомым с Linux пользователям. Именно она предлагается в настроенном виде к скачиванию выше.

Компьютерам с 1-1.5 ГБ памяти рекомендована Lubuntu 18.04: она потребляет меньше памяти ценой меньшей визуальной привлекательности, скудных настроек системы и упрощенного набора ПО (но браузер здесь полноценный). Имеется 32-битный вариант для совсем старых процессоров, однако такая версия не позволит установить программы, присутствующие только в 64-битном виде, например Skype или Discord.
Хороший не экстремальный вариант для слабых компьютеров из «полноценных» дистрибутивов.

Дистрибутив необходимо сконфигурировать под слабые ПК: как минимум, настроить и включить сжатие памяти zram и улучшить работу при её недостатке.



Если вы ранее интересовались запуском Linux на старом компьютере, вы могли сталкиваться со специализированными ОС, такими как Puppy Linux, Tiny Core, Slax и другими. Эти дистрибутивы не слишком подходят для повседневного бытового применения человеку, не знакомому с Linux: как правило, их использование сопряжено с проблемами работы части оборудования (например, на некоторых не настроить принтер), установки проприетарных программ (не везде будет Skype, Zoom).

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

ValdikSS8th July 2021 at 3:20pm

Ядро Linux плохо работает в условиях недостатка оперативной памяти на десктопных компьютерах.
Когда запущенные программы задействуют ОЗУ почти целиком, нередко начинается состояние под смешным названием пробуксовка:

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

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

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

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

Пользователи ищут исправление зависаниям по меньшей мере с 2008 года (bug 12309). Эта проблема настолько распространена и очевидна, что про неё есть статья на lurkmore, а её обсуждение из года в год поднимается среди профессионалов.
Разработчики внедряют разные технологии в новых версиях ядра, направленные на устранение того или иного аспекта появления проблемы, но на 2021 год этот баг всё ещё не исправлен полностью.


Патч le9

За эти годы было предложено бесчисленное количество методов борьбы с thrashing. Патч под названием le9 — еще одна модификация, нацеленная на исправление проблемы работы Linux при почти полном заполнении оперативной памяти. Он устанавливает мягкую защиту от вытеснения программного кода и библиотек из оперативной памяти, что положительно сказывается на работе системы.

Патч le9, по субъективным ощущениям, является наиболее эффективной мерой и, в отличие от других методов борьбы с проблемой, работает не только в условиях почти полного заполнения памяти (при большом количестве ОЗУ на современных ПК), но и при постоянном её недостатке в старых компьютерах (1-2 ГБ).

На текущий момент le9 представлен в виде модификации для исходного кода Linux и отсутствует в стандартной поставке ядра. Чтобы его задействовать, необходимо устанавить стороннее ядро, где этот патч применён. На июль 2021 года, таких ядер два: XanMod и pf-kernel (с чуточку модифицированной версией le9).

В «сборке» mint настроено выделение 25% оперативной памяти под кеш программ, но не более 512 МиБ.
Размер кеша регулируется настройкой sysctl vm.clean_low_kbytes.

Команда
sudo sysctl vm.clean_low_kbytes=200000
установит размер кеша в 200 мегабайт.


Другие варианты решения проблемы

Различные утилиты для предотвращения длительного или полного зависания системы представлены на странице проекта nohang.
Они деляется на два типа:

  • Программы, способствующие скорому завершению процессов, активно потребляющих память (OOM Killer). Не подходят для компьютеров с 1-2 ГБ ОЗУ, в которых памяти, с точки зрения этих программ, никогда не хватает.
  • Программы, ускоряющие работу системы при активном использовании «подкачки». Часть из них не даёт коду и библиотекам программ выгружаться из памяти, часть — уменьшает размер оперативной памяти, доступной пользовательским программам, отдавая его системным процессам.

Также на современных компьютерах с большим количеством памяти и SSD имеет смысл увеличить объем данных, выгружаемых единовременно в подкачку:

vm.swappiness=100   ← не считать выгрузку файлового кеша приоритетной задачей

vm.watermark_scale_factor=200   ← увеличить объем выгружаемых данных

ValdikSS8th July 2021 at 6:35pm

Чтение с HDD и запись произвольных данных случайным (нелинейным) образом на него — очень медленный процесс, из-за чего использование «подкачки» у большинства ассоциируется с тормозами системы.

Сжатие оперативной памяти, несмотря на создание нагрузки на процессор, работает минимум на два порядка быстрее обращений к диску, ускоряя систему с состояния «еле ворочается» до «можно работать». Оно используется в Windows 10 в «лёгком» варианте (сжимается ограниченное и малое количество данных).

Для умеренно комфортной работы в условиях постоянного недостатка памяти и медленного жесткого диска придётся по-максимум исключить использование подкачки на физическом диске и прибегнуть к экстремальной настройке: использование 150% оперативной памяти в качестве сжатой.
Противоречия здесь нет: память начинает сжиматься по мере использования, достигая 2.5-3х кратного коэффициента сжатия.

В Debian, Ubuntu и родственных дистрибутивах zram настраивается пакетом zram-tools, подправить настройки которого можно в файле /etc/default/zramswap.

В «сборке» mint задействована обновлённая версия пакета из репозиториев Ubuntu 21.04.

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

ValdikSS8th July 2021 at 3:54pm

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

Наибольший приоритет следует отдать установке большего количества оперативной памяти. Если у вас всего 1 ГБ, стоит это сделать как можно скорее. Модуль на 2 ГБ DDR2 стоит 250-500 рублей ($3.3-$6.7), а разница в производительности между 1 ГБ и 2 ГБ — небо и земля. На подавляющее большинство компьютеров ≈2007 года можно установить 4 ГБ или 8 ГБ памяти (в зависимости от количества слотов под ОЗУ), что необходимо для оптимальной работы с требовательными программами и серьёзной многозадачности.
Двухканальный режим памяти повышает и пропускную способность памяти, и производительность встроенного видео при отсутствии дискретной видеокарты. Лучше установить два модуля памяти по 2 ГБ, чем один на 4 ГБ.

Второй по приоритетности — процессор. Так как мы используем сжатие памяти, чем быстрее процессор, тем быстрее работает система. Приличный двухъядерник Intel E8500 обойдётся в 300-700 рублей ($4-$9.5) на барахолке (в материнскую плату тестового компьютера нельзя установить 4 ядра).

Третий — SSD. Быстрый диск значительно ускорит первый запуск программ и уменьшит время переключения между ними при заполненной памяти, но он не является необходимым компонентом при наличии 4+ ГБ оперативной памяти и правильной настройке ОС.
Наиболее дорогой компонент для апгрейда.


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