Не буду повторяться в тысячный раз, что такое отечественное производство микропроцессоров, почему «Эльбрус», а не «Байкал» и т.д. Об этом были написаны уже километры текста. Речь пойдет о другом – почему так трудно перейти на «Эльбрус» и в чем заключаются эти сложности. Ну, помимо стоимости…
Итак, всех заинтересованных импортозамещением – прошу под кат.
Сделаю лишь одну ремарку – архитектура процессоров «Эльбрус» — это не MIPS, не ARM и тем более не x64. Это архитектура VLIW.
Процессор разработан у нас, в России. В этом его преимущество, он является полностью доверенным, в нем нет закладок (а если и есть, то их секреты находятся у нас). Ахиллесова пята чипа – отсутствие софта. Об этом и пойдет речь.
Про закладки в процессорах архитектуры x86 можно почитать тут.
0. От автора
Как всегда, этот блок — необязательный, кому не интересно мое словоизлияние – советую сразу перейти к следующей части повествования.
Проработав вопрос импортозамещения для конкретной «компании», а вернее – ФГУП, в котором я проработал почти 10 лет, и написав цикл статей по данному вопросу под общим названием «Импортозамещение на практике», со мной связалась компания НТП «КриптоСофт», после чего я засел за изучение их «QP ОС» примерно на месяц (приходилось совмещать с работой), результатом чего явилась вот эта статья.
И почти сразу после выхода последней статьи со мной связалась компания АО «НПК «Высокие Технологии и Стратегические Системы», предложив продолжить изучение начатого, но в более широких масштабах – изучить еще и вопрос импортозамещения в сфере железа в ИТ. Начать предложили с «Эльбрусов», так как это самое перспективное направление в настоящее время. Я согласился, мне было интересно, тем более, что на прежнем месте мне было сказано, что меня «не видят в новой штатной структуре», ну не любят у нас в госконторах людей, нацеленных на результат, по вполне понятным причинам.
Я был приятно удивлен, когда пришел в «ВТиСС». Мне предоставили контакты с «МЦСТ», пару ПАК «Эльбрус» (серверы и АРМы) для опытов и не стали ограничивать во времени.
Я не могу разглашать информацию, которая является коммерческой тайной, так что далее будет дан общий срез, без каких-либо подробностей и инсайдов (с кем мы уже поработали, чего достигли, к каким соглашениям пришли и т.д.). Скажу лишь, что движение в сторону светлого будущего есть.
1. Операционные системы
Для работы на платформе «Эльбрус»
Но. ОС – это лишь основа, база, на которую нужно поставить обвязку из ПО, которое составит инфраструктуру будущей системы – всевозможные DNS, DHCP, MySQL, прокси-серверы и иже с ними, голая ОС никого не интересует. Потом, поверх инфраструктурного ПО делается обвязка из прикладного ПО. Но пока речь идет об ОС, об остальном ниже.
Да, МЦСТ предусмотрело бинарную трансляцию, которая позволяет запустить на «Эльбрусах» даже Windows, но это ведет к уменьшению производительности примерно на 30%, так что рассматривать этот механизм не вижу смысла. Зачем на доверенном железе разворачивать не доверенную платформу?
Оговорюсь о том, что последнее поколение процессоров «Эльбрус» — 8СВ вполне себе производительно (в тестах использовался процессор «Эльбрус 8С1). Ну… Давайте сформулирую чуть иначе: «Производительности процессора «Эльбрус» последнего поколения более чем достаточно, если на нем запускать ПО в нативном режиме».
Таким образом, мы имеем четыре ОС, которые можно установить на «Эльбрус». И у всех этих ОС, кроме Альт 9, одна версия ядра – 4.9.0 (скорее всего ОС «Лотос» так же построена на базе того же самого ядра, портированного усилиями МЦСТ). У Альт 9 же версия ядра 4.9.170, релиз состоялся 22.10.19г, что говорит нам о том, что люди работают, развивают свою платформу, за что честь им и хвала.
ОГОВОРКА: ОСи реального времени
Есть еще 2 ОС реального времени, которые могут быть развернуты на платформе «Эльбрус», а именно: ЗОСРВ «Нейтрино-Э» и ОС РВ «БагрОС-4000». Но ОСРВ – это немного другая ниша, там свои правила и свои законы, в эту стороны мы углубляться пока не будем.
ВАЖНО – ОС «Эльбрус», которая поставляется в комплекте ПАК «Эльбрус», была портирована для того, чтобы «просто быть». Если голая ОС никому не нужна, то сервер или АРМ без ОС еще менее интересует потенциальных покупателей. ОС «Эльбрус-Д» — портированный Debian «Jessie» 8.11, продукт, который в настоящий момент проходит сертификацию, и будет доступен к покупке. Но путать эти ОС не стоит.
2. Инфраструктурное ПО
Помимо самой ОС во всех трех дистрибутивах есть пакеты инфраструктурного и даже немного прикладного ПО, которые были портированы самими разработчиками этих ОС. Ибо голая операционка, как уже говорилось, никого не интересует.
По порядку.
В связи с тем, что производители ПО с открытым исходным кодом не имеют возможности самостоятельно собирать свои пакеты на архитектуре процессоров «Эльбрус» да им это и не нужно, этим приходится заниматься производителям ОС. Брать исходные коды и пытаться скомпилировать их на платформе «Эльбрус»… Но легко и быстро это получается далеко не всегда. Связано это с тем, что та же C++ на платформе представлена пока лишь 16 версией, java – 1.8.0 (причем Java есть только в ОСсях от МЦСТ) и так со всеми средствами разработки. То есть все средства разработки, как и окружение в целом, – устаревшие.
Инфраструктурное ПО в составе ОСей позволяет на базовом уровне поднять необходимые сервисы, как-то: DNS, DHCP, SQL DB, SMB, FTP и прочее. Там даже есть Zabbix и Squid. Версии ПО у всех 3х производителей разнятся (что там у «Лотос» я не знаю, но что-то подсказывает, что состав их ПО не сильно отличается от всех остальных ОСей).
Списки пакетов ПО для Альт 9 есть в свободном доступе, кому интересно, вот ссылка. Альт имеет самые свежие версии ПО среди всех представленных ОС.
У Astra Linux есть отдельная статья в Wiki, посвященная их сборке для «Эльбрус». Статья эта не менялась… да, собственно, никогда она не менялась. В ней собрана информация о всех пакетах ПО, которые есть в сборке и репозитории.
Более того, бюллетени безопасности, которые с завидной регулярностью выходят для Astra 1.6, можно сказать, что «не выходят» для Astra 8.1. Был лишь один патч в декабре 2019го. При этом Роман Мылицын, директор по продукту ГК Astra Linux (если верить TAdvisor), в октябре говорил о том, что они «постараются по максимуму привести к последнему апдейту для 1.6»
И в итоге они в конце декабря выкатили обновление в виде Бюллетеней Безопасности, в котором действительно подтянули версии пакетов близко к последнему обновлению Astra Linux SE. Тут другая проблема – Astra SE – это сильно устаревший Debian с ограниченным набором пакетов ПО (так как подлежит сертификации). А также не стоит ждать новых версий Firefox и Thunderbird пока нет java крайних версий, а крайних java-версий пока не предвидится. Почему – можно прочесть тут. Собственно, из этой же статьи очевидно, что портированием java озадачились лишь МЦСТ. А вот на Astra и Альт java нет вообще, не говоря уже о крайних версиях.
У ОС «Эльбрус-Д» ситуация с ПО чуточку лучше, чем у Astra. Совсем чуточку. Списка пакетов для ОС «Эльбрус-Д» в открытом доступе, к сожалению, нет. С другой стороны, у ОС «Эльбрус-Д» нет PHP 7, есть только 5 версия, а у Альт и Astra – есть. Также Zabbix версии 2.4, тогда как у Альт и Astra – 3.4. Словом, что-то посвежее у одних разработчиков, что-то – у других, но версии ПО обычно разнятся несильно.
Но все это капля в море. Например, если вы захотите поднять почтовый сервер на «Эльбрусах», у вас есть только Exim4 в связке с Dovecot (на всех ОС). Можно и их использовать, конечно… но на дворе 2020-й год. Хотелось бы Zimbra как минимум. Но Zimbra – система многомодульная, часть модулей на java, а java есть только у МЦСТ. Словом, тут все сложно и бесперспективно. Почти.
Таким образом, базовый функционал – да, необходимый – с трудом, желаемый – совсем нет.
3. Прикладное ПО
А вот тут самое интересное. Во всех 3-х ОС есть самый базовый набор типа старого LibreOffice 5.2.7 (у Альт9 версия 5.4.3), Gimp, Firefox оооооочень старый (52.х), Thunderbird, тоже старенький (52.х), VLC. Ну, собственно, на этом практически все. При этом не существует плагинов для того же Firefox, никто не заморачивался их портированием.
То есть на всем этом можно развернуть некое базовое «рабочее место», которое не требует «современных» технологий типа 1С или календаря в почтовом клиенте. Не более.
Проблема все та же: отсутствие актуальных версий средств разработки, окружения, библиотек и т.д. Ну невозможно портировать ПО, требующее C++ последних версий, на систему с поддержкой C++ 16.
Вариантов решения проблемы с ПО, как инфраструктурного, так и прикладного, ровно 2. Дорогой и очень дорогой. Очень дорогой предполагает наличие огромного штата разработчиков, которые будут подгонять существующее ПО под реалии ПАК «Эльбрус». Дорогой предполагает подгонку ПАК «Эльбрус» под современные реалии (поддержание актуальных версий средств разработки, библиотек и окружения в целом), что даст возможность собирать пакеты ПО из исходников под его архитектурой в автоматическом режиме (как это сделано с пакетами для архитектур х64 и ARM, например, у большинства Linux систем).
Логика подсказывает 2-й путь решения. Он и быстрее, и просто правильнее. Можно было бы даже примерно прикинуть, когда наступит светлое будущее. Но правильный ответ на мой вопрос – никогда.
4. Перспективы развития ПАК «Эльбрус»
Почему никогда не наступит момент, когда можно будет взять исходники ПО и собрать его на архитектуре «Эльбрус» просто выполнив make? Потому что:
- Вычислительные комплексы на базе процессоров «Эльбрус» доступны к покупке только для юридических лиц. Оно и понятно. И враг не купит, и обывателю не нужен малопроизводительный по современным меркам ПК без поддержки виртуализации за 300+ килорублей.
- Вытекает из «1» — ВК не купят коммерческие предприятия, им это просто не выгодно, так что «Эльбрусы» поставляются только в госучреждения и коммерческие предприятия с долей госкапитала (типа РЖД) с подачи сверху. А для таких предприятий важно наличие сертификатов на все, что только можно – будь то бумаги от ФСТЭК, МО, ФСБ, неважно.
- Вытекает из «2»: сертификация – процесс долгий и дорогой, делается с расчетом на несколько лет. Сертифицировал ОС и все, что в нее входит – и работает оно там себе без изменений. А внес изменение – все, потерял сертификацию. Контрольные суммы не сошлись – потерял сертификацию. То есть даже если просто повысить версию пакета ПО – нужно либо заново сертифицировать всю ОС с репозиторием, либо через хитрую лазейку запихивать это как «бюллетень безопасности». Тут исключение составляет только ПО сторонних производителей, которое имеет сертификат, подтверждающий совместимость с ОС. Например, МойОфис на Astra 1.6 можно установить без потери сертификации.
- Вытекает из «3»: да, можно сертифицировать отдельно ОС и отдельно каждый пакет ПО, потом можно будет повысить версию пакета, сертифицировать этот пакет отдельно от ПАК и обновить – сертификация сохранится, но это оооооооочень дорого и очень долго. Дешевле сертифицировать ОС совместно со всеми имеющимися пакетами и ничего не трогать. Через 5 лет повторить.
Таким образом «подгонять окружение под требования современного софта» никто не будет, никому это не интересно – не окупится, да и просто бесполезно, ведь новые версии ПО добавлять в сертифицированную ОС дорого и долго. Будут делать наоборот. И экономически это будет оправдано. Да, это будет опять базовый софт, только-только перекрывающий необходимый и минимальный набор ПО для работы, но это будет востребовано там, где нужно. И все.
- компания, которая хочет сертифицировать свою сборку ОС, отдает комиссии свой дистрибутив (платит деньги за процесс исследований и оформляет тонну макулатуры)
- комиссия рассматривает все заявленные характеристики – в том числе и соответствие классам защищенности, соответствие требованиям МО/ФСТЭК/ФСБ, если таковые заявлялись «производителем» ОС, и проч. и проч. и проч.
- выносится вердикт о соответствии или несоответствии ОС заявленным характеристикам и требованиям сертификации ФСТЭК, МО или ФСБ
И вот когда вынесено положительное решение, дистрибутив, который был отдан на комиссию, со всеми входящими в его состав пакетами, будет являть собой «Сертифицированную Сборку ОС», которая не подлежит изменениям. Единственный вариант внесения изменений и добавления пакетов ПО – инспекционный контроль изменений. По большому счету – та же сертификация, только отдельно взятых изменений в системе. На этом этапе нельзя заменить ядро системы, но можно устранить уязвимости пакетов и добавить эти патчи в ОС после того, как они пройдут инспекцию. Тут есть один существенный минус – с момента выявления уязвимости до ее устранения может пройти слишком много времени.
5. Проприетарное ПО
Повторюсь. Что касается проприетарного ПО, то тут все проще. Разработчикам помимо портирования своего продукта на архитектуру «Эльбрус» нужно всего лишь заявить и подтвердить совместимость своего продукта с любой ОС, работающей на процессорах «Эльбрус». В нативном режиме. В случае, если такие документы имеются, сертификации ПАК ничто не угрожает.
Тут вопрос лишь в том, что для начала работ по портированию ПО разработчик должен увидеть перспективы, а они на данный момент наблюдаются только в направлении госструктур, госорганов и компаний с госкапиталом. Коммерция не будет покупать ПАК за сумасшедшие (по сравнению с теми же Intel или AMD) деньги и страдать от отсутствия софта. Вставлять палки себе же в колеса просто невыгодно.
Так как проблема устаревшего Firefox очевидна, нами было принято решение попробовать портировать другой браузер. Лучше всего – отечественный, лучше всего на движке Blink. Ну не «Амиго» же портировать, право слово (да, я знаю, что он тоже на Blink’е, аццтаньте). И мы пошли на хитрость – кто может решить проблему с java, как не один из «крутых» разработчиков софта в РФ? Мы связывались с Яндексом. Ответ был примерно следующим:
«Яндекс раздает свой браузер бесплатно, и зарабатывают они по большей степени на рекламе, а не на продажах. И для того, чтобы Яндекс взялся за портирование своего браузера на платформу «Эльбрус», нужно гарантировать, что это будет востребовано, что объем установок на следующий год будет хотя бы тысяч 100, и что браузер сможет спокойно обновляться.»
И это логично и правильно с точки зрения бизнеса. Смысл вкладывать в разработку деньги, которые ты не сможешь вернуть? К слову, ответ от разработчиков «Спутник Браузер» был таким же. Не слово в слово, но общий посыл – да. Несмотря на то, что «Спутник» свой браузер корпоративным клиентам продает (у них там свои плюшки есть). И с такими же ответами мы сталкиваемся практически во всех сферах. Ну не будет бизнес делать то, что ему не выгодно. Это удел государства – тратить деньги на то, что не принесет прибыли, там приоритеты другие.
А вот ГОСТовая криптография и антивирусы (как это ни смехотворно – вирусы не просто под Linux, но под засекреченную архитектуру) будут востребованы в госучреждениях и госорганах. Потому и подсуетились Kaspersky, Dr.Web и КриптоПро.
Периодически так же появляются публикации о том, что тот или иной продукт поддерживает архитектуру «Эльбрус». Например:
- Технологии распознавания Smart Engines поддерживают архитектуру Эльбрус – новость аж от 2016 года
- RAIDIX еще в 2017 году портировали свое ПО на «Эльбрус»
- ПОРТИРОВАНИЕ и МИГРАЦИЯ ПО от УНИПРО
- СХД Яхонт на базе «Эльбрусов»
- СХД AERODISK на отечественных процессорах Эльбрус 8С
- На процессорах «Эльбрус» появилась первая система для инженерных расчетов
- Запуск на Эльбрусе платформы для нейросетей PuzzleLib
- SCADA для ОС Эльбрус
Но все это – капля в море. Для того, чтобы перекрыть потребности, нужно портировать целые классы ПО – ERP, CAD, CAM, PLM и т.д. и т.п.
6. Заключение
На деле самой перспективной ОС в плане пакетов софта на настоящий момент выглядит Альт 9 — они хотя бы что-то делают. Astra незначительно подтянули версии, но по большому счету это все устаревшее и неактуальное, малофункциональное в прикладном плане ПО. Что происходит за закрытыми дверьми МЦСТ вообще неизвестно. Вернее, известно, что они допиливают свой компилятор, повышают версию C++ для своей платформы, библиотеки для его работы, окружение и т.д. Но доработки в сторону инфраструктурного и прикладного ПО скорее всего не ведутся, так как они в процессе сертификации своей ОС «Эльбрус-Д», которую «выпустили и тут же засекретили». А Альт – коммерция, у них репутация, они работают (не только и не столько с МинОбороны, которым в первую очередь важна защищенность, мандатный контроль доступа и т.д.). Не по ОКРам, а на продажу, не в госучреждения (хотя и туда тоже. Они выпускают и сертифицированные сборки, куда же без этого).
Но результат все равно далек от желаемого. Очень далек.
Таким образом, ПАК «Эльбрус» можно использовать там, где необходима и критична защита от «врага», или есть «самописный» или «специальный» софт, который можно портировать на ПАК теми средствами, которые уже есть. В остальных случаях его использование попросту нецелесообразно и потребует колоссальных нервов и усилий.
Подводя итог, могу сказать следующее: до тех пор, пока не будет разорван цикл «будут продажи – будет софт, будет софт – будут заказы», с мертвой точки ничего не сдвинется. Будут компании с долей госкапитала закупать «Эльбрусы», но приведет это лишь к тому, что ПАКи будут выполнять роль подпорок для столов и тумбочек, как это происходит сейчас. Они просто пылятся на складах, потому что закупившие их компании просто не понимают, что с ними делать.
Мы же работаем над тем, чтобы все эти пылящиеся АРМы и серверы были пущены в дело, по крупицам собирая и агрегируя информацию, находя варианты решения тех или иных задач. Трудно, долго, но упорно, а главное — результативно.
- РТИ впервые продемонстрировало программно-аппаратную экосистему, предназначенную для компьютеров «Эльбрус»
- АО «НПК «ВТиСС» на XVI форуме межрегионального сотрудничества России и Казахстана
- В ВТиСС создан демонстрационный стенд для перспективных исследований ПО
По поводу последнего оговорюсь – мы не просто предлагаем тестировать или демонстрировать работу отечественного ПО на разных архитектурах, мы предлагаем нашим партнерам возможность портирования своего ПО на архитектуру «Эльбрус» на нашем оборудовании (после подписания NDA, разумеется :) ).
7. P.S.: Немного Head Hunting’a
Компания «ВТиСС» рассматривает варианты принятия в штат разработчиков, программистов, как в рамках работ по «Эльбрусам», так и в «более привычных» направлениях. У нас есть интересные проекты, нетривиальные задачи и вызовы. Ну и вот это вот все, как принято писать в рекламе самих себя.
А если простыми словами – компания будет рада рассмотреть кандидатуры программистов и разработчиков с разными компетенциями (в основном требуются C++ программисты, правда, но руководство на моей памяти не отказывалось от принятия в штат перспективных разработчиков). Если кто-то заинтересовался – высылайте резюме! =)
GarryC
А все таки, насколько адекватна «битовая компиляция» (не эффективна, вы тут написали про -30%). На семинаре по Эльбрусам лет 5 назад была фраза «совместим на 92%», далее на вопрос ответили, что пришлось переписать только 8% кода при портировании Linux на Эльбрус, на следующий вопрос о том, что «совместимость менее, чем на 100% — это несовместимость » внятного ответа не последовало. Что то поменялось?
Snow_Bars Автор
Вы путаете понятия.
2. «Переписать 8% кода» и «совместимость» никак не связаны. Linux, доработанный под архитектуру «Эльбрусов», работает в нативном режиме, без ошибок и костылей. «Совместимость» подразумевает под собой именно это. А то, что пришлось «переписать код», ну так это вытекает из того, что команды процессору совершенно иные, нежели в x64 или ARM, или в любой другой архитектуре. Код Linux для, например, Spark тоже переписывался.
1. «компиляция» и «трансляция» — принципиально разные вещи. Если речь о «трансляции», то ответ — неадекватна. Она работает. Но мы ее долго не «гоняли», нас не устраивает снижение производительности, это заведомо неверный подход — расходовать 30% ресурсов на поддержание работоспособности системы.
GarryC
Вопрос именно в том, работает ли «трансляция» адекватно, то есть можем ли мы гарантированно запустить на Эльбрусе любой бинарный код для х86 и он точно будет работать без проблем.
Snow_Bars Автор
Тут все зависит от того, как и что Вы хотите запустить. Если в бинарке будет запускаться полная ОС, скажем, Windows, то проблем не будет вообще. Если хотите в бинарке запустить приложение из-под ОС, работающей в нативном режиме — будет много тонкостей, потому что для каждого приложения, запущенного таким образом, будет окружение подниматься, и чтобы получить доступ к, скажем, файловой системе, придется делать дополнительные телодвижения.