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


© 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).

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

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

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

Linux разбух, но остался быстрым

К сожалению, общие процессы разбухания софта не обошли стороной и ядро 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 находится где-то около нуля.

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

Chrome 26 под Linux:

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

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

И так далее.

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

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

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

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

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


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

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

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

 

Источник

html5, hypercard, linux, windows, Windows Defender, медленные процессы, оптимизация, ретро, рефакторинг, терминал, тротлинг

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