«Эльбрус» на Альте (Михаил Шигорин, OSSDEVCONF-2017)
Материал из 0x1.tv
- Докладчик
- Михаил Шигорин
В докладе рассматривается интеграция поддержки архитектуры «Эльбрус-2000» в репозиторий проекта Сизиф, её основные этапы, задачи и текущее состояние, а также особенности архитектуры и её сравнительные возможности.
Содержание
Видео
Презентация
Thesis
Состояние: 2017
В докладе 2016 года речь шла о текущем результате в виде полутысячи альтовских пакетов, собранных нативно на рабочей станции «Эльбрус-401» в чруте под управлением ОС Эльбрус; за год произошли существенные сдвиги, позволившие задуматься над добавлением поддержки архитектуры e2k в нашу сборочницу:
- «Эльбрус-401» с весны 2017 года загружен под альтом;
- объём репозитория перевалил за 2500 пакетов;
- собраны многие ключевые библиотеки;
- введён в эксплуатацию сервер «Эльбрус-4.4».
Среди заметных результатов — важные для возможности сборки целых сегментов
Sisyphus библиотеки Boost и Qt5.
В чисто прикладном плане за это время была обеспечена возможность применения «Эльбрус-401» под управлением ОС Альт в качестве базовой рабочей станции (несколько графических сред, включая Xfce, LXQt, MATE; браузер Firefox~ESR; разнообразные утилиты), а также развита серверная часть вплоть до поддержки функционирования в качестве контроллера домена Active Directory.
Задачи
Обозримая часть маршрута выглядит так:
- базовая сборочная среда;
- наработка репозитория;
- развёртывание транзакционной сборочницы;
- перевод в режим «догоняющей» сборки;
- публикация репозитория.
На сегодня мы дошли до пробного развёртывания girar-builder (системы,
обеспечивающей возможность транзакционного изменения репозитория по мере новых
сборок пакетов), но упёрлись в необходимость выставления существенного
количества «ручек» --without/--disable, отключающих недоступную сейчас
функциональность (например, сборку с ещё не собранными библиотеками).
Для полноценного добавления поддержки архитектуры, тем не менее, остаётся нерешённым ряд задач технического плана. Среди них наведение порядка в имеющемся репозитории: уже произведено устранение остаточных alien-пакетов, на сейчас таковыми остались компилятор и его библиотеки, но пока остаются многие временные пакеты, формально предоставляющие недостающие требуемые где-либо зависимости или являющиеся «мостиками» при различии имён. Также продолжается сборка недостающих ключевых компонентов, что позволит продолжить включение отключенных на предыдущей стадии портирования «ручек»; всё-таки предстоит перенос остаточных «отключаторов» в конфигурацию сборщиков, так как все сто процентов доступного программного обеспечения пересобрать заведомо не получится в силу объективных различий платформ и их экосистем (например, для~e2k нет смысла собирать intel-gpu-tools).
Особенности архитектуры
Сизиф портирован на несколько аппаратных архитектур и каждая из них чем-то да выделяется; у архитектуры «Эльбрус-2000» в целом на сегодня наиболее выделяющимся отличием является отсутствие компилятора gcc -- в качестве системного компилятора применяется lcc, имеющий как неоспоримые достоинства в плане возможностей оптимизации (аналогичные выигрышу icc на x86/ia64, только более ярко выраженные), так и проблемы любого не-gcc в плане совместимости с~GNU-расширениями стандарта языка Си и конкретными опциями вызова.
В силу выбранного типа архитектуры (VLIW с явным параллелизмом) характерна сравнительно невысокая скорость работы компилятора, усугубляющаяся тем, что оптимизация оптимизирующего компилятора для работы на таких платформах особенно сложна; при этом практического быстродействия достаточно для пересборки за сутки более чем 1600 пакетов на шестнадцати процессорных ядрах.
По части аппаратного обеспечения (используются системы на базе микропроцессора «Эльбрус-4С») можно выделить такие особенности:
- невысокая скорость работы относительно текущих x86;
- хорошая перегрузочная способность (меньше «проседает»);
- хорошая масштабируемость многопроцессорной системы;
- поддержка больших объёмов памяти.
В частности, время сборки больших проектов (ядро Linux, браузер Firefox)
на четырёхпроцессорной машине уменьшалось практически линейно по сравнению
с однопроцессорной.
Значительный объём ОЗУ — 24 Гб штатно на рабочей станции, 96 Гб на сервере -- сильно облегчает параллельную сборку и сборку крупных пакетов, не вызывая подкачки страниц памяти с диска (на ARMv7 и~MIPS с этим было куда сложней, что лишь усугубляло недостаток производительности процессора).
При этом надо понимать, что потенциальная пропускная способность интерфейсов DDR3 и~SATA2 на 4С задействована не в полной мере.
Стоит отметить, что итоговая производительность системы на VLIW-архитектуре сильно зависит от того, насколько удалось реализовать параллелизм выполнения кода при его компиляции; поэтому на одном и том же ПК «Эльбрус-401» система может напоминать как Pentium~III, так и Core2 по производительности в зависимости от версии компилятора и переданных ему опций. Разумеется, порой решающее значение имеют всё-таки ручные правки кода, которые мы всё так же получаем от коллег из МЦСТ.
- Ссылки
- http://altlinux.org/ports/e2k
- http://0x1.tv/20170128J
- http://lvee.org/ru/abstracts/251
- http://sdelanounas.ru/blogs/96816
- http://mcst.ru
Примечания и ссылки
Plays:31 Comments:5