Table of Contents
News
Проект Еlfperf победил в конкурсе
Студенческий (CO-OP) проект компании EMC и Open Source and Linux Lab и стал победителем в конкурсе-конференции «Технологии Microsoft в теории и практике программирования 2013 (Новые подходы к разработке ПО на примере технологий Microsoft и EМС)», прошедшей 26 марта в Санкт-Петербургском Государственном Политехническом Университете.
Дипломами от компаний Microsoft и EMC был награжден проект участников Open Source and Linux Lab «Elfperf», выполненный совместно с компанией EMC. В рамках проекта был разработан метод неинвазивного измерения производительности программ для ОС Linux и реализован системный профилировщик. Ключевым преимуществом разработанного инструмента является исключительная гибкость применения – с его помощью возможны высокоточные измерения при минимальном вмешательстве в процесс функционирования исследуемого ПО и ОС. Данные качества достигаются путем интеграции кода профилировщика внутрь динамического компоновщика ld-linux.so (dynamic linker) и библиотеки динамической загрузки libdl.so “на лету”. Подобный метод позволяет осуществлять перехват адресов профилируемых функций на этапе проведения релокаций (relocation) или динамической загрузки. Профилируемая программа вместо адресов реальных функций получает адреса инструментального кода, который проводит измерение производительности, не затрагивая код приложения и профилируемых функций.
Другой особенностью профилировщика Elfperf является полная поддержка процессорных архитектур x86 и x64. Помимо вызовов функций, следующих соглашениям о вызовах cdecl и thiscall для обеих архитектур, Elfperf также позволяет профилировать функции, которые были оптимизированы на этапе компиляции.
Проект «Elfperf» был разработан участниками Open Source and Linux Lab – студентом 4 курса СПбГЭТУ “ЛЭТИ” Рябиковым Э.М. и студентом 5 курса СПБГПУ Заславским М.М. в сотрудничестве с программистами компании EMC.
На текущий момент работа проекта была протестирована на дистрибутиве Debian Stable x86/x64 и eglibc. Ведутся работы по переносу проекта на другие дистрибутивы Linux и glibc. Портирование требует внесения изменений в исходный код профилировщика и тщательного тестирования. Параллельно с этим, проверяется работа инструмента «Elfperf» на реальных проектах компании EMC.
Open Source and Linux это сообщество студентов, преподавателей и профессиональных разработчиков, которые стремятся постоянно оттачивать свои умения в области разработки программного обеспечения, освоения новых технологий и получения знаний в высокотехнологичных областях. В деятельности лаборатории принимают участие студенты и аспиранты различных ВУЗов – СПбГЭТУ “ЛЭТИ”, СПБГПУ, СПБАУ РАН. Также, лаборатория очень тестно сотрудничает с Российско-Финской программой университетского сотрудничества в области телекоммуникаций FRUCT. Ведутся совместные проекты с крупнейшими IT-компаниями Санкт-Петербурга. В область интересов лаборатории входит свободное ПО, энергосбережение в мобильных сетях, Smart Spaces, мобильные геосервисы, технологии виртуализации, высокопроизводительные вычисления, разработки на Qt.
Научный руководитель проекта – доцент кафедры математического обеспечения ЭВМ, Санкт-Петербургского электротехнического университета “ЛЭТИ”, кандидат технических наук, лидер Open Source and Linux Lab – Кринкин К. В.
- Подробное описание проекта - http://redmine.osll.spb.ru/projects/epat/wiki/_Architecture_description_
- Страница проекта на Github - https://github.com/OSLL/elfperf
Семинар: профилирование динамических библиотек в linux
28 марта 2013 состоится очередной технологический семинар посвященный методу профилирования динамических библиотек в linux
Аннотация
В докладе будет рассказываться об Elfperf - свободном инструменте для неивазивного(“безболезненного”) профилирования разделяемых библиотек, разработанного в рамках студенческого проекта компании ЕМС.
В первой части будет дана постановка задачи и описан принцип работы динамического загрузчка (ld-linux.so):
- какие бывают профилировщики;
- что такое неинвазивное профилирование и в каких случаях оно может потребоваться;
- описание процессов релокации, динамического связывания/загрузки функций из разделяемых библиотек;
- исходники ld-linux.so и libdl.so, особенности, на которые необходимо обратить внимание.
Во второй части доклада будет дано конкретное описание процесса решения задачи неинвазивного профилирования:
- описана архитектура профилировщика;
- рассказано про механизм “оберток” и “перенаправителей”, позволяющий собирать статистику о вызовах функций из разделяемых библиотек;
- взаимодействие разнородных компонентов профилировщика через разделяемую память;
- описан подход к измерению времени;
Также планируется демонстрация работы Elfperf в полевых условиях.
О докладчиках
Эдуард Рябиков, студент 4-го курса кафедры МО ЭВМ СПбГЭТУ “ЛЭТИ”. Является постоянным участником лаборатории OSLL и активным членом сообщества FRUCT. Занимается разработкой для Linux, Android/iOS и геоинформационных сервисов. Проекты: Elfperf, geo2tag (Server-side platform for LBS services), Mhb for Android/iOS (Medical handbook for mobile devices) Интересы: Linux, C/C++.
Марк Заславский, студент 5 курса Института Информационных Технологий и Управления СПБГПУ, сотрудник FRUCT. В рамках профессиональной деятельности занимался кросс-платформенной разработкой под различные операционные системы (Maemo, MeeGo, Android, iOS, Debian, CentOS), разработкой и внедрением систем непрерывной интеграции, созданием и сборкой deb и rpm пакетов для кроссплатформенных проектов, оптимизацией быстродействия существующих решений.
Участник проектов
- разработка и оптимизация производительности платформы Geo2Tag (первая Open-Source платформа для location-based services),
- разработка Elfperf (Open-Source профилировщик для разделяемых библиотек в Linux),
- Автоматизация тестирования OpenSSL для платформы MeeGo,
- Mhb for Android/iOS (Medical handbook for mobile devices).
- Победитель конкурса статей об операционной системе MeeGo.
- Обладатель авторского свидетельства компонентов платформы Geo2Tag.
Профессиональные интересы - Linux-разработка, кроссплатформенная разработка.
Информация
- Место проведения: СПбАУ, НОЦ, ауд. 206 Время: 28/03/2013, 18 часов.
- Схема прохода: http://spbau.ru/main/contacts
- Контактный телефон: +7 921 305 20 83 (Кринкин Кирилл)
- Twitter: @setalks
- Google group: se-talks@googlegroups.com
Приглашаются все желающие. Для прохода в здание АУ отправьте заявку не позднее чем за 4 часа через форму регистрации.
Семинар: разработка игровых движков
14 марта 2013 состоится очередной технологический семинар посвященный разработке игровых движков
Аннотация
Семинар будет посвящен индустрии компьютерных игр и основным проблемам и технологиям с которыми приходится иметь дело профессионалам в этой области. Краткий план семинара:
- Самопрезентация докладчика.
- Игровая индустрия, как самостоятельная и достаточная весомая часть мирового IT (некоторые метрики).
- Игры, какие бывают (блокбастеры, казуальные, независимые), модели взаимодействия с игроком и монетизации (сюжетные, massive онлайн, сессионные, f2p и т.д.).
- Что представляет из собой структура крупной геймдев компании. Чем крупные отличаются от мелких.
- Какие этапы проходит игра от идеи до позиции на виртуальном прилавке (какие роли есть в команде, кто за что отвечает, жизненный цикл приложения).
- Какое место занимают разработчики. Какие бывают основные роли разработчиков и за что они отвечают (какой род задач решают).
- Особенности работы и разработки в сфере геймдев. Разработка в постоянно меняющихся условиях. Какие задачи приходится им решать, на примере задачи реверсивной баллистики и feature groups.
- Понятие движок, как технологическое сердце любой игры. Небольшой обзор популярных свободных и проприетарных движков (сходства и различия).
- Чем отличаются движки для “больших” и “маленьких” игр, из каких основных компонентов они состоят, какие требования к ним выдвигаются. Особенности разработки кроссплатформерного движка.
- Как сделать свою первую игру? С чего начать? Как придумать идею? Показать что любой программист в одиночку может сделать что-то действительно стоющее.
О докладчике
Андрей Коротков – в течение 12 лет интересуется разработкой игр, начинал еще с ZX Spectrum. За этот период, в качестве хобби, было создано немало независимых игр, некоторые из которых издавались, а некоторые - получали различные награды, например от Independent Game Developers Contest. Также в качестве хобби занимается разработкой открытого кроссплатформерного игрового движка.
Работал над большими коммерческими проектами, например в компании Wargaming (самая крупная и успешная геймдев компания на постсоветском пространстве), а также над околоигровыми проектами связанными с интерактивной 3D графикой реального времени (например 3D геоинформационная система, разработки в области дополненной реальности и машинного зрения).
На данный момент занимается продюсированием игровых и околоигровых проектов в компании 2Nova Interactive. Постоянно находится в курсе всего самого интересного в этой теме.
Информация
- Место проведения: СПбАУ, НОЦ, ауд. 206 Время: 14/03/2013, 18 часов.
- Схема прохода: http://spbau.ru/main/contacts
- Контактный телефон: +7 921 305 20 83 (Кринкин Кирилл)
- Twitter: @setalks
- Google group: se-talks@googlegroups.com
Приглашаются все желающие. Для прохода в здание АУ отправьте заявку не позднее чем за 4 часа через форму регистрации.
Geo2tag на втором месте в рейтинге открытых решений LBS
В текущем мировом рейтинге инфраструктурных решений для гео-контекстных сервисов (http://craftkeys.com/open/open-source-location-based-services/) платформа Geo2tag LBS уже занимает второе место. Команда geo2tag уверена, что сразу после внедрения новых возможностей, таких как, адаптация многосервисной поддержки на сервере и агрегация каналов, которые сейчас находятся в стадии тестирования и готовятся к релизу, уже в начале 2013 года платформа Geo2Tag выйдет на первое место.
Семинар: map-reduce собранный на коленке
11 декабря 2012 состоится очередной технологический семинар посвященный технологии Map-Reduce
Аннотация
Будет рассказано о возможностях обработки больших объемов данных с использованием различных реализаций Map-Reduce.
- что вообще такое Map-Reduce и какие задачи им можно решать;
- как быстро запрототипировать Map-Reduce и проверить работоспособность программы на своем лаптопе;
- как развернуть свой небольшой кластер на нескольких машинах;
- что делать, если своих вычислительных мощностей не хватает;
Будет не очень много слайдов и ощутимое количество кода на Python и Java. Экспертных знаний этих языков не требуется, но будет прекрасно, если слушатели будут понимать основные конструкции.
О докладчике
Дмитрий Барашев, доцент кафедры информатики математико-механического факультета СПбГУ. В течении последних шести лет занимался обработкой больших объемов данных для разных приложений в Google.
Информация
- Место проведения: СПбАУ, НОЦ, ауд. 206 Время: 11/12/2012, 18 часов.
- Схема прохода: http://spbau.ru/main/contacts
- Контактный телефон: +7 921 305 20 83 (Кринкин Кирилл)
- Twitter: @setalks
- Google group: se-talks@googlegroups.com
Приглашаются все желающие. Для прохода в здание АУ отправьте заявку не позднее чем за 4 часа через форму регистрации.
Семинар "Реализация многопоточности в java"
6 декабря 2012 в 18.00 часов в Санкт-Петербургском Академическом университете (СПбАУ) состоится технологический семинар, посвященный обзору современного состояния средств поддержки многопоточности в java.
Основные тезисы:
- Из-за технических ограничений сложно наращивать частоту процессоров, но зато можно сделать много ядер;
- Существует много задач, которые допускают параллельное исполнение каких-то из своих подзадач;
- Работа с памятью стала медленнее, чем выполнение инструкций процессора, в результате чего потребовались кеши;
- У подзадач могут быть какие-то общие данные, что влечёт необходимость обеспечивать когерентность кешей
- Есть trade-off между производительностью и соответствием того, как исполняется код, интуитивным предположениям;
- Например, reordering-и, появляющиеся в MESI при добавлении invalidate queue и write buffers;
- Разработчики процессоров не могут знать заранее, когда reordering допустим, а когда нет. Это должны решать разработчики софта. Понятие memory model. Пример с memory barriers в терминах MESI.
- Причём тут java? Текущие абстракции.
- Зачем нужны более высокоуровневые инструменты из JMM: атомарность, взаимное исключение, синхронизация потоков.
О докладчике
Глеб Смирнов. Увлекается многопоточностью в java с 2009 года. Вёл разработку серверных приложений с высокой степенью параллелизма, включая платформу для высокочастотной алгоритмической торговли. Последние полтора года работает в Яндексе.
Участие в семинаре бесплатное, но требуется предварительная регистрация
Ресурсы:
- Twitter: @setalks
- Google group: se-talks@googlegroups.com
Семинар Unicode и языковые системы
29.11.12 В СПбАУ пройдет технологический семинар на тему “Семинар Unicode и языковые системы”
Аннотация
В современной программной индустрии в условиях глобализации экономики локализация и интернационализация приложений становится все более важной. На семинаре планируется рассказ об одном из “китов”, на которых стоит интернационализация приложений - стандарте Юникод. Будет небольшой экскурс в историю, описание основ стандарта: набора символов, кодировок UTF, сортировки с учетом языковых особенностей; более глубокие понятия, такие как диакритические знаки, лигатуры, письмо справа налево, иероглифическое письмо и их реализация в Юникоде будут показаны на примере языков: французского, арабского, корейского, китайского, японского, хинди. Также вкратце будет расказано о смежных стандартах: унификация Han, GB 18030.
О докладчике
Денис Киряев Ведущий инженер в компании EMC, подразделение Captiva. Впервые заинтересовался Юникодом в университете на курсе теории языков программирования; более глубокие знания получил на 31-й международной конференции по Юникоду в Сан-Хосе, Калифорния. Проектировал и участвовал в реализации поддержки Юникода в основном продукте подразделения EMC Captiva - InputAccel.
- Twitter: @setalks
- Google group: se-talks@googlegroups.com
Контейнерная виртуализация Android
2 ноября на SECR'2012 представлен доклад Е.Баталов, А.Карташов, К.Кринкин Технология контейнерной виртуализации для платформы Android
Виртуализация широко применяется для настольных и серверных решений и начинает завоевывать область мобильных устройств. В статье рассматривается реализация контейнерной виртуализации для устройств на базе Android. Рассмотрены аналоги (Cells, VmWare Horizon Mobile, TrustDroid, EmbeddedXen). Для построения контейнеров применен механизм linux containers (LXC).
Предлагается оригинальный подход к виртуализации телефонии, аудио- и видео- устройств. Предлагаются политики для маршрутизации входящих и исходящих вызовов, а также схема мультиплексирования звука. Вводится понятие активного контейнера Android, который по-умолчанию, принимает весь пользовательский ввод, осуществляет вывод графики на видимую область экрана, принимает входящие и отправляет исходящие сообщения и звонки. Неактивные контейнеры выполняют приложения в фоне, звук может быть микширован. Пользователю предоствляется интерфейс переключения активного контейнера. Описывается стратегия тестирования производительности и проводится анализ потребляемых ресурсов.
Virtualization is widely used for desktop and server systems and in several years it comes into mobile world. The paper suggests approach for container virtualization for Android operating system. Analogues (like Cells, VmWare Horizon Mobile, TrustDroid, EmbeddedXen) are described, and their advantages and disadvantages are considered. Approach suggested by authors is based on linux containers (LXC) mechanism. It allows virtualization of process identifiers, network resources and also can be used for resource management on top of cgroups. For resource management in multi-container environment new supervisor (AndCont) has been developed. Also suggested solution includes modified Android binder driver for inter-process communications; components for multiplexing user input; GPU and frame buffer virtualization scheme; proxy-based solution for in-coming and out-coming messages and phone calls. Active container is introduced to define Android OS instance which is holding user input queue and able to use physical screen for output graphical content. Other (non-active) Android instances do output into virtual buffers which are not visible for users and they are able to run applications in background. Special proxy-based layer has been developed for telephony virtualization. It includes wrapper around native (proprietary) modules for radio-interface features management and set of rules which are defining calls routing scheme. Sound can be mixed from several applications from different containers but during a call audio tract will be monopolized by telephony. On the power management side in paper suggested two solutions: wake_lock() and wake_unlock() virtualization too keep sleeping state for each container; wait_for_fb_sleep event emulation for rendering interface notification to avoid user interface updating. Most of fixes in regular android drivers (e.g. Alarm, Audio etc) have been made by adding unique state context for each container and adding device wide event and data multiplexor. In paper performance testing strategy and scenarios are described; results are discussed. Adding containers has low impact on battery power consumption but approach should be improved for better memory usage. It’s possible to run two Android with traditional applications (games, players) but set of devices is limited for that. Performance tuning will be continued by authors.
Семинары по технологиям разработки
Не секрет, что настоящего специалиста, программиста-профессионала от студента отличает прежде всего опыт. Набраться этого опыта можно двумя способами: участвуя в разработке реальных программных продуктов и общаясь с профессионалами. Первый способ останется за кадром, а общение с профессионалами — тема для этого поста.
С пониманием необходимости живого общения, начиная с 2010 года была создана традиция приглашать разработчиков из компаний города Санкт-Петербурга на встречи со студентами. Сейчас общение проходит на территории Академического университета в виде семинара или мастер-класса, где приглашенные гости рассказывают о том с какими технологиями им приходится иметь дело, в каких проектах они участвуют, или (что весьма нередко) устраивают мастер класс.
За немногим более чем год, в университете побывали специалисты из Яндекс, Oracle/Sun, JetBrains, Google, EMC, Лаборатории Касперского и других не менее известных компаний города. Было рассмотрено множестов тем, как обзорных, например о том, что такое облачные вычисления и какие есть стандарты в этой области, так и сугубо практических, таких как мастер классы по написанию юнит-тестов или, например, подробный рассказ о технологиях отладки сложных linux систем с разбором реальных ситуаций. С полным списоком семинаров можно ознакомиться на сайте Академического университета в разделе в разделе Семинары, там же можно скачать слайды многих презентаций.
В этом семестре, также запланировано много гостей, но начнется все 11 октября с рассказа о мощном наборе средств кросс-платформенной сборки программ linux (и не только) — autotools. Ограничусь ссылкой на анонс (внизу). Мероприятия открытые и каждый может присутствовать после регистрации.
Если у вас есть идеи для тем семинаров, которые Вы хотели бы услышать или, наоборот, есть с чем выступить перед студентами — то, пожалуйста, пишите в этом топике или лично. Такое общение полезно всем — и профессионалам и студентам.
Ссылки по теме: http://spbau.ru Анонсы семинаров: http://mit.spbau.ru/taxonomy/term/22