Содержание

5.2. Браузерные тесты.

Я уже говорил, что с производительностью Эльбруса при работе с интерпретируемыми языками дела обстоят далеко не так хорошо, как с C кодом, и тем более хорошо вылизанным C кодом с интринсиками под E2K (или, хотя бы, интринсиками под Intel). Я думаю, вы догадываетесь, какой интерпретируемый язык имеет наибольший вес при работе с браузером. Да, это JavaScript. Даже модель документа DOM, используемая при работе браузера с веб-страницами, также полагается на обработку при помощи JavaScript. JavaScript в браузере едва ли не вообще везде, где только можно.

Версии браузера Firefox в Альт Линукс 10 и Эльбрус ОС (OSL) 7.1.

Скриншот 115. Версии браузера Firefox в Альт Линукс 10 и Эльбрус ОС (OSL) 7.1.

В Эльбрус ОС (OSL) 6.0 и Альт Линукс 10 используется Firefox ESR версии 52.9.0, тогда как в OSL 7.1 используется уже Firefox ESR 68.12.0.

Нюансы со стабильностью работы Firefox ESR 68.12.0 (ещё ведётся портирование).

Скриншот 116. Нюансы со стабильностью работы Firefox ESR 68.12.0 (ещё ведётся портирование).

Последняя версия Firefox из OSL работает ещё не особо стабильно, она отлаживается и доводится до стабильного вида, но на данный момент иногда случаются падения вкладок при обработке страниц (например, при поиске в Google, что вы можете видеть выше на скриншоте).

Доступные расширения для установки в Firefox 52.9.0 в Альт Линукс 10 для Эльбрус 8С.

Скриншот 117. Доступные расширения для установки в Firefox 52.9.0 в Альт Линукс 10 для Эльбрус 8С.

У Firefox версии 52.9.0 со стабильностью я не заметил проблем, но есть нюанс: практически все новые расширения, а также новые версии старых расширений, не работают со столь старым браузером. Причина в том, что Mozilla в своём браузере Firefox, начиная с версии 53, инициировала переход от расширений типа XUL/XPCOM к расширениям типа WebExtensions, которые были введены в Firefox с версий 46 и 47. Тогда поддержка WebExtensions требовала ручную активацию. В Firefox версии 60 уже оставили лишь поддержку расширения WebExtensions. На 1-е мая 2020-го года актуальна версия Firefox 99.0.1 (если мы говорим не о ESR версии с расширенным сроком поддержки). Уже порядком давно все расширения для Firefox перешли на модель WebExtensions и вместе с тем репозиторий со старыми расширениями стал недоступен. А как быть тогда со старыми версиями Firefox, которые лучше всего работали со старыми расширениями?

Доступные для установи расширения для Firefox 52.9.0 при помощи Classic Add-ons Archive.

Скриншот 118. Доступные для установи расширения для Firefox 52.9.0 при помощи Classic Add-ons Archive.

Ну, в общем-то, решение есть. Для начала, вам нужно разрешить установку неподписанных разрешений. Далее устанавливаете расширение Classic Add-ons Archive, а оттуда уже ставите себе нужные расширения.

Установленные мной расширения в Firefox 52.9.0 при помощи Classic Add-ons Archive.

Скриншот 119. Установленные мной расширения в Firefox 52.9.0 при помощи Classic Add-ons Archive.

Я так себе поставил Ublock Origin, GreaseMonkey, h264ify, Proxy Switcher и Redirector. Как видите, решение рабочее.

Ну, ладно, проблем с расширениями, по идее, нет ни с одной из версий браузера Firefox, будь то 52.9.0 из Альт Линукс 10 и Эльбрус ОС 6.0, или же 68.12.0 из Эльбрус ОС 7.1. Но что с производительностью?

Разумеется, все тесты я проводил с отключенными расширениями, так что будьте уверены, никакого влияния они не оказывают. И чтобы влияния не оказывали данные в браузере, я предварительно очистил все данные в нём, и на всякий случай ещё проводил тест в приватном окне (инкогнито).

В процессе тестирования вам могут выдаваться предупреждения наподобие «Веб-страница замедляет ваш браузер» или «сценарий не отвечает». Для первого я нашёл решение на форуме поддержки Mozilla, а для второго я нашёл в руководстве от Mozilla (только я вместо 20 выставил 1000). Если сделаете так, у вас лишние сообщения вылезать не будут.

Эльбрус 8С. Тест Octane 2.0 в Firefox 52.9.0 (Альт Линукс 10) и Firefox 68.12.0 (OSL 7.1).

Скриншот 120. Эльбрус 8С. Тест Octane 2.0 в Firefox 52.9.0 (Альт Линукс 10) и Firefox 68.12.0 (OSL 7.1).

Эльбрус 8С. Сравнение результатов теста в Octane 2.0. За 100% взят результат с 52.9.0 в Альт 10.

Гистограмма 108. Эльбрус 8С. Сравнение результатов теста в Octane 2.0. За 100% взят результат с 52.9.0 в Альт 10.

Сперва я тест провёл неправильно, не в приватном окне, и потому у меня результаты разнились с версиями браузера 52.9.10 и 68.12.0 в моей публикации в Telegram. Но затем я провёл перетест и разница в результатах с разными версиями браузера у меня вышла в пределах погрешности. На скриншоте выше видно, что в одних тестах в рамках Octane быстрее старая версия браузера, а в других – новая, но в общий результат +- одинаковый.

Попытка провести тест JetStream.

Скриншот 121. Попытка провести тест JetStream.

Тест JetStream я вам не покажу, т.к. на Эльбрусе мне его удалось провести только с последней версией Firefox на момент теста (97.0.1) для x86 платформы при помощи трансляции через RTC 4.1. Со старыми версиями на Эльбрусе не тест мне провести не удалось.

Эльбрус 8С. Тест SunSpider 1.0.2 в Firefox 52.9.0 (Альт Линукс 10) и Firefox 68.12.0 (OSL 7.1).

Скриншот 122. Эльбрус 8С. Тест SunSpider 1.0.2 в Firefox 52.9.0 (Альт Линукс 10) и Firefox 68.12.0 (OSL 7.1).

Эльбрус 8С. Сравнение результатов теста в SunSpider. За 100% взят результат с 52.9.0 в Альт 10.

Гистограмма 109. Эльбрус 8С. Сравнение результатов теста в SunSpider. За 100% взят результат с 52.9.0 в Альт 10.

В SunSpider результат – это время, затраченное на тест. Чем оно меньше, тем лучше. Тут я тоже значимой разницы не увидел, идём дальше.

Эльбрус 8С. Тест Speedometer 2.0 в Firefox 52.9.0 (Альт Линукс 10) и Firefox 68.12.0 (OSL 7.1).

Скриншот 123. Эльбрус 8С. Тест Speedometer 2.0 в Firefox 52.9.0 (Альт Линукс 10) и Firefox 68.12.0 (OSL 7.1).

Эльбрус 8С. Сравнение результатов теста в Speedometer в Firefox 52.9.0 (Alt 10) и 68.12.0 (OSL 7.1).

Гистограмма 110. Эльбрус 8С. Сравнение результатов теста в Speedometer в Firefox 52.9.0 (Alt 10) и 68.12.0 (OSL 7.1).

Вот в Speedometer разница видна, и она афигеть какая значимая. С новой версией Firefox, которая поставляется с OSL 7.1, результат более чем в 2 раза выше. Прирост просто огромный. Вот тут уже видна значительная разница в пользу более свежей версии браузера Firefox на Эльбрус 8С.

Эльбрус 8С. Тест BaseMark 3.0 в Firefox 52.9.0 (Альт Линукс 10) и Firefox 68.12.0 (OSL 7.1).

Скриншот 124. Эльбрус 8С. Тест BaseMark 3.0 в Firefox 52.9.0 (Альт Линукс 10) и Firefox 68.12.0 (OSL 7.1).

Эльбрус 8С. Сравнение результатов теста в BaseMark. За 100% взят результат с 52.9.0 в Альт 10.

Гистограмма 111. Эльбрус 8С. Сравнение результатов теста в BaseMark. За 100% взят результат с 52.9.0 в Альт 10.

И в BaseMark мы также видим значительную разницу в пользу более свежей версии браузера Firefox (68.12.0). Видно, что с душой проводилась оптимизация Firefox, и в ряде тестов разработчикам удалось выжать куда больше скорости. Разница составила аж 34% в пользу 68.12.0. Я отчётливо вижу, что разработчики в МЦСТ с релизом каждой новой версии ПО прикладывают недюжинные усилия для более отточенной оптимизации этого самого ПО под Эльбрус. Это видно даже на примере браузера Firefox.

Эльбрус 8С. Тест Antutu HTML5 в Firefox 52.9.0 (Альт Линукс 10) и Firefox 68.12.0 (OSL 7.1).

Скриншот 125. Эльбрус 8С. Тест Antutu HTML5 в Firefox 52.9.0 (Альт Линукс 10) и Firefox 68.12.0 (OSL 7.1).

Эльбрус 8С. Сравнение результатов в Antutu HTML5 test. За 100% взят результат с 52.9.0 в Альт 10.

Гистограмма 112. Эльбрус 8С. Сравнение результатов в Antutu HTML5 test. За 100% взят результат с 52.9.0 в Альт 10.

В Antutu же, как и в случае с первыми браузерными тестами, разница не велика, считайте, одно и то же.

Ладно, к выводам по нативному браузеру.

Эльбрус 8С. Средняя разница по результатам в тестах. За 100% взят результат с 52.9.0 в Альт 10.

Гистограмма 113. Эльбрус 8С. Средняя разница по результатам в тестах. За 100% взят результат с 52.9.0 в Альт 10.

В среднем разница по результатам между всеми тестами составила 31% в пользу более новой версии Firefox. Более простыми словами: выше на гистограмме вы видите среднее значение по процентам (относительно 52.9.0), которые вы видели ранее. В одних тестах разница была минимальна и в целом её можно списать на погрешность, но в других значительная (34% и 126%). В среднем же новая версия на 31% быстрее, чем старая. Респект МЦСТ за то, какие усилия они приложили для портирования Firefox 68.12.0. Они это сделали грамотно, и смогли выжать больше производительности. Но на момент написания статьи, Firefox 68.12.0 доступен ещё только в экспериментальном виде, и это выражается и в падениях на ряде страниц. Со временем его стабилизируют и будет красота, в этом я не сомневаюсь.

Далее интересно сравнить, насколько медленнее будет x86 версия Firefox при помощи RTC. Я сравнивать буду только новую для Эльбруса версию 68.12.0, т.к., очевидно, старая версия уже давно не актуальна и не поддерживает новые технологии. Даже новая веб-версия Telegram не работает в браузере, и единственный выход – использовать Legacy версию. Если вам не по душе веб-версия в Эльбрус ОС, можете воспользоваться Telegram Desktop при помощи транслятора RTC (я так делал, всё ок). В Альт 10 нативный Telegram Desktop под E2K доступен прямо из репозитория.

Результаты тестов в Firefox 68.12.0 в RTC на Эльбрус 8С.

Скриншот 126. Результаты тестов в Firefox 68.12.0 в RTC на Эльбрус 8С.

Эльбрус 8С. Firefox 68.12.0 в нативе на OSL 7.1 против Firefox.68.12.0 для x86-64 (Ubuntu 20.04.3).

Гистограмма 114. Эльбрус 8С. Firefox 68.12.0 в нативе на OSL 7.1 против Firefox.68.12.0 для x86-64 (Ubuntu 20.04.3).

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

Как видите, в некоторых тестах получается так, что с RTC скорость выше. Разница не кардинальная, это 11% в Octane и 14% в Sunspider, но она есть. В других же тестах (Speedometer и BaseMark), Firefox медленнее раза в 1.5 с RTC. А в тесте Antutu HTML5 разницы практически нет.

Но почему мы видим прирост в 11% в Octane и 14% в SunSpider при использовании трансляции RTC? Может, Firefox просто плохо адаптировали? Нет, как оказалось, дело в том, что транслятор RTC способен программно имитировать наличие предсказателя переходов внутри процессора. Транслятор пытается, исполняя программу, на лету предсказывать, когда будут переходы между функциями, и он заранее подгружает данные для исполнения в нужный момент. Вот почему, когда в следующей версии архитектуры Эльбруса (E2Kv7) появится предсказатель переходов, он сможет дать огромный прирост по производительности при работе с интерпретируемыми языками, такими как Python, JavaScript, Lua, PHP и т.д.

Эльбрус 8С. Firefox 68.12.0 в нативе на OSL 7.1 против Firefox.68.12.0 для x86-64 (Ubuntu 20.04.3).

Гистограмма 115. Эльбрус 8С. Firefox 68.12.0 в нативе на OSL 7.1 против Firefox.68.12.0 для x86-64 (Ubuntu 20.04.3).

Вывел на гистограмме среднюю разницу по всем тестам в Firefox 68.12.0 в нативе и при трансляции x86 версии через RTC. В среднем выходит так, что нативный Firefox 68.12.0 лучше транслированного с x86 платформы.

Но что, если взять более свежую версию Firefox?

Результаты тестов в Firefox 97.0.1 в RTC на Эльбрус 8С.

Скриншот 127. Результаты тестов в Firefox 97.0.1 в RTC на Эльбрус 8С.

Эльбрус 8С. Firefox 68.12.0 в нативе на OSL 7.1 против Firefox 97.0.1 для x86-64 (Ubuntu 20.04.3).

Гистограмма 116. Эльбрус 8С. Firefox 68.12.0 в нативе на OSL 7.1 против Firefox 97.0.1 для x86-64 (Ubuntu 20.04.3).

Здесь также не будем долго разглядывать каждый результат. Видно, что в случае с двумя тестами результат в RTC выше, чем в нативе (вероятно, из-за программной имитации того самого предсказателя переходов или предсказателя ветвлений, что, по сути, одно и то же).

Эльбрус 8С. Firefox 68.12.0 в нативе на OSL 7.1 против Firefox 97.0.1 для x86-64 (Ubuntu 20.04.3).

Гистограмма 117. Эльбрус 8С. Firefox 68.12.0 в нативе на OSL 7.1 против Firefox 97.0.1 для x86-64 (Ubuntu 20.04.3).

Если смотреть на картину в целом, транслированная свежая версия Firefox в RTC не сильно медленнее, чем нативная старая, всего на 3%, но с точки зрения поддержки новых технологий, конечно, лучше новая с RTC.

Результаты теста JetStream 2.0 на Эльбрус 8С с Firefox 97.0.1 (x86) через RTC 4.1 (Ubuntu 20.04.3).

Скриншот 128. Результаты теста JetStream 2.0 на Эльбрус 8С с Firefox 97.0.1 (x86) через RTC 4.1 (Ubuntu 20.04.3).

И, что немаловажно, через RTC с последней версией браузера Firefox успешно проводятся все тесты, в том числе и JetStream 2.0, с которым были сложности.

Далее следует вопрос: а что же там с Chromium?

Запуск Chrome 98.0.4758.102 через RTC со стандартными опциями.

Скриншот 129. Запуск Chrome 98.0.4758.102 через RTC со стандартными опциями.

Я установил Chrome через Lintel в Ubuntu 20.04.3, и он там заработал. После теста Firefox я попробовал его запустить через RTC со стандартными опциями, и столкнулся с ошибкой. Дело в том, что Chrome через RTC не будет работать со своей песочницей, так что запустить его можно, но только с опцией --no-sandbox.

Запуск Chrome 98.0.4758.102 через RTC с опцией --no-sandbox.

Скриншот 130. Запуск Chrome 98.0.4758.102 через RTC с опцией --no-sandbox.

С опцией --no-sandbox Chrome успешно запускается. Версия Chrome, которую я установил – 98.0.4758.102. Есть ли с ней нюансы?

Попытка тестирования JetStream 2.0 в Chrome 98.0.4758.102 (x86 через RTC 4.1).

Скриншот 131. Попытка тестирования JetStream 2.0 в Chrome 98.0.4758.102 (x86 через RTC 4.1).

Да, к сожалению, без песочницы Chrome работает нестабильно, и он падает в ряде случаев (например, при тестировании JetStream).

Попытка тестирования BaseMark 3.0 в Chrome 98.0.4758.102 (x86 через RTC 4.1).

Скриншот 132. Попытка тестирования BaseMark 3.0 в Chrome 98.0.4758.102 (x86 через RTC 4.1).

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

Результат тестирования Octane 2.0 на Эльбрус 8С с Chrome Chrome 98.0.4758.102 (x86 через RTC 4.1).

Скриншот 133. Результат тестирования Octane 2.0 на Эльбрус 8С с Chrome Chrome 98.0.4758.102 (x86 через RTC 4.1).

Если сравнивать последнюю версию Chrome для x86 с последней версией Firefox для E2K, в тех тестах, которые проводятся успешно, Chrome в ряде тестов быстрее на 16-18%. Т.е., если портировать Chrome под E2K, производительность в браузере может вырасти на все 30%, 40% или даже 50%. И, если судить по тому, что я краем уха где-то что-то услышал, работы над портированием Chromium под E2K уже ведутся, так что через некоторое время (примерно через полгода) браузер на Эльбрусе станет сильно шустрее.

Версия Firefox ESR 68.12.0, доступная для загрузки с сервера Mozilla.

Скриншот 134. Версия Firefox ESR 68.12.0, доступная для загрузки с сервера Mozilla.

Итак, глядя на результаты тестов, я решил, что в общем и целом для работы в интернете лучше всего подойдёт нативный Firefox 68.12.0. И, для того, чтобы провести более-менее релевантное сравнение, я скачал на свой ноутбук Xiaomi ту же версию браузера с архива Mozilla. В общем-то, ту же версию я использовал для теста с помощью RTC 4.1 на Эльбрус 8С ранее.

Результаты тестов в Firefox ESR 68.12.0 на ноутбуке Xiaomi с Core i7 8550U и Ubuntu 20.04.3.

Скриншот 135. Результаты тестов в Firefox ESR 68.12.0 на ноутбуке Xiaomi с Core i7 8550U и Ubuntu 20.04.3.

Не знаю, почему, но на Xiaomi мне тест JetStream удалось провести даже с версией Firefox 68.12.0, тогда как на Эльбрусе мне этого сделать не удалось. Забегая наперёд, скажу, что на Raspberry Pi 4 с Raspberry Pi OS 64-bit и Chromium версий 95 и 98 мне также не удалось провести этот тест (спустя время после его запуска моя малина просто сама перезагружалась).

Результаты тестов в Firefox 97.0.1 на ноутбуке Xiaomi с Core i7 8550U и Ubuntu 20.04.3.

Скриншот 136. Результаты тестов в Firefox 97.0.1 на ноутбуке Xiaomi с Core i7 8550U и Ubuntu 20.04.3.

Также я решил провести тот же тест у себя на ноутбуке с последней версией Firefox на момент теста (97.0.1), с той же, с которой тестировал и Эльбрус 8С в режиме трансляции при помощи RTC 4.1.

И, если присмотреться на скриншот с BaseMark с Xiaomi, видно, что даже на x86 машинах с последней версией Firefox бывают проблемы с запуском некоторых тестов. Ну, с этим ничего не поделать, браузерные тесты, видимо, будет иметь свои нюансы с каждым отдельно взятым браузером и с его конкретной версией. Ладно, что по разнице?

Разница в тестах в браузере на Эльбрус 8С (E2K FF 68.12.0) и i7 8550U (x86 FF 68.12.0 и 97.0.1).

Гистограмма 118. Разница в тестах в браузере на Эльбрус 8С (E2K FF 68.12.0) и i7 8550U (x86 FF 68.12.0 и 97.0.1).

Я решил не грузить вас цифрами по отдельности, а показать именно разницу между 8С и моим ноутбуком в браузерных тестах. Как видите, из-за ошибки в тесте в 97-й версии браузера Firefox на моём ноутбуке, результат вышел почти в 1.5 раза ниже, чем на Эльбрус 8С с Firefox 68.12.0 (нативная версия для E2K из OSL 7.1). Да, бывает и так, что в некоторых тестах Firefox, даже самый свежий из стальных версий, на x86 машинах глючит и начинает работать медленнее, чем на Эльбрус 8С. В остальном же разница в пользу моего ноутбука выходит от 4 до 15 раз. Что тут добавить? Я предупреждал, что с интерпретируемыми языками работа на Эльбрусе ведётся намного медленнее, чем с компилируемыми. Но в любом случае выражаю почтение разработчикам из МЦСТ, которые продолжают его оптимизировать под 8С.

Разница в тестах в браузере на Эльбрус 8С (E2K FF 68.12.0) и i7 8550U (x86 FF 68.12.0 и 97.0.1).

Гистограмма 119. Разница в тестах в браузере на Эльбрус 8С (E2K FF 68.12.0) и i7 8550U (x86 FF 68.12.0 и 97.0.1).

В среднем же получается так, что в браузерных тестах Core i7 8550U на 25 Ватт (или 20 Ватт со снижением напряжения на 100 мВ) в моём ноутбуке Xiaomi в 10 раз быстрее, чем Эльбрус 8С с частотой 1.3 ГГц.

А с чем же тогда сопоставим Эльбрус 8С по части браузера?

Видео 5. Browser test - Elbrus 8C 1.3 GHz (Firefox 68.12.0) vs Raspberry Pi 4 1.8 GHz (Chromium 95.0.4638.78).

Я решил, что сравнить с малиной Эльбрус лучше просто в повседневе. Одни страницы в браузере до 2 раз грузит быстрее Эльбрус, другие быстрее грузит малина, но в целом скорость в браузере у них +- равна. На малине я пользовал Chromium 95, но с версией 98, которая вышла позже, разницы особо не будет (уже проверил). Учитывая то, что в браузере в основном мы имеем дело с обработкой последовательного однопоточного JavaScript кода, а не параллельного многопоточного, мы заочно можем предположить, что при повседневной работе Байкал М будет примерно равен моей малине, а та +- равна Эльбрусу 8С. Короче, в браузере между ними разницы особо не будет.