Lennart Poettering сообщил в своей ленте Google+, что опубликовал статью с советами по оптимизации systemd. Уже есть краткий перевод на русский, на сайте OpenNET.ru.

По прошествии четырех лет инженер Red Hat и участник Fedora и Debian David Airlie и инженер AMD и участник Debian Alex Deucher представили патчи для поддержки GPU offloading для Intel, NVIDIA и ATI видеокарт с помощью технологии DMA-BUF/PRIME. Ожидается поддержка в видеодрайверах для ARM-платформ.

Расскажем немного историю вопроса и начнем с самого начала. Как вы знаете, прямо сейчас на замену старой доброй технологии из 1987 года, X11 (X Window System), разрабатывается некий Wayland (мы о его развитии периодически пишем). Хейтеры, как и в случае с systemd, изливаются потоками ненависти, но, опять-таки, как и в случае с systemd, очень подозрительно, что признанные специалисты отрасли приветствуют изменение, а анонимные аналитики Linux-ресурсов ругают. Это, разумеется, ничего не доказывает, но дает повод для раздумий. Так вот, мало кто представляет, насколько убог и насколько уже устарел X11. А вы знаете, что в нем в принципе нет прозрачности (зато есть сетевая прозрачность!), нет OpenGL (есть с помощью расширения протокола, но это не работает по сети), нельзя создавать непрямоугольные (например, овальные) окна, нельзя поворачивать их на произвольные углы, несмотря на рассказы про сетевую ориентированность, невозможно отключиться от сессии, а потом подключиться заново - хороша "сетевая прозрачность", не учитывающая пропадания сети! А знаете ли вы, что DRI был придуман специально, чтоб бороться с сетевой моделью иксов? А вы в курсе, что еще в конце 1990x считалось, что графическая подсистема в Linux быстрее, чем в Mac OS и Windows? Вот только с тех пор конкуренты изменялись под стать изменениям оборудования и запросам пользователей, а иксы так и застряли с моделью развития из 1987 года ("хуже == лучше", "вместо реализации фичи добавь возможность пользователям приделать костыль на скорую руку" - это не шутка, это действующие руководящие принципы модели X Window System). X-server в Linux не может работать не от root, сетевая прозрачность выродилась в перекачку битмапов по сети кроссплатформенными графическими тулкитами. Почти никогда X11 на современных компьютерах не работает, как X11 - используются различные ухищрения, такие, как SharedMemory и DRI, чтоб обойти "тру-юниксвэйные иксовые" процедуры записи пиксмапов в unix-сокет и записывать их прямо в память видеокарты, в обход юниксвэйности. API X11 (Xlib) тоже не является эталоном - мы не будем говорить об его синхронности, т.к. асинхронность в X11 критиковалась еще специалистами DEC, и, видимо, тут есть невидимые для нас, как для неспециалистов, некие проблемы в обоих подходах. Ну а вы в курсе, что в Xlib все ошибки по умолчанию фатальные и приводят к закрытию приложения? Например, использование некоторыx функций MIT-SHM в X11-приложении, запущенном по сети, очень вероятно, что закончится ошибкой и вообще не позволит вам запустить его. В общем, с API можно что-то сделать, но, как и в случае с заменой init-системы, в живой процесс развития мертвой хваткой вцепились полумертвые монстры из прошлого (можно смело предполагать, что процесс адаптации Wayland также будет сдерживаться устаревшими Unix-системами и FUD-ом, распространяемым представителями маргинальных Linux-дистрибутивов). Более того, современные приложения используют d-bus, а он совершенно несетепрозрачный, и приложение, активно его использующее, не сможет работать правильно по сети (удивительно, но никто из пользователей KDE этого не заметил до сих пор - видимо сетевая прозрачность давно уже "не нужна"). Пора сказать открыто - архитектура иксов более не соответствует требованиям времени, и ее необходимо менять. Процитируем Julien Danjou, участника проекта Debian, X11-разработчика и автора Awesome: It's likely impossible to fix X11 (properly). But there's no reason to keep X. ...I don't think anybody should do X specific programming nowadays anyway. People should stop writing window managers, now, seriously. If they really want to work on this kind of low-level things, yes, I think putting effort in Wayland is better, so it happens.

Одной из проблем, которую практически невозможно оказалось решить в рамках действующей архитектуры X11 (понадобилось почти четыре года во времени которых было предложено несколько подходов, все, кроме одного, оказавшиеся тупиковыми путями), это то, как использовать несколько видеопроцессоров (например, SLI или CrossFire - две связанные видеокарты, работающие в параллель, либо вспомогательная видеокарта, включающаяся, когда не хватает электропитания, либо USB-видеокарта, периодически подключаемая и отключаемая). В Wayland изначально учитывается то, что и видеовыходы, и видеопроцессоры, и устройства ввода будут динамически подключаться и отключаться, а в X11 оказалось, что костыль на это не так то и просто прикрутить.

Проблему озвучил инженер Red Hat и участник Fedora и Russian Fedora (проверьте по статистике коммитов на Ohloh!) Adam Jackson еще в конце 2008 года, признав, что решение будет непростым. Прямая речь: "Getting this to work well should actually be a lot of fun, and there's lots of opportunity to sweep away old bad design and come up with something good.". Какие-то костыли для исправления ситуации с работой нескольких видеокарт в видеодрайверах были предложены спустя год-полтора. Сначала David Airlie написал в 2010 году vga_switcheroo, который позволял перезапускать иксы, выбирая видеокарту. Это решение, несмотря на его очевидную кривизну, реально использовалось в Ubuntu и Gentoo (жить ведь как-то надо), но оно не работает с проприетарным драйвером NVIDIA. Для этих карт, в т.ч. и для открытого видеодрайвера, было предложено иное решение (тоже основанное на перезагрузке иксов, но невидимое для пользователя - на более мощной видеокарте запускается свой, отдельный X-сервер, изображение с которого "проксируется" на X-сервер, постоянно запущенный на слабой видеокарте) - Bumblebee, прославившееся фееричным багом, уничтожавшим директорию /usr. Eсли б они использовали пакетный менеджер и собирали бы его в пакет в изолированном окружении, и не от root, то этот баг не отразился бы на столь огромном количестве наивных пользователей Ubuntu, которые привычно ставят не глядя самое различное ПО откуда попало, но там весь проект страдает от проблем с software engineering, как обычно в наколеночных проектах.

Вскоре к решению проблемы (написанию очередного костыля для иксов - иксы состоят из костылей, повторимся, и это полностью соответствует их философии) привлекли тяжелую артиллерию - инженеры самых разных компаний начали думать, как обойти это ограничение устаревших X11? После завершения поигрушек с vga_switcheroo David Airlie предложил proof-of-concept нового подхода, который он назвал PRIME - GPU offloading. Суть в том, что одна, например менее прожорливая электрически, видеокарта работает всегда, а иногда она будет передавать задачи на обработку более мощной видеокарте. Это уже было что-то. Правда, из-за ограничений X11 требовалось, чтоб драйвер видеокарты знал о драйверах для других видеокарт. Процитируем Airlie: "To make this as good as Windows we need to seriously re-architect the X server + drivers..."

Еще через год, в конце 2011, David Airlie успешно продемонстрировал GPU offloading на примере подключения на лету USB-видеоадаптера DisplayLink. Решение все еще требовало разных хаков тут и там, и автор прямо заявлял, что он не ожидает скорого включения поддержки этой технологии в X11, но в этот раз он начал более активно работать.

Примерно в это же время инженеры Linaro, Samsung и Texas Instruments предложили первый вариант того, что они назвали DMA-BUF, технологии для совместного доступа к памяти различных видеоустройств - V4L, X11, видеокамеры и т.п., которая позволит при обмене данными между этими устройствами вместо пересылок огромных серий байтов в ядро и обратно просто обмениваться адресами этих данных. David Airlie быстро оценил перспективность такого подхода, и следующий релиз своего PRIME уже выпустил, основанный на DMA-BUF. Темпы внедрения ощутимо ускорились, и последним куском мозаики был VGEM, представленный Adam Jackson, который позволит использовать различные DMA-BUF оптимизации устройствам, не имеющим DRM-драйвера (LLVMpipe). Все было готово - осталось лишь замотать все изолентой.

И вот, наконец, возвращаемся к первому абзацу. David Airlie и Alex Deucher собрали все куски вместе, и теперь ничего не останавливает Open Source коммьюнити от написания патчей для поддержки SLI/CrossFire или Optimus. Заметьте, как тяжело становится догонять проприетарные видеоподсистемы, нескованные цепями стандартов прошлого.

Что до Wayland, то говорить не о чем, т.к. в нем все это и так будет работать из коробки. Когда его допишут, разумеется - ждем, надеемся и верим! А пока почитайте Wayland anti-fud от того разработчика Collabora, который переносит Wayland на Android, о чем мы уже говорили.

Tim Waugh, участник Fedora и инженер Red Hat, объявил, что он и Richard Hughes, инженер Red Hat и участник проектов Fedora, Gnome и RussianFedora, завершили работу над новым компонентом Linux-десктопа. Встречайте - printerd. Это новый spooler печати, созданный с учетом d-bus. Так как это фактически очередь объектов, отправленных на печать, то он не является заменой CUPS, а дополняет его. Пока особо подробностей нет, но мы уверены, что они скоро последуют.

Чешский филиал Red Hat в очередной раз приветливо открывает двери перед студентотой и школотой в летнее время. Так-что если вы считаете, что лето, солнце, море, любовь и танцы - это слишком скучно, и ваше сердце радостно трепещет от мерного гула любимого дата-центра, в котором при приятно низкой температуре романтически воют такие родные блэйд-сервера, с такими давно знакомыми отпечатками SSH-ключей, то рассмотрите вариант. Итак, вы...

  • Говорите на английском на уровне "гиды в Турции понимают меня"?
  • Считаете, что systemd - не слишком радикальное изменение, и в Линуксе надо менять больше?
  • Программируете на Bash, Perl и Java?
  • Устали пересобирать ядро локалхоста и подбирать USE-флаги и хотите пересобирать ядра Лондонской Фондовой Биржи?
  • Все еще учитесь?
  • Хотите поработать в компании матерых упырей-нердов? См. "stop reopening".

Если ответ, "да", то попробуйте присоединиться! До конца мая будут открыты следующие позиции:

  • Development Engineering (C/Python/Ruby/Ruby on Rails/Perl)
  • Quality Assurance Engineering (Python/Bash/Perl)
  • JBoss Quality Assurance Engineering (Java)
  • JBoss Engineering (Java)
  • Kernel Development Engineering (C)
  • Support Engineering (good English, admin)

Хватить сидеть в песочнице. Попробуйте по-взрослому!

Несмотря на оптимистичное заявление Марка Шатлворта, что в следующем релизе Ubuntu будет Wayland, хотелось-бы предупредить, что участники Fedora и инженеры Intel могут не успеть дописать его в сроки, заявленные Марком. Мы полагаем, что более реалистично было бы надеяться на появление его в Ubuntu 13.04, через полгода после того, как его протестируют в Fedora 18. А может, даже после Fedora 19.

Напоминаем, что Wayland в Fedora включен в виде технологического превью уже с 15 релиза, но он все еще не готов для сколь-нибудь серьезного использования (хотя разработчики очень стараются). Пока же можно попробовать демонстрационный LiveCD с Wayland.

Google привела статистику по нынешнему GSoC. В этом году конкурс был - четыре человека на место, и нас, как истовых патриотов, очень радует, что Россия пробилась в пятерку стран-лидеров по числу участвующих студентов, выйдя на четвертое место (сразу за Индией, США и ФРГ). РОССИЯ, ВПЕРЁД!

Хотелось-бы намекнуть нашим чиновникам, что именно заботой о студентах и работой с ними, а не приказом по отделу о внедрении наноинноваций в подмосковных элитных бизнес-школах, создается будущее страны. Отрадно, что хотя-бы американская компания Google заботится о будущем российских студентов.

Так или иначе, но, кроме участия Google, необходимо отметить еще и вклад других российских компаний и некоммерческих организаций, которые словом и делом помогают студентам приобщиться к индустрии и науке программирования. Во-первых отмечу, что мы уже второй год предлагаем свою помощь для студентов, желающих попасть в GSoC (правда пока нам похвалиться нечем - стыд и срам!). В этом году к информационной кампании присоединилась Пиратская Партия России, которая ратует за открытость в культуре, технологиях и государстве - они опубликовали призыв к студентам поучаствовать. Традиционно, бросили клич GIS-Lab и LinuxGraphics.ru. Также надо отметить очередной успех сотрудников компании "РОСА", Владимира Рубанова и Дениса Силакова, чьи идеи получили свои слоты и в этом году. "Что будем делать? Что будем делать? Завидовать будем!". Похоже, что, как говорится, "у них там гнездо" - их коллега по ИСП РАН, Алексей Хорошилов, тоже получил свой слот в GSoC. Гордимся соотечественниками!

P.S. Два (раз и два) развернутых отчета от участников GSoC из РФ - обязательно ознакомьтесь, если хотите поучаствовать в следующем году.

Мы уже рассказывали о так-называемых "bundled libs" и том, каковы правила относительно них в Fedora (и не только в Fedora). Как будто специально, чтоб проиллюстрировать сложность исправления этой, довольно типичной ошибки, допущенной на этапе проектирования приложения, пришла новость, что трехлетняя заявка в багзилле, о том, что rsync содержит копию zlib будет скоро закрыта со статусом "исправлено".

Эта история очень поучительна тем, что затрагивает традиционные приложения. Многие из них разрабатывались уже задолго до самого появления нынешних дистрибутивов, и многие застряли в старых моделях разработки - патчи напрямую единственному мэйнтейнеру, не используется багтрекер, нет не только публично доступной DVCS, но и вообще хоть какой-то системы контроля версий, распространение в виде tarball-ов на личных страничках на сайтах университетов. В данном случае все это сильно замедляло прогресс в решении этой задачи - почитайте комментарии в заявке на bugzilla, чтоб проникнуться духом безграничного отчаянья. Например, автор zlib лишь относительно недавно перенес процесс разработки на GitHub. Добрым молодцам тут урок в том, что не всегда традиционное, это синоним слова "хорошее" или "оптимальное".

Peter Hutterer объявил сегодня о выходе Synaptics 1.6.0 - драйвере устройств ввода для тачпадов и подобного оборудования. Основными изменениями этой версии будут поддержка clickad (тачпады без физических кнопок на самых новых ноутбуках, таких, как Apple MacBook) и smooth scrolling. Что интересно, так это то, что основную работу по добавлению поддержки clickpad провел инженер Canonical, Chase Douglas. Могут-же, если захотят!

Нам, конечно, немного неудобно, что работа Chase Douglas вероятно не получит должной оценки от Mark Shuttleworth, который уже неоднократно высказался, что Canonical не заинтересована в развитии upstream-проектов низкого уровня, таких, как ядро, но мы все-равно рады за него. Он своим делом, а не шумом в блогосфере, демонстрирует пользу для всего opensource движения от Canonical и сообщества, сформировавшегося вокруг Ubuntu. Интересно, что инженер Red Hat, Peter Hutterer, не вставлял Chase палки в колеса, на что недавно жаловался Mark при ответе на вопрос о сотрудничестве с проектом GNOME.

Продолжаются переписываться видеодрайверы для неновых карт, чтобы обеспечить поддержку KMS. В этот раз, David Airlie взял proof-of-concept драйвер для видеокарты Cirrus Logic, которую эмулирует Qemu, изначально написанный другим участником проекта Fedora, Matthew Garrett, и дописал его до рабочего состояния. Драйвер не поддерживает "реальное", физически существующее оборудование - только виртуальное, в Qemu. Ожидается, что драйвер будет включен в ядро 3.5.

Сегодня исполнилось 5 лет, как Lennart Poettering поступил на работу в Red Hat и с энтузиазмом начал безостановочное улучшение всего подряд. Поздравляем, Леннарт. Ломай Улучшай и дальше, расти большой, не упускай инициативу, программируй больше и лучше!

Страницы