TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesIosif Itkin
Multi-Platform Approach to Reverse Debugging of Virtual Machines
Pavel Dovgalyuk, Maria Klimushenkova, Denis Dmitriev and Vladimir Makarov, Novgorod State University
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Ivan Kotlyar. PostgreSQL in web applicationsDrupalSib
Как устроен и работает PostgreSQL, его основных отличиях и преимуществах перед MySQL.
How PostgreSQL is arranged and worked, its main differences and advantages over MySQL.
TMPA-2015: Multi-Platform Approach to Reverse Debugging of Virtual MachinesIosif Itkin
Multi-Platform Approach to Reverse Debugging of Virtual Machines
Pavel Dovgalyuk, Maria Klimushenkova, Denis Dmitriev and Vladimir Makarov, Novgorod State University
12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg
Ivan Kotlyar. PostgreSQL in web applicationsDrupalSib
Как устроен и работает PostgreSQL, его основных отличиях и преимуществах перед MySQL.
How PostgreSQL is arranged and worked, its main differences and advantages over MySQL.
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...Daniel Podolsky
1. "Mia! MIA! What the hell happened?", или что случается с производительностью вашей РСУБД, когда ее индексы перестают помещаться в память
2. "Why the fuck didn't you tell us about that guy in the bathroom?", или почему мы гадим под себя, когда речь заходит о шардинге РСУБД
3. "Now the night of the fight, you may fell a slight sting, that's pride fuckin' wit ya. Fuck pride! ", или почему shared nothing
4. "And that's what we're gonna be, we're gonna be cool.", или с какими проблемами сталкиваются люди, которые собрались эксплуатировать shared-nothing cluster
5. "Mind if I try one of yours?", или наша методика тестирования
6. “The truth. Three well-dressed, slightly toasted, Mexicans.”, или отбор кандидатов на тестирование
7. "So you're gonna go out there, drink your drink, say "Goodnight, I've had a very lovely evening," go home, and jack off.", или краткий отчет о безумной неделе
8. "This sensual thing's goin' on that nobody's talkin about, but you know it and she knows it, fuckin' Marsellus knew it, and Antwan shoulda known fuckin' better.", или выводы
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайOntico
Набирает обороты мода на парадигму noBackend (см., например, http://nobackend.org/). Название не стоит понимать буквально: backend никуда не делся, просто фокус разработки — особенно на начальном этапе развития нового проекта — сильно смещается в сторону «клиентской части». Это очень понятно и закономерно в эпоху Mobile First и React Ecosystem с её новомодными GraphQL и React Native.
Появляется большой соблазн взять что-то понятное для хранения данных и уже «обвязанное» REST API, максимально отказаться от PHP/Python/Ruby/Java/etc, писать 80% кода «на стороне клиента», минимально заботясь о возне «на стороне сервера». У некоторых возникает и настоящая эйфория — чувство приятное, но очень опасное (прежде всего, если в команде нет сильного backend-опыта).
Этот доклад — компиляция опыта ряда проектов, написанных на React, React Native и Swift и переходящих на парадигму (или же сразу стартанувших с неё) noBackend за счёт PostgreSQL+PostgREST.
Мы обсудим важные вопросы, которые обязан задавать себе каждый, выбравший noBackend-подход (и не обязательно на связке Postgres+PostgREST): безопасность (аутентификация/авторизация; ограничение чтения и — особенно! — модификации «чужих» данных), производительность (нетривиальные запросы а-ля «свежий контент от тех, на кого я подписан»; компромисс между сетевой сложностью и CPU; защита от «домашнего» ddos — ситуации, когда свои же, родные «фронтендеры» кладут «бэкэнд»), масштабируемость и асинхронная обработка задач.
Задача-минимум (для всех): у каждого слушателя остаётся список must-check-вопросов для работы с noBackend-подходом.
Задача-максимум (для тех, кто с Postgres-опытом): разворачивание безопасного, высокопроизводительного и годного для быстрого развития REST API — сегодня же, в день док
Когда запускается любое приложение, то начинает выполняться поток, называемый главным потоком (main). От него порождаются дочерние потоки. Главный поток, как правило, является последним потоком, завершающим выполнение программы.
Потоки — средство, которое помогает организовать одновременное выполнение нескольких задач, каждой в независимом потоке. Потоки представляют собой экземпляры классов, каждый из которых запускается и функционирует самостоятельно, автономно (или относительно автономно) от главного поток. Хочу еще разграничить два понятия – поток и процесс. Процесс – это задача операционной системы. У него собственное адресное пространство. С ним может быть проассоциировано несколько потоков. Поток же – это гораздо более мелкая единица. Все потоки разделяют адресное пространство породившего их процесса и имеют доступ к одним данным.
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js GeeksLab Odessa
JS Lab2017, 25 марта, Одесса
Виталий Лебедев (Software Developer at DataArt)
Практические сложности при разработке на node.js
В этом докладе я расскажу, с какими непосредственными практическими сложностями можно встретиться при разработке на node.js, в силу тех или иных ограничений самого node.js, и какие для этих задач существуют возможные решения.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
Ваш сайт или другой проект приносит деньги только тогда, когда он работает.
Нельзя просто выложить код на серверы, залить схему в базу данных и делегировать домен.
Будем говорить о планировании отказоустойчивости и мониторинге проектов:
- оцениваем риски отказа различных компонентов;
- какие-то из вероятных проблем просто мониторим и планируем действия при сбоях;
- проблемы, которых можно избежать легко и дешево, закрываем сразу.
Расскажу на примерах о том, что всё всегда ломается, но с этим можно жить.
There are hundreds of JVM parameters and options out there. Here we are going to take a closer look at the internal structure of HotSpot VM while over-viewing memory spaces and different types of Garbage Collectors.
ночью через лес Stress-test пяти almost-the-same-functionality shared-nothin...Daniel Podolsky
1. "Mia! MIA! What the hell happened?", или что случается с производительностью вашей РСУБД, когда ее индексы перестают помещаться в память
2. "Why the fuck didn't you tell us about that guy in the bathroom?", или почему мы гадим под себя, когда речь заходит о шардинге РСУБД
3. "Now the night of the fight, you may fell a slight sting, that's pride fuckin' wit ya. Fuck pride! ", или почему shared nothing
4. "And that's what we're gonna be, we're gonna be cool.", или с какими проблемами сталкиваются люди, которые собрались эксплуатировать shared-nothing cluster
5. "Mind if I try one of yours?", или наша методика тестирования
6. “The truth. Three well-dressed, slightly toasted, Mexicans.”, или отбор кандидатов на тестирование
7. "So you're gonna go out there, drink your drink, say "Goodnight, I've had a very lovely evening," go home, and jack off.", или краткий отчет о безумной неделе
8. "This sensual thing's goin' on that nobody's talkin about, but you know it and she knows it, fuckin' Marsellus knew it, and Antwan shoulda known fuckin' better.", или выводы
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов НиколайOntico
Набирает обороты мода на парадигму noBackend (см., например, http://nobackend.org/). Название не стоит понимать буквально: backend никуда не делся, просто фокус разработки — особенно на начальном этапе развития нового проекта — сильно смещается в сторону «клиентской части». Это очень понятно и закономерно в эпоху Mobile First и React Ecosystem с её новомодными GraphQL и React Native.
Появляется большой соблазн взять что-то понятное для хранения данных и уже «обвязанное» REST API, максимально отказаться от PHP/Python/Ruby/Java/etc, писать 80% кода «на стороне клиента», минимально заботясь о возне «на стороне сервера». У некоторых возникает и настоящая эйфория — чувство приятное, но очень опасное (прежде всего, если в команде нет сильного backend-опыта).
Этот доклад — компиляция опыта ряда проектов, написанных на React, React Native и Swift и переходящих на парадигму (или же сразу стартанувших с неё) noBackend за счёт PostgreSQL+PostgREST.
Мы обсудим важные вопросы, которые обязан задавать себе каждый, выбравший noBackend-подход (и не обязательно на связке Postgres+PostgREST): безопасность (аутентификация/авторизация; ограничение чтения и — особенно! — модификации «чужих» данных), производительность (нетривиальные запросы а-ля «свежий контент от тех, на кого я подписан»; компромисс между сетевой сложностью и CPU; защита от «домашнего» ddos — ситуации, когда свои же, родные «фронтендеры» кладут «бэкэнд»), масштабируемость и асинхронная обработка задач.
Задача-минимум (для всех): у каждого слушателя остаётся список must-check-вопросов для работы с noBackend-подходом.
Задача-максимум (для тех, кто с Postgres-опытом): разворачивание безопасного, высокопроизводительного и годного для быстрого развития REST API — сегодня же, в день док
Когда запускается любое приложение, то начинает выполняться поток, называемый главным потоком (main). От него порождаются дочерние потоки. Главный поток, как правило, является последним потоком, завершающим выполнение программы.
Потоки — средство, которое помогает организовать одновременное выполнение нескольких задач, каждой в независимом потоке. Потоки представляют собой экземпляры классов, каждый из которых запускается и функционирует самостоятельно, автономно (или относительно автономно) от главного поток. Хочу еще разграничить два понятия – поток и процесс. Процесс – это задача операционной системы. У него собственное адресное пространство. С ним может быть проассоциировано несколько потоков. Поток же – это гораздо более мелкая единица. Все потоки разделяют адресное пространство породившего их процесса и имеют доступ к одним данным.
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js GeeksLab Odessa
JS Lab2017, 25 марта, Одесса
Виталий Лебедев (Software Developer at DataArt)
Практические сложности при разработке на node.js
В этом докладе я расскажу, с какими непосредственными практическими сложностями можно встретиться при разработке на node.js, в силу тех или иных ограничений самого node.js, и какие для этих задач существуют возможные решения.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
Ваш сайт или другой проект приносит деньги только тогда, когда он работает.
Нельзя просто выложить код на серверы, залить схему в базу данных и делегировать домен.
Будем говорить о планировании отказоустойчивости и мониторинге проектов:
- оцениваем риски отказа различных компонентов;
- какие-то из вероятных проблем просто мониторим и планируем действия при сбоях;
- проблемы, которых можно избежать легко и дешево, закрываем сразу.
Расскажу на примерах о том, что всё всегда ломается, но с этим можно жить.
There are hundreds of JVM parameters and options out there. Here we are going to take a closer look at the internal structure of HotSpot VM while over-viewing memory spaces and different types of Garbage Collectors.
Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.
Управление ресурсами в Linux и OpenVZ Кирилл Колышкин kir@openvz.org http://openvz.org/
Отчет - http://yourcmc.ru/wiki/RootConf_2009:_%D0%9E%D1%82%D1%87%D1%91%D1%82_%D0%92%D0%B8%D1%82%D0%B0%D0%BB%D0%B8%D1%8F_%D0%A4%D0%B8%D0%BB%D0%B8%D0%BF%D0%BF%D0%BE%D0%B2%D0%B0#.D0.A3.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D1.80.D0.B5.D1.81.D1.83.D1.80.D1.81.D0.B0.D0.BC.D0.B8_.D0.B2_Linux_.D0.B8_OpenVZ_.28.D0.B7.D0.B0.D1.87.D1.91.D1.82.21.29
Dennis Anikin - Tarantool Case Studies in Mail.Ru GroupMail.ru Group
Денис рассказал о трех кейсах использования Tarantool в Mail.Ru Group - это система аутентификации пользователей, система нотификаций для мобильных приложений и система показа рекламы. Во всех трех кейсах Tarantool является краеугольным камнем распределенной серверной инфраструктуры, которая обслуживает суммарно порядка 100 миллионов пользователей в месяц.
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
Tempesta FW — это Open Source гибрид Web-акселератора и файервола, специально разработанный для высокопроизводительной доставки контента вне зависимости от DDoS или наплыва посетителей.
В докладе будет рассказано про задачи, которые ставились при разработке проекта и пути их решения. Рассмотрим проблемы современных операционных систем в приложении к Web-стеку (система фильтрации, Web-сервер, application слой, БД), и как они решаются в Tempesta — некоторые уже решены, некоторые еще в процессе работы.
И самое главное — у нас появился рабочий прототип, и я расскажу про типовые примеры инсталляции, фичи и конфигурацию, а также покажу бенчмарки.
В докладе я расскажу, как выглядит World of Tanks Server (кластер кластеров) со всеми веб-сервисами, которые существуют вокруг. Какие узкие места с точки зрения отказоустойчивости есть внутри кластера, между кластерами, во взаимодействии с внешними веб-сервисами. Как мы решаем возникающие проблемы технически, процессно, проектно.
Как упростить жизнь системному администратору с помощью Python – Андрей Васил...Yandex
В наши времена облаков и Big Data трудно представить себе проект без хранилища данных. И сложностей с ним вроде бы нет — поставил, настроил и забыл. Но как быть, если хранилище живёт одновременно в нескольких дата-центрах, в нём лежит 4 петабайта данных, качество железа и сети оставляет желать лучшего, а количество системных администраторов ограничено?
В докладе я расскажу о нашем решении этой проблемы, которое мы назвали Mastermind, о том, как работает фантазия сисадминов, когда в их руки попадает удобный инструмент, и о том, с какими проблемами мы столкнулись в распределённой среде.
BigMemory - работа с сотнями миллионов бизнес-объектов / Дмитрий Хмаладзе (Ag...Ontico
РИТ++ 2017, HighLoad Junior
Зал Сингапур, 5 июня, 11:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2683.html
Наш доклад описывает способ использования больших объемов памяти, которые стали доступны в последние годы. К сожалению, эта память обычно остается незадействованной в управляемых средах исполнения в связи с принудительной сборкой мусора. Разработчики прибегают к внешним хранилищам данных ( i.e Memcached), что несет дополнительные расходы.
...
Live migrating a container: pros, cons and gotchas -- Pavel EmelyanovOpenVZ
Live migrating a container: pros, cons and gotchas
Monday, November 16 • 17:20 - 18:05
Pavel Emelyanov
Principal Engineer, Odin
Principal engineer at Odin Server Virtualization team, creator and maintainer of the CRIU project. Joined Parallels in 2004 as junior Linux kernel developer, later became kernel team leader. Now works on architecture of the Odin Server products. | | Pavel tweets at @xemulp.
http://dockerconeu2015.sched.org/event/62e6d2ea7380442a48fafaeee26c9842
В своей презентации мы на примере дистрибутива Linux расскажем об опыте организации процесса тестирования продукта, существенная часть (более 90%) кода которого создается независимыми от компании разработчиками.
https://www.youtube.com/watch?v=AstgrnE7_dI
Живая миграция контейнеров: плюсы, минусы, подводные камни -- Павел Емельянов
1. Живая миграция контейнеров:
плюсы, минусы, подводные камни
Живая миграция контейнеров:
плюсы, минусы, подводные камни
Павел Емельянов
Яндекс, Москва, 2015
2. Про что докладПро что доклад
• Почему надо мигрировать контейнеры
• Почему не надо мигрировать контейнеры
• Насколько сложно мигрировать контейнеры
2
3. Миграция в общих чретахМиграция в общих чретах
• Сохранить состояние
• Скопировать состояние
• Восстановить состояние
3
5. Почему надо мигрировать контейнерыПочему надо мигрировать контейнеры
• Эффектно
• Балансировка нагрузки
• Обновление ядра
– Можно не мигрировать на самом деле
• Замена оборудования
5
6. Почему не надо мигрировать контейнерыПочему не надо мигрировать контейнеры
6
7. Как не мигрировать контейнерыКак не мигрировать контейнеры
• Балансировка сетевого трафика
• Микросервисы
• Crash-driven обновления
• Плановые отключения горячей воды
7
8. На самом деле живая миграцияНа самом деле живая миграция
• Пересылку память необходимо исключить из состояния “заморожено”
• Пред-копирование памяти
• Пост-копирование памяти
8
9. Живая миграция в деталяхЖивая миграция в деталях
• Пред-копирование: сбор и пересылка памяти (несколько раз)
• Заморозка
• Сохранение состояния
• Копирование состояния
• Восстановление состояния
• Разморозка
• Пост-копирование: подкачка памяти по сети
9
13. Что мигрируемЧто мигрируем
• VM-ка
– Окружение (виртуальное железо, paravirt)
– CPU
– Память
• Контейнер
– Окружение (cgroups, namespaces)
– Процессы и другие животные
– Память
13
14. Сбор и пересылка памятиСбор и пересылка памяти
• VM-ка
– Вся память “в руках”
• Контейнер
– Память размазана по процессам, может быть разделена между ними
– Поэтому надо сначала собрать процессы (см. ниже)
●
А потом собрать память
14
15. ЗаморозкаЗаморозка
• VM-ка
– Suspend всех процессоров
• Контейнер
– Пройти по дереву (/proc), переловить процессы и остановить их
– Freeze cgroup помогает, но надо отдельно восстанавливать иерархию
15
16. Сохранение состоянияСохранение состояния
• VM-ка
– Состояние железа
●
Дерево, 300K, ~70 объектов
• Контейнер
– Состояние всех объектов
●
Граф, 160K, ~1000 объектов
●
Не для всех объектов есть адекватный API для чтения
16
18. Восстановление состоянияВосстановление состояния
• VM-ка
– Воссоздание памяти, запись состояния в устройства и CPU
• Контейнер
– В ядре: создание большого количества маленьких объектов
– В CRIU: то же самое, но с использованием не всегда удобного API
●
Требуется вычисление нетривиальной последовательности действий
18
19. РазморозкаРазморозка
• VM-ка
– Resume
• Контейнер
– Синхронизация восстановления всех процессов, чтобы не разморозить кого не следует
раньше времени
– SIGCONT по дереву
– “Оттаять” cgroup
19
20. Подкачка памяти по сетиПодкачка памяти по сети
• UserfaultFD от Андреа Арканджели
• VM-ка
– Merged into 4.2
• Контейнер
– Несовместная работа монитора и процесса – надо доделывать uffd
20