Когда старый компьютер лучше нового

tjzieftxbswtzk5ucztni52f00m.png
© dilbert

Наметилась странная тенденция. Возникает впечатление, что с каждым годом компьютеры замедляются. Количество ядер растёт, софт лагает. Нативных программ всё меньше. Остальные работают через Electron или в браузере. Древний текстовый редактор в DOS’е реагировал на нажатия за 15–20 миллисекунд, а в современном Google Docs задержка 100–150 мс. То же самое с остальными. Вспомните, ведь IRC и аська летали практически в реальном времени. А сейчас монстры Skype и Viber на десктопе загружаются по десять секунд. Спасибо разработчикам Telegram, хоть там нормальные ребята, иначе бы вера в человечество совсем исчезла…

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


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

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

Например, в операционной системе Windows неожиданно медленно выполняется функция CloseHandle(), которая закрывает дескрипторы объектов. Из-за драйвера файловой системы Windows Defender закрытие файла происходит не мгновенно, а за 1–10+ мс. Поэтому общая производительность операций I/O в Windows заметно уступает Linux. И её невозможно увеличить при работающем Windows Defender. Если выделить CloseHandle() в отдельный поток, то практически любая программа под Windows станет работать быстрее на запись файлов. Разница в производительности особенно заметна у инсталляторов, систем контроля версий, архиваторов и других программ, которые активно работают с диском.

Или другой пример — консоли, которые тормозят всё остальное. Windows Command Prompt в Windows и Terminal.app в macOS исторически работают очень медленно при большом потоке входных данных. В Linux тоже есть проблемы. Пять лет назад случился известный баг, когда индикатор выполнения сильно затормаживал установку npm, потому что stdout/stderr блокировал основной поток выполнения. В результате программа начинает тормозить из-за того, что консоль не справляется.


Ещё один пример необычных «тормозов» в современном софте — тротлинг (дросселирование тактов), то есть уменьшение тактовой частоты процессора из-за перегрева или по другой причине. Ядра процессора живут своей жизнью, они постоянно повышают и понижают частоту по разным причинам. Причём в разных моделях CPU поведение отличается: например, Xeon не так легко запустить в турбо-режиме, как десктопный CPU. Температура CPU может повыситься совершенно неожиданным образом: например, в корпусе скопилась пыль и блокирует теплоотвод. В итоге вся система начинает сильно тормозить по «непонятной причине». В ноутбуках тротлинг может сработать для экономии заряда батареи. На серверах та же проблема из-за настроек питания процессора (ACPI C-State и P-State).

yxnht_rnoblckgsr4cdwpzxjjtm.png

Современные накопители NVMe абсурдно быстры: они примерно равняются по скорости оперативной памяти DDR2 (2003 год). Но операционная система не способна осуществлять операции ввода-вывода на такой скорости. Софт может работать на порядок быстрее, если начнёт выполнять операции I/O в обход ядра.

Производительность NVMe настолько высокая, что нет практически никакого смысла выполнять сжатие данных. 10–20 лет назад было наоборот, но сейчас ситуация сильно изменилась, так что любая компрессия впустую нагружает CPU. Мы просто без причины замедляем выполнение программ, а ведь эти библиотеки для сжатия типа zlib работают везде. Это тотальная неэффективность и ненужное замедление.

Всё это накапливается и накапливается. Мы здесь упомянули только несколько причин, почему софт может тормозить. В реальности этих причин тысячи. Никто не думает над оптимизацией. По факту софт становится всё жирнее и медленнее. Похоже, что сильнее всех страдает операционная система Windows.


К сожалению, общие процессы разбухания софта не обошли стороной и ядро Linux. За прошедшие десятилетия оно значительно увеличилось в объёме. Системные библиотеки стали значительно больше. Один только браузер загружает сотни мегабайт библиотек, аудио-и видеокодеки, библиотеки для векторной графики, движки Javascript, WASM, парсеры для всех веб-стандартов, принятых за 30 лет. Всё это требует огромного количества памяти, так что система начинает плохо себя вести, если памяти мало.

Например, последние ядра Linux с трудом удаётся запустить на процессоре 486DX (AMD 5×86) на тактовой частоте 100 МГц с 32 мегабайтами памяти! А ведь это очень мощная машина для 90-х годов, мало у кого тогда стояло аж 32 мегабайта памяти.


Если вспомнить, то в начале 90-х Linux буквально летал на машинах типа 386SX с 4 МБ оперативки.

Чтобы добиться такого результата на современном ядре, нужно провести большую работу по его очистке от лишних библиотек, поколдовать с настройками компиляции ядра, отказаться от графического интерфейса. Возможно, эту задачу проще решить на более оптимизированных *nix-системах, таких как NetBSD/OpenBSD.

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

Linux по своей архитектуре работает быстрее, чем Windows. Например, новые процессы в Windows не могут спауниться так же быстро, как в POSIX-системах. В Windows это занимает 10–30 мс, а в Linux новый процесс спаунится обычно через fork() + exec() и занимает несколько миллисекунд.

Это одна из главных причин, почему Windows воспринимается как более медленная система, особенно когда спаунятся тысячи новых процессов, что вполне нормально для шелл-скриптов с командами типа grep, sed и sort. Разница в 10 миллисекунд на тысяче процессов превращается в разницу 10 секунд для двух ОС (Linux/Windows) с одинаковой конфигурацией аппаратного обеспечения.

Но на старом железе современное ядро Linux всё равно будет тормозить. То же самое относится к последним версиям Windows и MacOS. Если на руках старый компьютер 386 или 486, то у нас нет выхода, кроме как установить старую операционную систему.


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

Взглянем с точки зрения пользователя. Если человек получает эстетическое удовольствие от определённой операционной системы на конкретном компьютере, зачем ему делать апгрейд? Например, ему нравится Windows 7, но он испытывает отвращение к интерфейсу Windows 10. Такое бывает. И зачем ломать себя? Ради чего, ради последних обновлений безопасности? Может быть, овчинка не стоит выделки.

Иногда при обновлении ОС просто пропадают нужные программы. Например, в старых версиях MacOS была программа под названием HyperCard, это визуальная среда программирования, позволяющая создавать собственные приложения гипермедиа. Её можно назвать «организатором информации», который собирает воедино тексты, картинки, звуки, анимацию в удобном интерактивном виде.


Последней операционкой с HyperCard стала Mac OS 9, потом приложение просто исчезло. Но есть пользователи, которые привыкли к этому формату и накопили какой-то объём полезной информации в виде таких «гиперкарт». Естественно, они несколько раз подумают перед апгрейдом.

Наверное, главная проблема компьютеров со старым софтом — выход в интернет. Последние версии браузеров там поставить невозможно, а старые браузеры не поддерживают современные стандарты HTML5, так что многие сайты будут отображаться некорректно. В тесте HTML5 для десктопных браузеров видно, что они начали понемногу поддерживать эти стандарты с 2010–2011 года. То есть у предыдущих версий поддержка HTML5 находится где-то около нуля.

5enpfn8-4h7buzz9bqst_9vpjpa.png

Вот как выглядит Хабр в браузере Internet Explorer 10 под Windows 7.

uk4veojm6x2adw0nt8ofxo73d7w.png

Chrome 26 под Linux:

koduvydqcsgiodkoiaq48whuon8.png

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

iyl8qqiwau36jdvppjc3zf-t9sm.png

Если не открывается Хабр, получать контент по RSS (есть и онлайновые читалки, и офлайновые клиенты).

y7rpy7arcprykdsqsrrudhfmdeg.png

И так далее.

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

Очень многие люди привыкли к старым компьютерам и просто не хотят изучать новую систему. Даже если дать им ноутбук за $1000, это бесполезно: они будут использовать его точно так же, как использовали старый компьютер двадцатилетней давности. И даже попросят поставить привычные старые программы. Так какой смысл?

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

Ещё старый компьютер хорошо подходит для обучающих целей, потому что ребёнок не сможет запустить на нём современные игры. Правда, и много полезных инструментов он тоже не сможет загрузить. С другой стороны, сейчас всё выпускается и в мобильном варианте, даже программы обучения логике и программированию для самых маленьких: Code Karts, CodeSpark Academy, Kodable (платная), ScratchJr, Tynker и многие другие. Они обычно работают и в браузере, и в виде мобильного приложения. Тут главное — воля и желание учиться, а количеством ядер пусть меряются геймеры.

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


На правах рекламы


Воплощайте любые идеи и проекты с помощью наших VDS с мгновенной активацией на Linux или Windows. Сервер готов к работе через минуту после оплаты!

Присоединяйтесь к нашему чату в Telegram.

8p3vz47nluspfyc0axlkx88gdua.png

© Habrahabr.ru