Linuxcon + Cloudopen + Embedded Linuxcon Europe 2015: Как Это Было

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

Сообщество энтузиастов, хакеров, инженеров, программистов, администраторов, корпоративных боссов — всех тех, у кого есть работа и хобби благодаря Linux и открытому исходному коду.

Мы в НТЦ «Метротек» привыкли делиться и получать знания, поэтому не могли это пропустить.

Дамы и господа, добро пожаловать в Дублин на тройную конференцию LinuxCon + CloudOpen + Embedded LinuxCon Europe 2015!

LinuxCon + CloudOpen + Embedded LinuxCon Europe 2015: как это было

Даже когда мы впервые посмотрели на программа конференции мы поняли, что это будут очень напряженные 3 дня.

Ежедневно с 9 утра до 18 вечера в огромном конференц-центре Дублина параллельно проходило 12 (!) докладов.

Естественно, мне хотелось посетить почти все, но наш маховик времени еще не прислали с AliExpress, поэтому пришлось тщательно выбирать, куда поехать.

К счастью, нас было двое (я и паулиг ), так что я смог увидеть больше.

Наконец мы добрались до Дублина и началось.



Первый день

В огромном выставочно-конференц-центре собрались тысячи (буквально) Linux-людей всех мастей: от дрянных стартап-хипстеров, запускающих Docker-контейнеры с Node.js-приложениями, от красивых женщин, охраняющих управление питанием и документацию, до седовласых Unix-хакеров, помнящих время.

когда разработка Linux велась с помощью архивов.

Чтобы сразу ответить на подсознательный вопрос – да, Линус Торвальдс здесь.

А также Грег Кроа-Хартман, Дирк Хонделл и дюжина других разработчиков ядра Linux. А еще ребята из Apache Foundation, Docker, Red Hat, IBM, GitHub, Google, Oracle, Intel и других замечательных компаний — все те, кто создает индустрию открытого исходного кода.

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

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

На LinuxCon традиционно таким человеком является Джим Землян, президент Linux Foundation. Со сцены конференц-центра Дублина он поздравил всех с двумя знаменательными датами: 24-летием Linux и 30-летием Фонда свободного программного обеспечения.

Linux Foundation разрабатывает множество проектов помимо самого Linux. Общая стоимость проектов, разрабатываемых под эгидой Linux Foundation, составляет $5 млрд. Джим также объявил о создании нового проекта — «Совместный проект в реальном времени», — в рамках которого они будут разрабатывать RT-патч для Linux, а также о найме его главного разработчика Томаса Гляйкснера.

Немного контекста.

Недавно Томас создал драму о том, что за его невероятные усилия никто не платит и поэтому он собирается отказаться от нее.

Затем последовал Шон Горли с темой «Человек против машины».

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

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

Но, тем не менее, машина допускает ошибки, и эти ошибки дорого обходятся.

Самый известный пример – история Knight Capital. Однако это мир, в котором мы живем, мир, в котором 61% всего интернет-трафика не связан с людьми.

Потом был репортаж от IBM, в котором они себя рекламировали.

Ничего интересного, но они главный спонсор, так что мне пришлось это терпеть.

И в конце ребята из Drone Project и ETH Zurich рассказали о дронах.

Дроны — это не военная техника, а всем известные коптеры.

Цель Drone Project — создание открытых инструментов для создания таких устройств.

В настоящее время существуют Pixhawk (открытая аппаратная платформа) и ROS (операционная система для роботов).

Потом я пошел к отчетам.

Первым было «Хранилище, управляемое приложениями», где ребята из CNEX Labs рассказали об идее т.н.

«Твердотельные накопители с открытым каналом» и их использование в приложениях.

SSD с открытым каналом — это SSD, в котором все FTL удалены и оставлены на усмотрение разработчика.

То есть приложение само контролирует, как будут размещаться данные, как удалять данные и выполнять сборку мусора, переназначать блоки и т. д. Это убирает ненужные уровни абстракции и сложности, которые являются скорее помехой, чем помощью.

Все это необходимо, когда вы разрабатываете приложение, активно работающее с диском, предъявляющее к нему особые строгие требования и хорошо знающее особенности его доступа.

Например, базы данных, которые на протяжении всего своего существования борются с операционными системами и реализуют собственные кэши, планировщики ввода-вывода и т. д. Спикер, рассказавший о RocksDB, специально адаптированной базе данных «ключ-значение» SSD, ответвленной от LevelDB, не стал исключением.

и новую подсистему ядра LightNVM, которая предоставляет аппаратно-независимый API для предоставления информации и управления пользовательскому пространству.

Про LightNVM должен быть отдельный доклад, поэтому основное внимание было уделено RocksDB. На самом деле все находится в зачаточном состоянии; по производительности новое решение уступает(!) в несколько раз(!!) старому POSIX API на обычных SSD из-за отсутствия страничного кэша и использования одного SSD-канала.

Но в будущем обещают невероятное ускорение, почти на уровне переработки SSD. На данный момент вот оно.

Само оборудование (открытый канал SSD) сейчас реализовано на FPGA, но в будущем планируется сделать ASIC. Следующий доклад был «RTFM? Напишите лучше ФМ! Суть в том, «перестаньте быть придурком, узнайте свою аудиторию».

Банальные вещи, потому что, как заметил сам спикер, люди, которые приходят послушать такие темы, обычно молодцы, а вот те, кому это действительно нужно, не получают. Тогда я пошел к спикеру, с которым был заочно знаком по коду — Алану Таллу из Altera, чей код я изучал и модифицировал под нужды наших продуктов.

Он рассказал о структуре управления FPGA, которая была мне хорошо известна.

Ну, а точнее сначала о ПЛИС, о SoC FPGA, потом о том, как раньше работали с ПЛИС, история развития и состояние, в котором она находится сейчас.

О самом управлении FPGA было немного технических подробностей, больше об оверлеях DeviceTree. Мы рассмотрели последнюю версию и ее API. Нам нужно увидеть, что изменилось.

В продолжение темы FPGA был еще один доклад с красочным названием «Использование FPGA для тестирования драйверов», от которого я ожидал чудесных откровений.

Но на деле оказалось, что разработчики U-Boot берут простые Lattice FPGA и делают для них прошивки, которые проводят нечеткое тестирование аппаратных шин и устройств.

В частности, ПЛИС подключается к шине I2C или SPI и на нее подаются случайные и просто ошибочные команды, а потом смотрят, вышел из строя драйвер шины или нет. То же самое касается и тестирования самой шины, когда на ПЛИС моделируется странное устройство, например, SD-карта.

Честно говоря, я ожидал большего.

«Максимальная производительность.

Как ее получить и как избежать ловушек» Кристофа Ламетера, активного разработчика сетевой подсистемы ядра, была довольно общей, систематизирующей большой опыт настройки производительности.

Как правило, программное обеспечение уже оптимизировано для работы в большинстве случаев или на популярных аппаратных платформах.

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

Как правило настраиваются 2 вещи - ввод/вывод и сеть, как самые долгие и ресурсоёмкие части.

Но, поскольку современные системы хранения данных по сути повторяют поведение сетей (передача команд, инкапсуляция сообщений), то можно сказать, что «Хранение сегодня — это сетевая коммуникация».

И если вы хотите оптимизировать свое приложение, вам нужно перейти к аппаратному обеспечению.

Вместо использования API вашего языка программирования используйте буферизованный ввод-вывод из glibc, или используйте Socket API, или перепишите все на RDMA API, или переключитесь на FPGA или ASIC. При оптимизации доступа к памяти нужно помнить об иерархии кэша и стараться ей помочь.

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

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

Мы подумаем об использовании его в Б100 .

В заключение состоялись регулярные выступления, из которых самым интересным стал Kernel Developers Panel, когда собирают разработчиков ядра Linux и задают им вопросы, обсуждая различные темы.

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

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

И мы пошли искать сопровождающих в барах

LinuxCon + CloudOpen + Embedded LinuxCon Europe 2015: как это было



Второй день

Второй день обещал быть более интересным в плане докладов.

Я собирался послушать о LLVM/Clang, Btrfs и снапшотах, Buildroot и профилировании.

Утренние доклады второго дня были более интересными, чем первого.

Сначала Ли Ханивелл из Slack Technologies выступила на тему «Обеспечение открытого будущего».

На основе известного Heartbleed она рассказала о возможных действиях по предотвращению подобных ситуаций.

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

стараться думать как злоумышленник.

Менеджерам стоит создать здоровую культуру, в которой люди не чувствуют себя виноватыми, потому что это приводит к сокрытию реальных проблем.

Кроме того, стоит прочитать хорошие практики по организации безопасной разработки, например Microsoft SDL. Далее была Контейнерная панель – открытая дискуссия на тему контейнеров.

Основные моменты:

  • Готовы ли контейнеры к производству? Да, основа контейнеров в ядре существует уже около 10 лет и с ней всё в порядке.

    Докер показал, как этим можно удобно пользоваться, и здесь есть чем заняться.

  • Можем ли мы заменить традиционный способ распространения приложений через пакеты rpm или deb контейнерами? С одной стороны контейнер представляет собой черный ящик, в который можно положить что угодно и пользоваться им не очень приятно.

    С другой стороны, когда мы устанавливаем какое-то сложное приложение, влекущее за собой кучу зависимостей, мы не проверяем, что находится в пакетах.

    Все дело в доверии и аутентификации, а аутентификация контейнера — это то, что действительно необходимо сейчас.

В конце выступления мы говорили об IoT, куда бы мы без него.

Короче говоря, Интернет вещей изменит мир, но он должен решить важные проблемы:

  • Безопасность
  • Недостаток специалистов по встроенным системам
  • Взаимодействие вещей
Потом пошли отчеты.

Первое, что я пошел послушать, было «Повышение продуктивности разработчиков с помощью Clang» Тимана Шеллера из Samsung. Прежде всего, Clang правильно произносится как «Clang», а не «Hose» или как вы это называете.

Для тех, кто знаком с LLVM и Clang, это было немного скучно.

Тиман рассказал, что LLVM — это модульная платформа для разработки компиляторов и инфраструктуры для многих проектов, например:

  • Clang — компилятор C/C++/Objective C
  • LLDB — отладчик
  • lld — фреймворк для компоновщиков
  • polly — многогранный оптимизатор
Сейчас LLVM используется в реализациях WebKit FtL JIT, Rust, Android NDK, OpenCL, CUDA и т. д., что говорит о более чем достаточной зрелости.

Основная особенность LLVM — IR, Intermediate Representation. RISC-подобный промежуточный биткод с информацией о типе, в который транслируется исходный код и внутри которого выполняются все оптимизации.

Затем IR транслируется в ассемблерный или машинный код соответствующей архитектуры.

Clang — мощный компилятор C/C++/Objective C с богатыми диагностическими возможностями.

На базе Clang сделано несколько довольно интересных утилит, а именно:

  • Статический анализатор Clang — статический анализатор кода
  • clang-format — форматировщик кода
  • clang-modernize — приводит код C++ в соответствие с новыми стандартами.

  • clang-tidy — поиск нарушений правил разработки (соглашений по кодированию)
  • Дезинфицирующие средства:
    • АдресСанитайзер
    • ThreadSanitizer
    • LeakSanitizer
    • Дезинфицирующее средство памяти
    • UBSanitizer (неопределенное поведение)
С точки зрения производительности код, сгенерированный Clang средний На 2% медленнее, чем gcc. но время компиляции намного короче, а диагностические возможности шире.

Далее мы рассмотрели диагностические возможности на примерах в сравнении с gcc. И придумали рецепт, как лучше всего ускорить сборку большого C++-проекта (самого LLVM).

Рецепт такой: Clang + gold + PGO (оптимизация на основе профиля) + Split Dwarf + оптимизированный TableGen + Ninja. Получается в 2 раза быстрее, чем gcc. Подробности у спикера.

Далее я пошел на интригующий доклад «Btrfs и откат», но был разочарован powerpoint и отвратительной подачей материала.

Остался на «Архитектура Проекта Ара».

Из услышанного я узнал, что для модульного телефона была разработана шина UniPro, каждый модуль имеет небольшой ЦП для связи через UniPro, при вставке модуля драйвер шины получает уведомление о новом модуле, загружает драйвер и , при необходимости просит Android обновить ПО из облака.

Посетил отличный туториал по Buildroot. Томас Петазонни из Free Electrons на наших глазах собрал систему для BeagleBone Black от BuildRoot, показал, как настраивать компоненты, как добавлять свои патчи ядра.

Мы рассмотрели, как сделать собственный пакет и настроить rootfs. Мы потратили 2 часа на демонстрацию вопросов и ответов, и теперь я в восторге от Buildroot и собираюсь попробовать.

А последний доклад был на тему «Профилирование и мониторинг производительности Linux», которая была абсолютно неинтересна всем, кто хоть немного пытался этим заняться.

Отчет состоял из перечисления таких утилит, как vmstat, sar, top(> _<), mentioning ftrace and perf. If you are really interested, then here you go - brendangregg.com/linuxperf.html Заключительные выступления представляли собой «беседу у камина» с Линусом Торвальдсом и Дирком Хонделлом.

Ребята мило пообщались о состоянии ядра и о том, что собирается делать Линус.

С ядром всё нормально, Линус ничего делать не хочет. А потом тот же Томас Петазонни рассказал, как им своей небольшой компанией из 6 человек удается внести существенный вклад в развитие ядра, в частности ARM SoC. Секрет прост – небольшой коллектив и отсутствие проблем с коммуникациями, нацеленность на продвижение в апстрим, постоянный обмен знаниями, общение на конференциях.



День третий



LinuxCon + CloudOpen + Embedded LinuxCon Europe 2015: как это было

Помимо конференции параллельно проходила небольшая выставка, на которой спонсоры показали себя, кто-то охотился, кто-то проводил мини-саммит (UEFI и Yocto, например).

Но в основном ели и пили там, как видно на фото.

Доклады третьего дня открыл Мартин Финк из HP, который представил проект OpenSwitch — современную открытую ОС для сетевых устройств (свитчей).

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

Мартин также назвал одну из главных угроз open source наличием большого количества лицензий (около 70), которые по большей части несовместимы друг с другом (читайте пример про ZFS, DTrace и Linux), троллил Oracle и IBM, и дело было сделано.

Далее мы узнали, что Интернету вещей нужна открытая платформа, над которой мы будем иметь контроль (привет, Lenovo) и началось это с проекта J-Core CPU — открытого, в смысле открытого аппаратного обеспечения, процессора.

А потом был жуткий рекламный репортаж от Huawei в лучших традициях Смерть от PowerPoint , который никто не слушал.

Я пошел к отчетам.

Я очень хотел присутствовать на докладе о Многофункциональных устройствах (МФУ), но спикер начал на 10 минут раньше (почему?!), быстро отбарабанил вступление и ушел, разбрасывая хаотичные куски кода.

Я наткнулся на отчет о твердотельных накопителях с открытым каналом.

SSD с открытым каналом — это SSD-устройства, которые предоставляют пользовательским (и ядру) приложениям доступ к внутренней информации, а именно к «геометрии» SSD:

  • NAND-носитель
  • Каналы, тайминги
  • Список плохих блоков
  • Какой-то формат PPA
  • ЕСС
Все это сделано для того, чтобы приложения с интенсивным вводом-выводом могли максимально использовать SSD. Подробнее на github .

Тим Бёрд (англ.

Птица ) представил свой годовой отчет «Состояние встроенного Linux», где рассказал о том, что интересного произошло за год в Linux для встраиваемых систем и что произойдет дальше.

Все перечислять нет смысла, поэтому обойдусь кратким списком:

Что стоит посмотреть в следующем году: Дальше было 2 доклада об отладчиках — «Как работают отладчики» и «Отладка ядра Linux с помощью GDB».

Павел Молл из ARM рассказал о том, как работают отладчики.

Короче говоря, через ptrace. Если оно длиннее, то отладчики разветвляют процесс, выполняют ptrace(PTRACE_TRACEME,.

) и выполняют там.

Все управление происходит в родительском процессе (отладчике).

Установка точки останова по адресу означает сохранение инструкций по этому адресу где-то в отладчике и замену их специфичными для архитектуры.

Например, для x86 это int 3, а для ARM есть специально определенная неопределенная инструкция (есть определенная неопределенная инструкция).

Каламбур, да.

Когда выполнение достигает такой специальной инструкции, возникает исключение, которое генерирует сигнал SIGILL, который доставляется родительскому процессу, т. е.

отладчику.

И он уже может делать все, что хочет. Чтобы сделать что-нибудь интересное, исследуемый процесс должен предоставить отладочную информацию, которая обычно хранится в отдельных разделах файла ELF в формате DWARF. Питер Гриффин рассказал об отладке ядра Linux (вообще не такой ) из Линаро.

Он предложил 4 метода отладки:

  1. удаленный доступ GDB к заглушке кгдб в ядре
  2. GDB удаленно для qemu
  3. удаленный доступ из gdb к JTAG, совместимому с gdb, например OpenOCD
  4. gdb и дамп ядра, утилита аварийного завершения
Также рассказал о прогрессе в поддержке отладки Linux в GDB. Также из Линаро дали доклад на пафосную тему «Переосмысление ядра ОС в 2015 году».

А по сути грустный бородач говорил банальности типа «Давайте заменим gcc на Clang, а glibc на musl!» В результате мы получаем массу проблем, а выгоды особой нет. Странный.

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

Но это совсем другая история.



Заключение

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

Плохие выступления, конечно, испортили настроение, но оставшиеся хорошие того стоили.

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

Еще у меня есть 2 фотографии, которым теперь завидуют многие друзья.



LinuxCon + CloudOpen + Embedded LinuxCon Europe 2015: как это было



LinuxCon + CloudOpen + Embedded LinuxCon Europe 2015: как это было

Вот и все.

Спасибо за внимание! Теги: #linuxcon #конференция #разработка сайтов #открытый исходный код #Системное программирование

Вместе с данным постом часто просматривают: