Pull to refresh

RT-ядро в Убунту. Быстро и без головной боли.

Configuring Linux *
Недавно прочитал статью небезызвестного в кругах «дебианщиков» и «убунтушников»
блогера virens'а про realtime ядро. Оригинал тут.
Меня данная тема заинтересовала, так как проблемы плохой отзывчивости системы при больших нагрузках свойственны и моему ноутбуку.
Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Views 16K
Comments 54

Я использую Brain Fuck Scheduler!

Configuring Linux *


pic related

Кон Коливаc (автор знаменитых когда-то ck ядер) выпустил свой шедулер для десктопных систем под управлением linux. При этом он руководствовался не супер-честностью и мифической расширяемостью, а производительностью своего рабочего компьютера.

Обыгранная на картинке ситуация — беда многих опенсорсных программистов — они пишут фреймворки и общие-системы-всего и не желают исправлять очевидные недостатки, просто потому, что наличие этих недостатков объясняется стройностью их системы. Линус — не исключение.

Надеюсь, когда-нибудь BFS включат в ядро и его можно будет включить просто из menuconfig'a.

PS А полноэкранное видео на youtube действительно больше не тормозит! Посмотрел для теста несколько HQ трейлеров.

ck.kolivas.org/patches/bfs/bfs-faq.txt
ck.kolivas.org/patches/bfs
Total votes 71: ↑65 and ↓6 +59
Views 5K
Comments 72

Realplexor: производительный Comet-сервер с API для PHP и Javascript (realtime)

High performance *
Dklab Realplexor — это Comet-сервер, позволяющий держать одновремено сотни тысяч долгоживущих открытых HTTP-соединений с браузерами пользователей. JavaScript-код, запущенный в браузере, подписывается на один или несколько каналов Realplexor-а и вешает обработчик на поступление данных. Сервер может в любой момент записать сообщение в один из таких каналов, и оно будет моментально передано всем подписчикам (хоть одному, хоть тысяче), в режиме реального времени и с минимальной нагрузкой для сервера.

Хотя идейным вдохновителем Realplexor-а был предыдущий проект, dklab_multiplexor, код Realplexor-а не имеет с ним практически ничего общего. Поэтому я и решил сменить название. Несопоставимы также возможности продуктов (см. ниже), да и размер кода увеличился в 7 раз.

Realtime-направление сейчас довольно активно развивается на Западе, и в нем особенно выделяется продукт Tornado — событийно-ориентированный веб-сервер на языке Python. Правда, Tornado — это не столько Comet-сервер, сколько инструмент, с помощью которого можно запрограммировать «в том числе» и Comet-сервер. Ключевые слова: Comet, Push Server, Long polling, JavaScript, XMLHttpRequest.

Главные преимущества Realplexor-а:
  • простота использования: наличие API для JavaScript, API для PHP (в будущем — и для других языков);
  • простота конфигурирования;
  • широкий функционал (либо отстутствующий, либо недоступный напрямую в аналогах).

Лучше один раз увидеть...


Я сделал отдельную онлайн-песочницу, чтобы продемонстрировать функционал нового Realplexor-а и то, для чего вообще нужны Comet-серверы (кстати, это физически тот же самый демон Realplexor-а, что использует мой новый стартап РуТвит). Песочница реализует что-то типа многоканального чата: зайдя, вы получите как будто бы 2 независимых «браузера», запущенных на разных компьютерах.
  • Верхний «браузер» отображает каналы — в них моментально появляются новые сообщения, как только кто-то их туда отправляет на стороне сервера. Конечно же, эту страницу могут просматривать одновременно сотни тысяч пользователей, и они все будут видеть одно и то же (реализовано с использованием Realplexor JavaScript API). Можно «на лету» добавлять новые каналы (подписка) или скрывать уже имеющиеся (отписка).
  • Нижний браузер содержит формы, позволяющие добавлять сообщение в произвольный канал, указав его имя. Форма AJAX-ом отправляется на сервер, и уже там PHP-скрипт записывает в Realplexor полученный текст через PHP API. (И да, так можно чатиться.)
По умолчанию на странице открыто 3 канала с именами Alpha, Beta и RuTvit. Но, конечно, вы можете закрыть эти каналы и открыть новые. Вот, например, страница с единственным открытым каналом по имени Habrahabr: http://rutvit.ru/realplexor/demo?ids=Habrahabr.



Песочница демонстрирует следующие функции Realplexor-а:
Читать дальше →
Total votes 99: ↑92 and ↓7 +85
Views 20K
Comments 141

«Прямой эфир» для общения c посетителями вашего сайта

Website development *
Недавно я анонсировал Realplexor — habrahabr.ru/blogs/hi/79189 — однопоточный событийно-ориентированный Comet-сервер, написанный на Perl и имеющий готовое API для JavaScript и PHP. С его помощью можно создавать сайты, пользователи на которых взаимодействуют друг с другом в реальном времени, не перезагружая страницу и без значительного расхода трафика.

Сегодня я хочу представить и, как водится, немного «покопаться в моторе» первой версии продукта Прямой эфир, работающей на платформе РуТвит с применением Realplexor-а. Это виджет, который вебмастер может за 1 минуту установить на свой сайт, чтобы устроить микроблоггинг-общение с аудиторией в режиме реального времени.

С помощью «Прямого эфира» аудитория сайта общается между собой в реальном времени — «прямо сейчас», находясь в отдельной «чат-комнате», привязанной к вашему сайту. Виджет можно использовать для «прямого диалога» сразу со многими пользователями: например, для приема багов или фич-реквестов. Если пользователь, с которым вы общались, всё еще на сайте, вы увидите его присутствие: около его имени будет зеленый кружочек.

Для начала общения посетителю сайта нет необходимости проходить процедуру регистрации. Авторизация производится по OpenID. Т.е. ему достаточно иметь аккаунт на Яндексе, Google, LiveJournal и т.д., чтобы начать писать сообщения; не требуется даже e-mail.
Читать, как это устроено внутри
Total votes 60: ↑45 and ↓15 +30
Views 5.1K
Comments 45

Realtime xRTML — новый html-подобный язык разметки

Website development *
Realtime xRTML
Всем привет!

Речь пойдет о новом HTML-подобном языке разметки — xRTML, который позволяет редактировать функции сайта в реальном времени без использования Ajax.

Разработчиками xRTML является часть португальской команды IBT (Internet Business Technologies), которые стремясь создать новый и доступный язык разметки, позволяющий быстро вносить изменения на сайт в реальном времени, придумали xRTML.

Главными ключевыми особенностями xRTML являются его простота в изучении, необходимость только одной строчки кода, плагины для систем блогов, такой как WordPress, API для серверных языков, кросс-браузерность и кросс-платформенность

— команда xRTML

Под катом более подробное описание
Total votes 71: ↑47 and ↓24 +23
Views 2K
Comments 40

Вопросы использования Intel Atom для embedded realtime задач

Intel corporate blog
После того, как архитектура Atom проявила себя в нетбуках, некоторые компании стали использовать Atom для Embedded Realtime применений. Делают промышленные контроллеры, гоняют на них PLC код.

Те же чипы, что и в нетбуке обычно на заводах не используют. Есть специальный платформы. Сначала был Crown Beach, сейчас начинает использоваться в дизайнах Queens Bay. Для IVI (автомобильный компьютер) есть своя платформа.

Естественно, удовлетворение realtime требований — необходимое условие. Об этом подробнее под катом.
Читать дальше →
Total votes 38: ↑30 and ↓8 +22
Views 10K
Comments 18

Worst case execution time на x86

Intel corporate blog
В прошлом посте я описал, как и зачем измеряется interrupt latency на платформе Atom.

Сегодня расскажу о том, почему один и тот же код с одними и теми же входными данными может исполняться разное время. Для некоторых realtime приложений это очень нежелательный эффект, с которым приходится бороться.
Читать дальше →
Total votes 26: ↑23 and ↓3 +20
Views 7.6K
Comments 12

Особенности работы кэша применительно к realtime на x86

Intel corporate blog
image В продолжение постов об использовании железа с х86 архитектурой в системах реального времени. Там я вкраце описал, насколько x86 удовлетворяют realtime требованиям, и что этому мешает.

Небольшое лирическое отступление. Системы реального времени — один из наименее известных двигателей компьютерного прогресса. Например, первый портативный компьютер был создан благодаря им. Сейчас почему-то считается, что первым серийным портативным компьютером был Osborn. На самом деле устройство на картинке выше было создано в Сименсе как cредство управления и программирования промышленной автоматизации за два года до Osborn. Переносные компьютеры этого семейства (Siemens Simatic) выпускаются и сейчас, хотя, конечно, железо много раз менялось.

Но перейдем к делу. В этом топике я подробнее остановлюсь на одном из факторов, который мешает предсказуемости времени выполнения realtime кода. Под катом будет не длинный, но нудноватый текст.
Читать дальше →
Total votes 43: ↑42 and ↓1 +41
Views 14K
Comments 25

Папоротники как метод распознавания образов

Image processing *
        Доброго времени суток!
        Как известно, одной из важных задач, решаемых обработкой изображений (помимо сброса пары кг и укрывания дефектов кожи на аватарках), является поиск и распознавание нужных нам объектов на сцене. Но этот процесс весьма сложный и ресурсоемкий, что делает его неприменимым в системах реального времени. Сегодня мы и поговорим, нельзя ли каким-то образом решить эту проблему и ускорить процесс поиска нужного объекта на сцене, с минимальными потерями в точности (а может, и без них вовсе). И вообще, причем тут папоротники?
PS
Традиционно много картинок.
Читать дальше →
Total votes 36: ↑35 and ↓1 +34
Views 8.1K
Comments 11

Аудио микшер из двух и более звуковых карт на realtime Linux и Reaper

Sound
Sandbox
Когда играешь в группе, надо где-то репетировать. Попробуем дома собрать свой микшер с эффектами из того, что есть под рукой. А под рукой у меня есть 2-х ядерный компьютер с встроенной и 2-мя дополнительными аудиокартами, ESI Juli@ и C-Media CM8738. Итого 6 каналов на запись.
Если достаточно 2-х каналов, то можно дальше не читать, потому как 2 канала можно смикшировать через Reaper под Windows с asio4all (или родными драйверами), будет играть без проблем. Вся сложность начинается, когда хочется из 3-х карточек сделать одну виртуальную и многоканальную. Через asio4all запись одновременно 6-ти каналов на приемлемом уровне качества (даже для репетиций) не получилась (из-за разного clock source на карточках, а также из-за редких подтормаживаний), поэтому и пришлось идти таким нелёгким путём.
Читать дальше →
Total votes 42: ↑37 and ↓5 +32
Views 10K
Comments 21

Realtime на вашем ресурсе за несколько минут

Website development *
Sandbox
Во время разработки игры мы столкнулись с необходимостью обеспечения максимального риалтайм обмена данных между пользователями, что повлекло за собой эксперименты с различными comet библиотеками.
Первый велосипед был построен на dklab realplexor, который, при очередной попытке его использования, как и ожидалось, нас подвел. Может у нас руки кривые, но добиться получения ивентов без задержек в 5-10-15 секунд у нас, к сожалению, не получилось.
Танцы с бубном продолжались долго, в результате чего мы решили остановиться на nginx_http_push_module, и потраченное время все же стоило того.
Читать дальше →
Total votes 34: ↑28 and ↓6 +22
Views 12K
Comments 11

Meteor — Новый способ создания приложений

Open source *JavaScript *Meteor.JS *
Meteor представляет собой набор новых технологий для быстрого создания высококачественных веб-приложений, с которым справятся не только опытные разработчики но даже и новички.

Чистый JavaScript.


Пишите всё приложение полностью на чистом JavaScript. Все API, доступны на клиенте и на сервере — в том числе API базы данных! — Так что один код может легко работать на клиенте и на сервере.

Живые обновления страниц.


Просто напишите ваши шаблоны. Они автоматически обновляются при изменении данных. Meteor поддерживает любой язык шаблонов.

Чистая, мощная синхронизация данных.


Пишите ваш код клиентской части, как если бы она была запущена на сервере, и имела прямой доступ к базе данных. Больше не придется получать данные через REST.
Читать дальше →
Total votes 80: ↑67 and ↓13 +54
Views 22K
Comments 71

x86 на производстве: high end промышленные контроллеры, Паскаль и вирусы

Intel corporate blog Abnormal programming *
Есть такой не очень корректный термин: PC based industrial automation. Я думаю, что он не совсем точен, так как никто, конечно, не подсоединяет станок к обычному персональному компьютеру. А то вдруг зависнет, и станок отрежет что-нибудь ненужное. Но рациональное зерно в этом термине есть — уже много лет среди управляющих устройств промышленной автоматизации встречаются устройства, напоминающие ПК.

Simatic S7Напоминающие, конечно, не внешне.

Как и в вашем ноутбуке, в контроллере может стоять процессор Core i5, обыкновенная DRAM (только обычно с ECC), SSD диск, обычный Ethernet. Процесс загрузки тоже не отличается — BIOS загружает операционку. Как правило, операционка — RTOS. Однако иногда бывает даже Windows. Причем не всегда это Windows Embedded Compact (бывшая CE). Используется даже Windows Embedded 7, а это полноценная семерка. (Линуксы тоже встречаются)

Читать дальше →
Total votes 31: ↑26 and ↓5 +21
Views 16K
Comments 8

Интерактивная история Apple на Пятой авеню в Unity3D

Unity3D *
Всегда была очень интересна тема использования 3D в вебе. Во-первых, это просто ново и необычно, а во-вторых, открывает массу новых возможностей.

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

image
Читать дальше →
Total votes 26: ↑13 and ↓13 0
Views 11K
Comments 21

Действительно ли у каждого ядра есть «свой собственный» кэш первого и второго уровней?

Intel corporate blog High performance *
У современных процессоров архитектуры Core i7 существует очевидный, документированный, но отчего-то не очень известный даже среди многих специалистов сценарий priority inversion. Его я опишу в этом посте. В нем есть код на С, три диаграммы, и некоторые подробности работы кэшей в процессорах архитектуры Core i7. Никаких покровов не срывается, вся информация давно общедоступна.

Priority inversion – ситуация, когда низкоприоритетный процесс может блокировать или замедлять высокоприоритетный. Обычно имеется в виду очередность доступа к исполнению на ядре для высокоприоритетного кода относительно низкоприоритетного. С этим должно неплохо справляться ядро ОС. Однако помимо вычислительных ядер, которые несложно распределять посредством affinity и MSI-X, в процессоре есть ресурсы, общие для всех задач – контроллер памяти, QPI, общий кэш третьего уровня, PCIe устройства. В вопросы PCIe я углубляться не буду, т.к. не являюсь экспертом в данной теме. Priority inversion на почве доступа к памяти и QPI я давно не наблюдал – пропускной способности современного многоканального контроллера как правило хватает и высокоприоритетным, и низкоприоритетным задачам. Остановлюсь на кэшах.
Читать дальше →
Total votes 59: ↑55 and ↓4 +51
Views 34K
Comments 31

Промышленные сети в контексте четвертой промышленной революции

Intel corporate blog Abnormal programming *

Сначала небольшое историческое отступление о том, что такое четвертая промышленная революция, анонсированная в прошлом году.
  • Появление промышленности. Первая промышленная революция произошла в начале XIX века и была связана с массовым переходом от использования мускульной силы к энергии парового двигателя. Ключевые технологии — паровой двигатель, фабрика. Появилась возможность массового производства, но его продукты стоили дорого.
  • Массовое производство. Вторая революция случилась в начале 20 века, и ознаменовала начало дешевого массового производства. Ключевые технологии — конвейер и Тейлоризм. Продукты массового производства подешевели на порядок.
  • Автоматизация. Третий переворот в промышленности произошел в 80-е годы. Станки с ЧПУ и роботы сделали современные фабрики практически безлюдными. (Аутсорсинг ручного труда в развивающиеся страны сгладил эту тенденцию.) Продукты массового производства подешевели еще на порядок (стало дешевле выкинуть, чем чинить).
  • Децентрализация. Революция четыре точка ноль происходит сейчас. Ключевая технология — конвергенция промышленности и IT, 3д принтеры. Появляется возможность производства мелкой серии или уникального продукта по цене, приближающейся к стоимости того же самого в крупной серии.
Это немецкий взгляд на 4 четыре фазы развития промышленности. Существует еще и американский, который не разделяет третью и четвертую фазы.

Мне кажется, во вступлении я написал слишком много общих фраз и слишком мало технического хардкора. Исправлю это под катом, описав некоторые технические детали о промышленных сетях и продуктах Intel, связанных с ними (+ еще одна картинка с роботом).
Читать дальше →
Total votes 37: ↑35 and ↓2 +33
Views 32K
Comments 16

Создание многопользовательской realtime игры на node.js

Game development *Node.JS *
Translation


Несколько месяцев назад мы с коллегами решили сделать многопользовательскую realtime игру, которая могла бы работать в вебе. Мы решили использовать node.js для нашего сервера. Это решение привело к очень убедительному успеху — наш сервер работал несколько месяцев без единого падения или перезагрузки процесса.

Мы решили написать нашу игру на node.js, потому что мы слышали много хорошего об этой платформе и очень хотели немного с ней поиграть. И это было потрясающе — мы очень быстро вошли в тему. Для node.js существует множество любопытных библиотек, способных решать абсолютно разные задачи. Побочным преимуществом использования node для серверной части является, собственно, javascript — очень простой в обращении язык. Это позволило нам сфокусироваться на проблемах, которые встречаются во всех realtime играх, без лишней суеты, ограничений и необходимости компилировать код, как это случается при использовании менее динамических языков.

Также node.js проявил себя как очень легковесный язык, даже в моменты пиковой нагрузки. Для нашей игры, процесс node.js использовал только один поток и потреблял всего около 3-4% CPU при одновременной работе 8-10 копий игры, каждая со своим собственным движком обнаружения столкновений.
Читать дальше →
Total votes 64: ↑59 and ↓5 +54
Views 52K
Comments 47

Совместный запуск Linux и baremetal OS

Intel corporate blog System Programming *
Недавно я выложил в сеть под BSD лицензией небольшой проект на 8 килострочек C кода. Официально это коллекция бенчмарков для моих клиентов — вендоров промавтоматики. Код очень специфический, и, на первый взгляд, малоприменим за пределами узкой области PLC и motion control. Но есть небольшая изюминка, на которой я не очень акцентировал внимание в статье на IDZ. В поставку бенчмарков включена baremetal среда для их исполнения. В этом посте я опишу, что это такое, и как ее можно использовать.
Читать дальше →
Total votes 31: ↑30 and ↓1 +29
Views 16K
Comments 13

Dremel. Как Google считает в real-time?

High performance *Big Data *
Dremelмасштабируемая система обработки запросов в режиме близком к режиму реального времени (near-real-time), предназначенная для анализа неизменяемых данных [4].

Авторы research paper [4] (среди которых, судя по всему, и наши соотечественники — Сергей Мельник и Андрей Губарев), в котором описываются базовые принципы и архитектура Dremel, заявляют, что система в силах:
  • выполнять агрегирующие запросы над боле чем над триллионом строк за секунды;
  • масштабируется на тысячи CPU;
  • предназначена для работы с петабайтами данных;
  • имеет тысячи пользователей внутри Google (дословно «at Google» [4]).

UPD1: ниже картинка-дежавю для внимательных читателей.


Читать дальше →
Total votes 28: ↑25 and ↓3 +22
Views 15K
Comments 9

Google Photon. Обработка данных со скоростью света*

High performance *Big Data *
Photon – масштабируемая, отказоустойчивая и географически распределенная система обработки потоковых данных в режиме реального времени. Система является внутренним продуктом Google и используется в Google Advertising System. Research paper [5], описывающие базовые принципы и архитектуру Photon, был представлен на научной конференции ACM SIGMOD в 2013 году.

В paper [5] заявлено, что пиковая нагрузка на систему может составлять миллионы событий в минуту со средней end-to-end задержкой менее 10 секунд.
* 'Скорость света' в заголовке — наглая ложь гипербола.


Читать дальше →
Total votes 39: ↑33 and ↓6 +27
Views 18K
Comments 14