Виртуализация уровня операционной системы в Linux (так, называемые контейнеры) опирается на изоляцию ресурсов и на управление их использованием. Пространства имен в Linux (linux namespaces) тот инструмент, который позволяет изолировать ресурсы друг от друга на уровне имен. Например, именами процессов являются их идентификаторы (PIDs), которые можно организовать таким образом, что процессы никогда не могут узнать о существовании друг друга. Об этом и других интересных вещах рассказывается в презентации.
Linux Control Groups (Контрольные группы) -- механизм, позволяющий управлять группами процессов в Linux и их ресурсами. Это мощный инструмент о котором знают далеко не все. Презентация дает краткий обзор.
Ceph является одной из мнообещающих архитектур для построения облачных хранилищ данных. В презентации приведены основные возможности, описана архитектура, дан краткий обзор команд CLI
Виртуализация уровня операционной системы в Linux (так, называемые контейнеры) опирается на изоляцию ресурсов и на управление их использованием. Пространства имен в Linux (linux namespaces) тот инструмент, который позволяет изолировать ресурсы друг от друга на уровне имен. Например, именами процессов являются их идентификаторы (PIDs), которые можно организовать таким образом, что процессы никогда не могут узнать о существовании друг друга. Об этом и других интересных вещах рассказывается в презентации.
Linux Control Groups (Контрольные группы) -- механизм, позволяющий управлять группами процессов в Linux и их ресурсами. Это мощный инструмент о котором знают далеко не все. Презентация дает краткий обзор.
Ceph является одной из мнообещающих архитектур для построения облачных хранилищ данных. В презентации приведены основные возможности, описана архитектура, дан краткий обзор команд CLI
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Ontico
+ Защита данных — это не "одна кнопка", нет годного любому единого решения. Задача всегда диктует выбор средств и решений.
+ RTO — Recovery Time Objective — максимальное время, за которое все ваши бизнес-задачи должны полностью быть восстановлены в работоспособное состояние после полной катастрофы ДЦ.
+ RPO — Recovery Point Objective — максимально приемлемый для ваших задач промежуток времени, за который вы готовы потерять данные.
+ Защита на уровне приложений. Приложение лучше всех знает, как защищать и реплицировать свои данные.
+ Асинхронная репликация — наилучший выход с точки зрения производительности, единственно возможный вариант в случае значительного географического разнесения дата-центров (сотни и более километров). Работает на уровне виртуальных машин.
+ Метро / "растянутые" кластеры и синхронная репликация — нулевой RPO, минимальный RTO, большие потери производительности и множество ограничений. Но иногда — единственный выход, если уровень приложения не умеет реплицировать данные.
+ Лучший подход — комбинация из репликации на уровне приложений, асинхронной и синхронной репликации средствами хранилища.
+ Что есть у Nutanix для решения подобных задач: DR (Async replication), Metro availability cluster, Timestream Backup.
+ Реализация решения с использованием Nutanix на примере FBI: крупнейший VDI в США. Защищенная, mission-critical инфраструктура на 70 тысяч виртуальных десктопов. Асинхронная репликация дата-центров на 1500 миль, защита данных от катастроф.
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
Оперативная память становится всё более дешёвой и производительной, что позволяет использовать её для хранения рабочего набора данных всё большего числа приложений. Хранение всех данных в оперативной памяти позволяет сделать их высоко доступными, а алгоритмы для работы с данными либо существенно упростить, либо ускорить, а иногда — и то, и другое.
Тезисы - http://www.highload.ru/2015/abstracts/1964.html
сравнение производительности СУБД MySQL и PostgreSQL для "типичной задачи стартапа".
Презентация сопровождала тестовую online-сессию и потому не содержит результатов тестирования.
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
Рутинные операции тестирования, сборки и развёртывания заставляют в нервном ожидании толстеть на кофепоинте, а частый релизный цикл создаёт лёгкое головокружение? Чтобы помочь вам сохранить тело подтянутым, а голову светлой, я расскажу об организации и особенностях непрерывной интеграции в Python-проектах на примере популярных инструментов.
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)Ontico
DNS — это одна из основополагающих служб и протоколов современного интернета, сервис, который должен всегда работать. Каждый раз, когда конечный пользователь обращается к какому-либо ресурсу глобальной паутины, он использует DNS, и чтобы этот самый первый шаг к проектам у наших клиентов не занимал много времени, мы построили свой DNS-хостинг с использованием Anycast-балансировки. Чуть позже мы применили этот метод для балансировки и повышения доступности рекурсивных серверов внутри наших дата-центров.
В своём докладе я расскажу о способах обеспечения непрерывного обслуживания DNS-запросов, подводных камнях использования anycast’а, постараюсь раскрыть актуальные проблемы обслуживания DNS-серверов и поведаю о современных тенденциях в мире DNS.
Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
Депрокрастинируем Docker: контейнеры здесь и сейчас (мастер-класс). Руслан Шарипов (7bits), Денис Нелюбин (Avelix).
При подходе к любому важному делу или к изучению интересной технологии очень важно сделать первый шаг. Этот шаг может быть совсем шажочком, небольшим движением вперёд, но, часто бывает, что именно такие шаги позволяют добиваться завершения дел до конца.
В последнее время часто наши коллеги и знакомые грозятся погуглить, изучить, разобраться, исследовать, ознакомиться, попробовать, начать использовать Docker, и постоянно откладывают это дело в долгий ящик. Кто-то боится новизны технологии, кто-то хочет задать тонну вопросов, а кто-то просто не понимает, нужна ли технология для него.
В рамках этого мастер класса мы сделаем первый шаг к тому, чтобы попробовать на практике то, что есть сейчас Docker. Мы рассмотрим, что у него под капотом: какие технологии стоят за популярным названием, как работает Docker изнутри, обсудим и научимся использовать на практике контейнеры, registry и инструменты, упрощающие процесс доставки и запуска контейнеров на серверах, обсудим и найдём решения для возникающих проблем, напишем тесты и научимся тестировать инфраструктуру в контейнерах.
Presented: 6th June, 2015
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)AvitoTech
Порой в процессе развития высоконагруженного проекта наступает момент, когда необходимо масштабирование. Возможно, ваш проект впервые упёрся в производительность железа (и таким образом перешёл в разряд высоконагруженных); возможно, это уже не первое масштабирование — не важно. Какие же проблемы могут возникнуть?
Во-первых, если вы увеличиваете количество бэкенд-серверов, и, соответственно, количество рабочих процессов, то с ростом количества одновременных клиентских подключений вырастают и накладные расходы на базах данных.
Во-вторых, достаточно быстро может кончиться ресурс in-memory баз данных. Потребуется создать (либо увеличить) кластер, а это каждый раз влечёт за собой необходимость модифицировать логику приложения.
В-третьих, чем больше серверов, тем больше вероятность, что один из них выйдет из строя. Поэтому неплохо задуматься о том, как обеспечить отказоустойчивость, а это, опять же, потребует модифицировать логику приложения.
В этом докладе я расскажу, как и какими инструментами можно легко решить все вышеперечисленные проблемы: уменьшить накладные расходы от большого количества подключений к базам данных, создать/модифицировать кластер БД прозрачно для приложения, а также прозрачно добавить устойчивость к падениям серверов БД.
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Ontico
HighLoad++ 2017
Зал Дели + Калькутта, 7 ноября, 15:00
Тезисы:
http://www.highload.ru/2017/abstracts/2940.html
Почти год назад я выступил с докладом 'Как и зачем создавать NginX-модуль - теория, практика, профит'. У меня не получилось рассказать обо всех возможностях Nginx и, уверяю вас, в этом докладе у меня это тоже не получится - тема слишком большая!
Сразу перейдем к делу. "Так что нового будет в этом докладе?" - спросите вы. В нем будут ответы на вопросы, на которые я не успел ответить в прошлом году, а именно:
- Как и зачем создавать upstream-модули?
...
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015OSLL
Nowadays the big challenge in simultaneous local-
ization and mapping (SLAM) of mobile robots is the creation
of efficient and robust algorithms. Significant Number of SLAM
algorithms rely on unique features or or use artificial landmarks
received from camera images. Feature points and landmarks
extraction from images have two significant drawbacks: CPU
consumption and weak robustness depending on environment
conditions. In this paper we consider performance issues for
landmark detection, introduce a new artificial landmark design
and fast algorithm for detecting and tracking them in arbitrary
images. Also we provide results of performance optimization for
different hardware platforms.
The document summarizes a seminar on the Geo2tag LBS platform. It includes an agenda covering an architecture overview, installation process, source code overview, JSON interface, client libraries, and practice with Qt. Key features of the current platform include basic geo-tagging, filtration, and load balancing. Planned features for 2012 include exporters and channel aggregation. The conceptual model diagram shows how data flows from devices through the HTTP/JSON interface to Lighttpd, PostgreSQL, and back.
Защита данных и датацентров от катастроф. Подход Nutanix / Максим Шапошников ...Ontico
+ Защита данных — это не "одна кнопка", нет годного любому единого решения. Задача всегда диктует выбор средств и решений.
+ RTO — Recovery Time Objective — максимальное время, за которое все ваши бизнес-задачи должны полностью быть восстановлены в работоспособное состояние после полной катастрофы ДЦ.
+ RPO — Recovery Point Objective — максимально приемлемый для ваших задач промежуток времени, за который вы готовы потерять данные.
+ Защита на уровне приложений. Приложение лучше всех знает, как защищать и реплицировать свои данные.
+ Асинхронная репликация — наилучший выход с точки зрения производительности, единственно возможный вариант в случае значительного географического разнесения дата-центров (сотни и более километров). Работает на уровне виртуальных машин.
+ Метро / "растянутые" кластеры и синхронная репликация — нулевой RPO, минимальный RTO, большие потери производительности и множество ограничений. Но иногда — единственный выход, если уровень приложения не умеет реплицировать данные.
+ Лучший подход — комбинация из репликации на уровне приложений, асинхронной и синхронной репликации средствами хранилища.
+ Что есть у Nutanix для решения подобных задач: DR (Async replication), Metro availability cluster, Timestream Backup.
+ Реализация решения с использованием Nutanix на примере FBI: крупнейший VDI в США. Защищенная, mission-critical инфраструктура на 70 тысяч виртуальных десктопов. Асинхронная репликация дата-центров на 1500 миль, защита данных от катастроф.
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...Ontico
Оперативная память становится всё более дешёвой и производительной, что позволяет использовать её для хранения рабочего набора данных всё большего числа приложений. Хранение всех данных в оперативной памяти позволяет сделать их высоко доступными, а алгоритмы для работы с данными либо существенно упростить, либо ускорить, а иногда — и то, и другое.
Тезисы - http://www.highload.ru/2015/abstracts/1964.html
сравнение производительности СУБД MySQL и PostgreSQL для "типичной задачи стартапа".
Презентация сопровождала тестовую online-сессию и потому не содержит результатов тестирования.
Непрерывная интеграция Python-проектов в ЯндексеAndrey Kazarinov
Рутинные операции тестирования, сборки и развёртывания заставляют в нервном ожидании толстеть на кофепоинте, а частый релизный цикл создаёт лёгкое головокружение? Чтобы помочь вам сохранить тело подтянутым, а голову светлой, я расскажу об организации и особенностях непрерывной интеграции в Python-проектах на примере популярных инструментов.
DNS в условиях хостинг-провайдера / Константин Новаковский (Selectel)Ontico
DNS — это одна из основополагающих служб и протоколов современного интернета, сервис, который должен всегда работать. Каждый раз, когда конечный пользователь обращается к какому-либо ресурсу глобальной паутины, он использует DNS, и чтобы этот самый первый шаг к проектам у наших клиентов не занимал много времени, мы построили свой DNS-хостинг с использованием Anycast-балансировки. Чуть позже мы применили этот метод для балансировки и повышения доступности рекурсивных серверов внутри наших дата-центров.
В своём докладе я расскажу о способах обеспечения непрерывного обслуживания DNS-запросов, подводных камнях использования anycast’а, постараюсь раскрыть актуальные проблемы обслуживания DNS-серверов и поведаю о современных тенденциях в мире DNS.
Депрокрастинируем Docker: контейнеры здесь и сейчасRuslan Sharipov
Депрокрастинируем Docker: контейнеры здесь и сейчас (мастер-класс). Руслан Шарипов (7bits), Денис Нелюбин (Avelix).
При подходе к любому важному делу или к изучению интересной технологии очень важно сделать первый шаг. Этот шаг может быть совсем шажочком, небольшим движением вперёд, но, часто бывает, что именно такие шаги позволяют добиваться завершения дел до конца.
В последнее время часто наши коллеги и знакомые грозятся погуглить, изучить, разобраться, исследовать, ознакомиться, попробовать, начать использовать Docker, и постоянно откладывают это дело в долгий ящик. Кто-то боится новизны технологии, кто-то хочет задать тонну вопросов, а кто-то просто не понимает, нужна ли технология для него.
В рамках этого мастер класса мы сделаем первый шаг к тому, чтобы попробовать на практике то, что есть сейчас Docker. Мы рассмотрим, что у него под капотом: какие технологии стоят за популярным названием, как работает Docker изнутри, обсудим и научимся использовать на практике контейнеры, registry и инструменты, упрощающие процесс доставки и запуска контейнеров на серверах, обсудим и найдём решения для возникающих проблем, напишем тесты и научимся тестировать инфраструктуру в контейнерах.
Presented: 6th June, 2015
"Кластеры баз данных: делаем сложные вещи просто" Андрей Тихонов (Avito)AvitoTech
Порой в процессе развития высоконагруженного проекта наступает момент, когда необходимо масштабирование. Возможно, ваш проект впервые упёрся в производительность железа (и таким образом перешёл в разряд высоконагруженных); возможно, это уже не первое масштабирование — не важно. Какие же проблемы могут возникнуть?
Во-первых, если вы увеличиваете количество бэкенд-серверов, и, соответственно, количество рабочих процессов, то с ростом количества одновременных клиентских подключений вырастают и накладные расходы на базах данных.
Во-вторых, достаточно быстро может кончиться ресурс in-memory баз данных. Потребуется создать (либо увеличить) кластер, а это каждый раз влечёт за собой необходимость модифицировать логику приложения.
В-третьих, чем больше серверов, тем больше вероятность, что один из них выйдет из строя. Поэтому неплохо задуматься о том, как обеспечить отказоустойчивость, а это, опять же, потребует модифицировать логику приложения.
В этом докладе я расскажу, как и какими инструментами можно легко решить все вышеперечисленные проблемы: уменьшить накладные расходы от большого количества подключений к базам данных, создать/модифицировать кластер БД прозрачно для приложения, а также прозрачно добавить устойчивость к падениям серверов БД.
Как и зачем создавать NginX-модуль — теория, практика, профит. Часть 2 / Васи...Ontico
HighLoad++ 2017
Зал Дели + Калькутта, 7 ноября, 15:00
Тезисы:
http://www.highload.ru/2017/abstracts/2940.html
Почти год назад я выступил с докладом 'Как и зачем создавать NginX-модуль - теория, практика, профит'. У меня не получилось рассказать обо всех возможностях Nginx и, уверяю вас, в этом докладе у меня это тоже не получится - тема слишком большая!
Сразу перейдем к делу. "Так что нового будет в этом докладе?" - спросите вы. В нем будут ответы на вопросы, на которые я не успел ответить в прошлом году, а именно:
- Как и зачем создавать upstream-модули?
...
Fast Artificial Landmark Detection for indoor mobile robots AIMAVIG'2015OSLL
Nowadays the big challenge in simultaneous local-
ization and mapping (SLAM) of mobile robots is the creation
of efficient and robust algorithms. Significant Number of SLAM
algorithms rely on unique features or or use artificial landmarks
received from camera images. Feature points and landmarks
extraction from images have two significant drawbacks: CPU
consumption and weak robustness depending on environment
conditions. In this paper we consider performance issues for
landmark detection, introduce a new artificial landmark design
and fast algorithm for detecting and tracking them in arbitrary
images. Also we provide results of performance optimization for
different hardware platforms.
The document summarizes a seminar on the Geo2tag LBS platform. It includes an agenda covering an architecture overview, installation process, source code overview, JSON interface, client libraries, and practice with Qt. Key features of the current platform include basic geo-tagging, filtration, and load balancing. Planned features for 2012 include exporters and channel aggregation. The conceptual model diagram shows how data flows from devices through the HTTP/JSON interface to Lighttpd, PostgreSQL, and back.
The document describes a source code analyzer tool that allows users to visualize code structure through objects and connections in a graph. It can define objects from text, files, or hex editors, connect objects, annotate objects, and support object filtering. The tool uses Qt, Source-highlight-qt, and SQLite and has features like external tool support, usability improvements, object grouping, performance analysis, and automatic graph generation. Contact information is provided for the Ubuntu app center, GitHub repository, and developers.
В презентации описан опыт создания робота с нуля на базе Raspberry Pi и недорогих актуаторов и сенсоров. Представлены примеры двух разработанных поколений роботов, детально описана одна из последних версий, собранная на базе деталей конструктора Trik. Описанная модель имеет дифференциальное управление (используются два мотора с энкодерами), ультразвуковой сенсор, камеру. Питание организовано от 11.1V батареи через UBEC. Прошивка робота реализована на базе ROS и состоит из нескольких модулей.
This document summarizes a presentation about improving mesh networking on One Laptop Per Child (OLPC) laptops. It discusses the goals of reducing routing overhead on OLPC networks and implementing solutions on the laptops. The presentation covers analyzing different types of ad-hoc routing, comparing industrial and open source routing implementations, and proposing a solution that uses restricting the routing area, dynamic optimization radius selection, and defining routing overhead externally. It also provides a timeline for developing and testing the solutions through simulations and contributing code to OLPC laptops.
The document describes an automated tool called MDBCI that is used to create multi-configuration testing environments for database servers and proxy applications like MariaDB and Maxscale. It allows defining configuration templates that can deploy virtual machines across different providers with various Linux distributions, database versions, and topologies. MDBCI uses tools like Vagrant, Terraform, Ansible, and Chef to automate the deployment and configuration of the test environments from human-readable definition files. Developers find it useful for debugging by allowing direct access to the test environment machines.
Massive open online courses (MOOCs) offer unlimited enrollment, 24/7 access to course materials, and automated testing to assess knowledge for software engineering and computer applications students. Upcoming improvements include adaptive teaching and analyzing student behavior through machine learning. MOOCs are provided through major platforms and can be supplemented with virtual labs for hands-on experience, with contacts available through the course coordinator.
Implementation of the new REST API for Open Source LBS-platform Geo2TagOSLL
The document discusses the implementation of a new REST API for the open source Geo2Tag LBS platform. The goals were to encourage 3rd party developers by simplifying the existing codebase and making the API more RESTful. This included rewriting the backend in Python with MongoDB, adding OAuth authorization, pagination support, and making all entities identifiable through URLs. It also describes adding plugins and data import capabilities to allow customization and ingesting open data through a new plugin system.
The document discusses implementing a mesh network between Nokia Internet Tablets and OLPC/XO devices. It outlines upgrading the devices' mesh drivers and kernels to enable the heterogeneous mesh network, including patching other needed drivers. It then describes testing the mesh network by establishing IP connectivity between devices located close together and using intermediate devices to route packets for those further apart.
The document describes an SVG Player tool for analyzing results from xml-based and svg-based network simulations. The SVG Player allows viewing a set of SVG images in sequential order, navigating images forwards and backwards, declaring and saving image sets, and playing sets in direct and reverse order. It was developed using C++, Qt Framework, and Qt Creator and loads SVG images asynchronously in a separate thread to prevent rendering delays. While intended for viewing NS2 simulation results, the SVG Player can be used to play any SVG image series.
E.Kalishenko, K.Krinkin, S.P.Shiva Prakash. Process Mining Approach for Traff...OSLL
Abstract. Short-time traffic flow prediction in particular systems will expedite discovering of an optimal path for packet transmitting in dynamic wireless networks. The main goal is to predict traffic overload while changing a network topology. Machine learning techniques and process mining can help analyze traffic produced by several moving nodes. Several related approaches are observed. Research framework structure is presented. The idea of process mining approach is proposed.
This document discusses connecting Nokia and OLPC devices in a mesh network. It describes patching the drivers for the Nokia N810 and OLPC XO laptop to enable mesh networking between their different wireless adapters. A proof of concept was able to connect two systems via mesh using different wireless adapters. However, fully enabling mesh between the Nokia and OLPC devices requires further work, as their existing drivers do not currently support mesh networking.
Короткое знакомство с Mongo; Коротко про GeoJson; Какие данные можно хранить в Mongo; Как хранить геоданные в Mongo; Как индексировать геоданные; Как выполнять запросы к данным (поиск объектов рядом/внутри/на пересечении с областями); Примеры использования геовозможностей MongoDb в Geo2Tag
This document summarizes an open source implementation of the ZigBee wireless networking standard. It discusses applications of ZigBee networks in home automation and commercial buildings. It provides an overview of ZigBee nodes, topologies, and stack architecture. The presentation outlines a work plan to make the protocol layers independent, define socket interfaces, and develop a user-space library. Progress on a Wireshark dissector and socket interfaces is also summarized.
Сейчас OpenStack на слуху, но детальных отзывов и описаний дизайна инфраструктуры все еще не много. Постараемся немного упростить задачу для тех, кто еще только планирует развертывание инфраструктуры виртуализации, и расскажем, как это делали мы в некоторых наших проектах:
погрузимся в нюансы реализации окружения OpenStack в боевой среде;
поговорим об отказоустойчивости;
рассмотрим варианты организации резервного копирования;
обратим внимание на конфигурацию «железок»: СХД и сети.
In this presentation, we will describe the SELinux mandatory access control (MAC) system and show how it can improve the security of a Linux system. With examples and command line references, this presentation will offer a complete view on SELinux and how it integrates with various components of a Linux operating system.
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...PavelKonotopov
In my talk, I will tell how we built a geographically distributed system of personal data storage based on Open Source software and PostgreSQL. The concept of the inCountry business is to provide customers with a ready-to-use infrastructure for personal data storage. Our business customers are ensured that their customer’s personal data is securely stored within their country’s borders. We wrote an API and SDK and built a variety of services. Our system complies with generally accepted security standards (SOC Type 1, Type 2, PCI DSS, etc.). We built our infrastructure with Consul, Nomad, and Vault, used PostgreSQL, ElasticSearch as a storage system, Nginx, Jenkins, Artifactory, other tools to automate management and deployment. We have assembled our development and management teams - DevOps, Security, Monitoring, and DBA. We use both cloud providers and bare-metal servers located in different regions of the world. Development of the system architecture and ensuring the stability of the infrastructure, consistent and secure operation of all its components is the main task facing our teams.
Леонид Васильев "Python в инфраструктуре поиска"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Леонид Васильев "Python в инфраструктуре поиска"
О докладе:
Описание архитектуры и реализации внутренних инструментов для управления поисковым кластером.
Что такое инфраструктура поиска? Какие задачи приходится решать? Какие инструменты для управления кластером используются в поиске? Как они устроены изнутри? Что можно посоветовать проектам с большой инфраструктурой? Какие существуют open-source аналоги?
Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
Порой в процессе развития высоконагруженного проекта наступает момент, когда необходимо масштабирование. Возможно, ваш проект впервые упёрся в производительность железа (и таким образом перешёл в разряд высоконагруженных); возможно, это уже не первое масштабирование — не важно. Какие же проблемы могут возникнуть?
Во-первых, если вы увеличиваете количество бэкенд-серверов, и, соответственно, количество рабочих процессов, то с ростом количества одновременных клиентских подключений вырастают и накладные расходы на базах данных.
Во-вторых, достаточно быстро может кончиться ресурс in-memory баз данных. Потребуется создать (либо увеличить) кластер, а это каждый раз влечёт за собой необходимость модифицировать логику приложения.
В-третьих, чем больше серверов, тем больше вероятность, что один из них выйдет из строя. Поэтому неплохо задуматься о том, как обеспечить отказоустойчивость, а это, опять же, потребует модифицировать логику приложения.
В этом докладе я расскажу, как и какими инструментами можно легко решить все вышеперечисленные проблемы: уменьшить накладные расходы от большого количества подключений к базам данных, создать/модифицировать кластер БД прозрачно для приложения, а также прозрачно добавить устойчивость к падениям серверов БД.
План доклада:
- Введение. Методы масштабирования БД: репликация, шардирование.
- Создаём шардированные кластеры in-memory БД прозрачно для приложений: Twemproxy, Redis-proxy, Mcrouter.
- Уменьшаем накладные расходы от большого количества одновременных подключений на PostgreSQL с помощью PgBouncer.
- Создаём шардированный кластер PostgreSQL с помощью PL/Proxy.
- Добавляем прозрачную для приложения отказо�
The document describes a SLAM constructor framework for ROS that aims to speed up SLAM research. It provides common components that can be assembled to implement SLAM algorithms. The current version uses laser scans and odometry, but ongoing work includes adding support for graph-based SLAM, extra sensors, and feature-based SLAM methods. The framework is open source on GitHub and implements some existing SLAM methods as a starting point.
Virtual-HSM: Virtualization of Hardware Security Modules in Linux ContainersOSLL
In the report the technology of virtual security modules will be presented. It rely on Linux containers. The report should be interesting for those people who are planning (or already using) could services for building IT-infrastructure.
This document discusses the implementation of the 802.11s Power Save Mode in the NS-3 network simulator. It begins with background on 802.11s mesh networking and power saving approaches. It describes the objectives of developing a routing algorithm based on 802.11s PSM aspects and implementing it in NS-3. Details are provided on extending NS-3's mesh and energy models to support this work. The document outlines next steps of creating a PSM infrastructure, implementing the routing algorithm, and testing the implementation.
SECR'13 Lightweight linux shared libraries profilingOSLL
This document summarizes a presentation on developing a lightweight profiler called ElfPerf for Linux embedded systems. ElfPerf allows profiling function calls in shared libraries without recompilation or relinking. It uses call redirection and wrapping mechanisms to intercept function calls and collect profiling statistics. ElfPerf works by modifying the dynamic linker (ld-linux.so) and dynamic loading library (libdl.so) to integrate the profiling library (libelfperf.so). This allows non-invasive profiling of dynamically linked and loaded functions on x86/x64 platforms.
The document discusses integrating the Smart-M3 and Geo2Tag platforms to develop technology for efficient geocoded smart spaces. The goal is to develop an integration architecture and agent to connect the platforms. Smart-M3 is an open source semantic web sharing platform, while Geo2Tag is a centralized geo-tagging database. A layered architecture is proposed with interfaces, integration, domain engines, and a data backend. Use cases include geotagging smart objects, spatial/temporal filtering, and providing extra geo-tagged information. A prototype has been developed without the cloud backend, which is still in progress along with testing and optimizations.
The document provides an overview of the Tizen Web Runtime and Device APIs. It describes new HTML5 elements, JavaScript APIs for drawing, media, offline web, drag and drop, file access, and geolocation. It then summarizes the main Tizen Device APIs, including communication, social, content, input/output, system, application, and user interface APIs. It provides examples for filters, applications, downloading content, filesystems, message ports, calendars, and device orientation.
This document summarizes a presentation about the Geo2tag platform for location-based services and geo-tagging. It introduces the architecture, features, and APIs of the Geo2tag system. Key points include an overview of the REST API and JSON interface, client libraries for Android and Qt, and demonstrations of functionality like user authentication, tag writing and loading, and channel management in the Android and Qt clients.
The document describes a RESTful JSON API for a geo-tagging application called Geo2tag. It outlines the goals of REST, defines JSON and its grammar, provides API usage examples using cURL, and details the API endpoints for user management, channel management, and working with geo tags. The API uses HTTP requests, JSON payloads, and authentication tokens to allow clients to interact with the Geo2tag service in a stateless and scalable way.
Introduction to geo-tagging and geo2tag platformOSLL
This document introduces location based services (LBS) and geo-tagging. It defines key terms like geo-tagging, tags, and channels. It describes the main features of a geo-tagging system for accessing, classifying, filtering, and processing massive amounts of tagged data. It outlines the architecture of the Geo2tag LBS platform, including its client/server design with session caching, query engine, and backend database. It provides development resources and describes the JSON/REST API for user management, channel management, and working with tags through functions like login, writeTag, and loadTags.
2. 2
Namespace vs CGroups
● Namespace –
механизм изоляции
и группировки
структур данных
ядра.
● Control groups –
механизм изоляции
ресурсов ядра
3. 3
Представление процесса в linux
include/linux/sched.h, include/linux/nsproxy.h
http://lxr.free-electrons.com/source/include/linux/sched.h#L1273
http://lxr.free-electrons.com/source/include/linux/nsproxy.h#L29
7. 7
Mount namespace
● mount namespace – копия дерева файловой
системы, ассоциированная с процессом
● Создание:
● Опции:
– распространение событий монтирования
– запрет перемонтирования
8. 8
Флаги mount
– bind – смонтировать существующее дерево
в другую точку (поддерево будет доступно в
обоих местах)
Распространение изменений:
–make-shared
–make-slave
–make-private
–make-unbindable
Подробнее:
Documentation/filesystems/sharedsubtree.txt
17. 17
IPC namespace
● Изоляция ресурсов IPC (System V IPC) –
очередей сообщений, разделяемая память...
● Создание:
18. 18
USER namespace
● Изоляция идентификаторов пользователей и групп
● Создание:
● Возможности:
– Предоставление привилегированных операций
непривилегированному пользователю внутри пространства
имен
– Отображение пользователей и групп
● /proc/sys/kernel/overflowuid
20. 20
Network namespace
● Изоляция сетевой конфигурации, интерфейсов, правил
марштуризации
● Создание:
Примеры (через ip):
– ip netns add netns1
– ip netns exec netns1 ip link list
– ip netns delete netns1
– ip netns exec netns1 ip link set dev lo up
– ip netns exec netns1 ping 127.0.0.1
21. 21
Control groups
● Подсистемы Linux (немного истории)
● Иерархия ресурсов и контрольные группы
● Обзор контроллеров
● Примеры
22. 22
Подсистема и контрольная группа
● Подсистема (subsystem) – модуль
предоставляющий возможности для группировки и
управления (ограничение, подсчет использования,...)
определенными ресурсами процессов.
● Контрольная группа (Control Group, cgroup) –
множество параметров, ассоциированное с одной
или более подсистем.
23. 23
Иерархии ресурсов
Процесс:
- память
- процессор
- устройства
- ввод-вывод
- ...
Память(100%):
- процессы пользователей (30%)
- работники
- QA (5%)
- разработчики (15%)
- гости
- системные (10%)
- архиватор
- анализаторы логов
- службы (50%)
- почта (10%)
- продуктовая БД (40%)
Устройства:
- /dev/*
-- /dev/sda
– /dev/snd
CPUs 0-15:
- продуктовые сервисы 0-8
- пользователи: 9-12
- службы: 13-15
Процесс:
- память
- процессор
- устройства
- ввод-вывод
- ...
Процесс:
- память
- процессор
- устройства
- ввод-вывод
- ...
24. 24
Подсистемы = контроллеры
● blkio – управление вводом выводом блочных устройств
● cpu – управление доступом к процессору
● cpuacc – отчеты по использованию процессора
● cpuset – приязка к процессорам и банкам памяти
● devices – доступ к устройствам
● freezer – останов/возобновление работы группы
● memory – ограничения и учет использования памяти
● net_cls – маркировка пакетов для контроллера трафика
25. 25
Файлы cgroup
● /proc/cgroups
● /proc/self/cgroup – группы процесса
● /sys/fs/cgroup/ (/cgroup) – корень иерархии
● */tasks – PIDs участников группы
● */cgroup.procs – список thread groups
● */notify_on_release – флаг вызова агента
разрушения (по-умолчанию 0)
● */release_agent – путь к агенту разрушения
27. 27
cgcreate: cоздание группы
● cgcreate
-t uid:gid – пользователи получающие права на
перемещение заданий в(из) группу
-a uid:gid – пользователи получающие права на
управление параметрами группы
-g список подсистем (контроллеров):путь
● Пример
cgcreate -t kkv:kkv -g memory,cpu:/mycgroup
28. 28
cgdelete: удаление группы
● cgdelete
-g список подсистем (контроллеров):путь
● Пример
cgdelete -g memory,cpu:/mycgroup
(*) при удалении группы, входящие в нее задачи
перемещаются в родительскую группу
29. 29
Перемещение процессов в группу
● cgclassify
-g список подсистем (контроллеров):путь
PID [PID PID …]
Примеры:
$cgclassify -g cpu:/mycgroup 6433 3662
$echo 6433 >/sys/fs/cgroup/cpu/mucgroup/tasks
30. 30
Выполнение процесса в группе
● cgexec
-g список подсистем (контроллеров):путь
имя_приложения
● Пример
cgexec -g memory:/mycgroup google-chrome
34. 34
Контроллер cpuset
● Назначение: управление привязкой процессоров и
памяти к процессам
● ←/→ cpuset. cpus – список привязанных процессоров
● ←/→ cpuset. mems – список привязанных процессоров
● ←/→ cpuset. cpu_exclusive – флаг эксклюзивного
использования процессора группой
● ←/→ cpuset.sched_load_balance +
cpuset.sched_relax_domain_level – управление
балансировкой нагрузки в группе
try: cat /proc/self/status
35. 35
cpuset.sched_relax_domain_level
● -1 – не менять внешние правила
● 0 – периодическая балансировка
● 1 – немедленная между потоками одного ядра
● 2 – немедленная между ядрами пакета
● 3 – немедленная в рамках узла
● 4 – немедленная между процессорами на NUMA
системе
● 5 – немедленная по всей системе
try: cat /proc/self/status
36. 36
Контроллер cpu
● Назначение: управление распределеним
нагрузки на процессоры
cpu.shares – доля использования процессора по
отношению к другим группам
cpu.rt_runtime_us – максимальноый период
монопольного использования процессора в
микросекундах
cpu.rt_period_us – максимальное время
ожидания процессора группой
37. 37
Контроллер cpuacct
● Назначение: сбор статистики по
использованию процессора
cpuacct.stat – число циклов процессора
cpuacct.usage – суммарное время
cpuacct.usage_percpu – число циклов
процессора, включая задания подгрупп
38. 38
Контроллер devices
● Назначение: управление доступом к устройствам
из группы
→devices.allow – устройства доступные группе
→devices.deny – запрещенные устройства в группе
←devices.list – просмотр устройств в whitelist
Примеры:
echo 'c 1:3 mr' > /sys/fs/cgroup/1/devices.allow
echo a > /sys/fs/cgroup/1/devices.deny
echo a > /sys/fs/cgroup/1/devices.allow
https://www.kernel.org/doc/Documentation/devices.txt
39. 39
Контроллер freezer
● Назначение: заморозка/разморозка исполнения
группы процессов
←/→freezer.state – состояние заморозки
● FROZEN — задания приостановлены
● FREEZING – в стадии приостановки (включая группы-потомки)
● THAWED – возобновление работы
● ←freezer.self_freezing собственное состояние
заморозки
● ←freezer.parent_freezing родительское состояние
состояние заморозки
40. 40
Контроллер memory
● Назначение: управление и мониторинг использования памяти
←memory.stat – получение статистики по использованию памяти
– total_ – текущая группа и подгруппы
←memory.[memsw.]usage_in_bytes – используемая память в байтах
(в подкачке)
←/→memory.[memsw.]limit_in_bytes
←memory.[memsw.].failcnt – счетчик числа достижений лимита
памяти
←/→memory.oom_control — флаг разрешения OOM-killer
(*) ←/→memory.soft_limit_in_bytes — флаг разрешения OOM-killer
см https://www.kernel.org/doc/Documentation/cgroups/memory.txt
41. 41
Контроллер blkio
● → blkio.weight – [100-1000], относительный вес ввода вывода в
группе
● → blkio.weight – [100-1000], относительный вес ввода вывода в
группе для конкретного устройства
● ← blkio.time – время доступа ввода-вывода в группе
● ← blkio.sectors – количество перемещенных между устройствами
секторов в группе
● ← blkio.io_service_bytes – количество перемещенных между
устройствами байт в группе
● ← blkio.io_service_time – время между выдачей запроса и его
завершением
● ← blkio.io_queued – число запросов в очереди ввода вывода группы
43. Миссия
● Docker:
– простой и лекговесный путь от модели к
реальности
– минимизация риска падения приложений при
переносе из окружения разработки в «боевые
условия»
– Ускорение code->test->deploy->use
46. Контейнер Docker
● Формат образа
● Набор стандартных операций
● Исполнительная среда
Метафора: контейнер содержит образ
программного обеспечения – груз, и над ним
возможны операции: создание, старт,
останов...