Pull to refresh
0
0
Dmitry @abvgd

User

Send message

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Reading time8 min
Views86K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →
Total votes 113: ↑112 and ↓1+111
Comments77

Работа с Ansible — задачи с несколькими неизвестными

Reading time5 min
Views18K
Гуглил информацию по Ansible, наткнулся на статью на Хабре. Прочитал и сильно удивился: ведь можно сделать красивее! Если вы заинтересованы — добро пожаловать под кат!
Углубиться
Total votes 14: ↑13 and ↓1+12
Comments6

Состояние экосистемы Common Lisp на 2015 год

Reading time10 min
Views18K
От переводчика:
Мне часто доводилось слышать, что в Common Lisp библиотеки из 80ых, и других вобще нет, а множество его пользователей представляет собой 3.5 профессоров, работающих над искусственным интеллектом в катакомбах DARPA и не имеющих даже близкого представления о повседневных задач рядового программиста. Данная статья хорошо показывает, что хоть вы и можете наткнуться на старые библиотеки, но использовать стоит лишь современные аналоги, что существующие библиотеки развиваются и постоянно появляются новые.

Автор этой статьи, Fernando Borretti, является активным контрибьютором в экосистему Common Lisp'а, автор более 30 библиотек, большинство из которых предназначены для веб-разработки.

Проходящий мимо читатель получит общее представление о состоянии дел в Common Lisp, интересующийся сможет понять что ему необходимо чтобы попробовать написать код и какие библиотеки взять для пробной задачки, а опытный разработчик узнает о самых последних разработках, поймет, библиотеками в каких направлениях он сможет помочь сообществу и получит несколько советов о том, как отвечать на вопросы новичков, чтобы не убить в них интерес к этой замечательной технологии. Поехали!


Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments12

Искусство командной строки

Reading time15 min
Views249K


Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.

Enjoy!
Total votes 127: ↑122 and ↓5+117
Comments143

Распознаем штрихкоды на изображениях с помощью Python и OpenCV

Reading time6 min
Views86K
От переводчика: мы в компании Энтерра очень любим алгоритмы компьютерного зрения. Работаем чаще всего с OpenCv. Время от времени нам пишут разные разработчики с вопросами: «А как лучше начать работать с OpenCv?» или «Какую интересную задачу можно просто решить с помощью OpenCv?» В связи с чем мы решили перевести очень хорошую статью, которая будет полезна всем, кто интересуется компьютерным зрением.



Черная Пятница близко.

Толпы злых покупателей. Рой одинаковых теток среднего возраста, готовых сожрать практически всё, что угодно, в ближайшем супермаркете — главное, что со скидкой 75%. Они выстроятся в очереди перед дверьми магазинов в полночь Дня благодарения. Они будут ломиться внутрь, стучать в запертые двери кулаками и головами, пока не сплющат друг друга и не разобьют руки в кровь, став похожими на зомби из «28 дней спустя». Но вместо человеческой плоти, они жаждут удовлетворить инстинкт покупателя. Их боевые кличи о скидках и распродажах достигают небес. А их громовая поступь способна привести к землетрясению на Великой Равнине.

Естественно, от СМИ помощи не жди — они будут смаковать каждую подробность. От обмороженных семейств, ночевавших в палатке на морозе, до старой леди, растоптанной охотниками за скидкой в момент, когда открылись двери. Что-то похожее случилось с галлимимусом в «Парке Юрского периода». А она просто хотела купить Halo для девятилетнего внука Тимми, чьи родители забыли это сделать в прошлом году. В Wal-Mart. Во время Черной Пятницы.

И я обязан спросить: весь этот хаос и бедлам стоят того?

Чёрт возьми, нет!

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

Просто представьте, как глупо вы будете выглядеть, стоя в очереди в ожидании свободной кассы – только для того, чтобы после сканирования штрихкода последнего сезона «Игры Престолов» выяснить, что в Target его можно купить на 5 долларов дешевле?

Собственно, далее я покажу, как можно обнаружить штрихкод на изображении, используя только Python и OpenCV.
Читать дальше →
Total votes 55: ↑53 and ↓2+51
Comments26

Полная энергетическая автономия или как выжить с солнечными батареями в глубинке (часть 5. Ловец Солнца)

Reading time7 min
Views78K


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

«Мопед не мой», но для понимания принципа действия очень наглядно.

Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments24

Полная энергетическая автономия или как выжить с солнечными батареями в глубинке (часть 6. Дачник Edition)

Reading time7 min
Views83K


Глядя на Яндекс.Карты в пятницу вечером, можно с уверенностью утверждать, что дачный сезон начался. В преддверии майских праздников это чувствуется особенно остро. А на даче главное что? Нет, не рассада и соседская газонокосилка. На даче главное — покой. Этот покой поможет обеспечить заранее грамотно спланированная энергосистема, зарезервированная от поломок сетей или вообще автономная. В этой статье я, как и обещал, сделаю обзор трех своих солнечных контроллеров, а во второй половине отвечу на массу вопросов, которая накопилась за 6 статей. На какие-то вопросы я отвечал в комментариях, о чем-то обещал рассказать позже. Самое главное, что в этой статье Вы найдете ответы на вопрос: «Как сделать так, чтобы было электричество?» и больше не возвращаться к этому пункту.



Кнопка
Total votes 29: ↑27 and ↓2+25
Comments10

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Настройка проекта в keil и мигание светодиодом

Reading time6 min
Views67K

Вступление


В прошлой статье я поделился личными впечатлениями о полученном мною наборе и запрограммировал контроллер демонстрацонным проектом с помощью MT-LINK (так же был предоставлен). Теперь, когда мы детально рассмотрели весь комплект, настало время начать его осваивать.
Для нетерпеливых — итог.


Читать дальше →
Total votes 37: ↑29 and ↓8+21
Comments34

Полная энергетическая автономия или как выжить с солнечными батареями в глубинке (часть 4. Сделано в России)

Reading time6 min
Views119K


В России есть вся инфраструктура и собственные средства для построения солнечной электростанции в конкретно взятом хозяйстве. Более того, вся необходимая электроника, да и солнечные батареи производятся у нас самостоятельно и все это отлично работает. После экспериментов с ноунеймом, брендовым европейским китаем и прочей техникой, я решил обратиться к российским разработчикам техники для автономки и на себе испытать эти устройства. Первым попал на тест гибридный инвертор МАП HYBRID v.1 24В: 4.5 кВт , а следом за ним пойдет производительный солнечный MPPT-контроллер.



Даёшь свет!
Total votes 43: ↑37 and ↓6+31
Comments87

Ansible — давайте попробуем

Reading time8 min
Views137K
Ansible — сравнительно молодая система управления конфигурацией, его история насчитывает чуть более трех лет. Но, несмотря на это, он стремительно и быстро ворвался в мир систем управления конфигурацией, потеснив Chef, Puppet и SaltStack.

Давайте посмотрим на него внимательно, чтобы понять, почему он так любим технарями.

Итак, чем же хорош ansbile:
  • низкий порог входа;
  • декларативный язык описания конфигурации;
  • на управляемые узлы не нужно устанавливать никакого дополнительного ПО;
  • просто написать дополнительный модуль.

Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments25

Полная энергетическая автономия или как выжить с солнечными батареями в глубинке (часть 2.5. практическая)

Reading time8 min
Views220K


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



Солнце, ветер или вода?
Total votes 65: ↑64 and ↓1+63
Comments128

Разбираемся с установкой и загрузкой Linux на примере ArchLinux

Reading time17 min
Views125K
Сначала мы установим Archlinux и превратим его в загрузочный сервер. Прямо оттуда подготовим новую компактную систему, в которую добавим минимальное графическое окружение и самый необходимый функционал (на примере Firefox). Научим нашу систему загружаться по сети даже на компьютерах с UEFI. Затем полностью переведём её в режим «только для чтения» (сделаем «живой»), что позволит нам использовать систему одновременно хоть на пол сотне разномастных компьютеров с одним единственным загрузочным сервером. Это всё будет работать даже внутри дешёвой 100-Мб сети, которую мы дополнительно «разгоним» в пару раз.

Никакие закладки в жестких дисках будут вам не страшны, потому что дисков у нас не будет. Никакие очумелые ручки пользователей ничего не сломают, т. к. после перезагрузки система вернется в первозданное лично вами состояние. Конечно же, вы научитесь и сможете самостоятельно изменять загружаемую систему таким образом, чтобы в ней содержался только нужный вам функционал и ничего лишнего. Между делом мы выясним, как и в каком порядке загружается Linux, а также из чего он состоит. Знания, как известно, — бесценны, поэтому я делюсь ими даром.

Постараюсь без долгих рассуждений пояснять происходящее, иногда забегая немного вперёд, но впоследствии обязательно раскладывая всё по полочкам. Чтобы у вас вообще не возникало проблем с пониманием, предполагаю, что вы уже работали с каким-нибудь готовым дистрибутивом Linux, пробовали писать простые скрипты с помощью nano или другого текстового редактора. Если вы новичок в ArchLinux, то узнаете много нового, а если «старичок», то узнаете поменьше, но, надеюсь, что в любом случае вы ещё сильнее полюбите Linux.

Информации оказалось очень много. И по устоявшейся голливудской традиции впереди вас ждёт сериал в нескольких частях:
продолжение;
окончание.

Сейчас мы установим Archlinux в VirtualBox, который можно будет клонировать и запускать практически на любом компьютере с legacy BIOS без каких-либо дополнительных настроек. Между делом мы познакомимся с основными приёмами работы с systemd, а также узнаем как его использовать для запуска произвольных служб и программ во время загрузки. Ещё мы увидим, какие этапы проходит Linux при загрузке, и напишем собственный обработчик (hook), который поместим в initramfs. Не знаете что такое initramfs? Тогда заходите под кат.
Читать дальше →
Total votes 11: ↑6 and ↓5+1
Comments7

Автоматизируем и ускоряем процесс настройки облачных серверов с Ansible. Часть 5: local_action, условия, циклы и роли

Reading time9 min
Views36K
В первой части мы начали изучение Ansible, популярного инструмента для автоматизации настройки и развертывания ИТ-инфраструктуры. Ansible был успешно установлен в InfoboxCloud, описаны принципы работы, базовая настройка. В завершении статьи мы показали как быстро установить nginx на несколько серверов.

Во второй части мы разобрались в выводе playbook, научились отлаживать и повторно использовать скрипты Ansible.

В третьей части мы узнали как написать единый Ansible playbook для разных ОС (например с rpm и deb), как обслуживать сотни хостов и не писать их все в inventory и как сгруппировать сервера по регионам InfoboxCloud. Было изучено использование переменных Ansible и файла inventory.

В четвертой части мы научились использовать модули Ansible для настройки сервера: разобрались, как запускать самые обычные скрипты на удаленных серверах в InfoboxCloud, использовать шаблонизацию для файлов конфигурации, подставляя необходимые переменные, и как использовать системы управления версиями для получения кода на сервер.



В этой части мы рассмотрим, как запускать задачу локально в рамках playbook для удаленных серверов, как использовать условия для выполнения конкретных задач только в определенной ситуации, как использовать циклы для значительного сокращения количества задач в playbook. В завершении мы разберем, как организовывать playbook в роли.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments3

Автоматизируем и ускоряем процесс настройки облачных серверов с Ansible. Часть 4: работаем с модулями

Reading time5 min
Views14K
В первой части мы начали изучение Ansible, популярного инструмента для автоматизации настройки и развертывания ИТ-инфраструктуры. Ansible был успешно установлен в InfoboxCloud, описаны принципы работы, базовая настройка. В завершении статьи мы показали как быстро установить nginx на несколько серверов.

Во второй части мы разобрались в выводе playbook, научились отлаживать и повторно использовать скрипты Ansible.

В третьей части мы узнали как написать единый Ansible playbook для разных ОС (например с rpm и deb), как обслуживать множество хостов и не писать их все в inventory, и как сгруппировать сервера по регионам облака. Было изучено использование переменных Ansible и файла inventory.



В этой части мы научимся использовать модули Ansible для настройки сервера: разберемся, как запускать самые обычные скрипты на удаленных серверах, использовать шаблонизацию для файлов конфигурации, подставляя необходимые переменные, и как использовать системы управления версиями для получения кода на сервер.
Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments12

Полная энергетическая автономия или как выжить с солнечными батареями в глубинке (часть 1. теоретическая)

Reading time5 min
Views325K


Все начиналось с того, что я приобрел участок земли в деревне, мимо которого не проходили электрические провода. «Ничего страшного, — подумал я. — Ведь по закону меня должны подключить к электросетям за 6 месяцев с момента заключения договора». Если бы я тогда знал, что мне придется освоить автономное энергоснабжение и окунуться в мир солнечной энергетики…

image
Как все начиналось
Total votes 145: ↑143 and ↓2+141
Comments244

Полная энергетическая автономия или как выжить с солнечными батареями в глубинке (часть 2. практическая)

Reading time8 min
Views527K


Реальная солнечная автономка для конечного пользователя состоит из потраченных денег, проб, монтажа устройств и обучения домочадцев пользоваться электричеством экономно. Причем, на последний пункт стоит обратить внимание особо, поскольку автономка предполагает совершенно особый подход к расходу энергии и даже перестройке привычных действий.



Собираем автономку
Total votes 107: ↑106 and ↓1+105
Comments156

Основные моменты настройки Cubieboard с linux

Reading time3 min
Views21K
Расскажу, с какими трудностями я столкнулся при настройки своего Cubieboard, которые заставили провести много времени с красными глазами ночью. Я не претендую на раскрытие чего то нового, возможно для многих те вещи, которые я расскажу — очевидны, для остальных это будет хорошей помощью при настройки Cubieboard.

Итак, основные моменты настройки написаны в публикациях «Cubietruck. Дорожный мини сервер. Часть 2» и «Cubietruck. Уютный, домашний сервер». Я лишь расскажу о проблемах, с которыми столкнулся при настройке своего кубика как роутера с HDD.

Начнем по-порядку.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments13

Автоматизированная установка WordPress на VPS с помощью Ansible

Reading time6 min
Views15K
Добрый день, Хабр.

Не так давно я начал разбираться с замечательным инструментом для любого DevOps — Ansible. Сегодня хочу представить на ваш взыскательный суд небольшую вводную статью по использованию этого, во многом прекрасного, инструмента. Итак, начнем.

Что такое Ansible


Ansible — это инструмент для автоматизации задач системного администратора и не только. Если своими словами — это та штука, которая позволяет автоматически настраивать сервера пачками.

Кто-то скажет, что он не нужен, т.к. есть Chef, Puppet, etc. Я с этими людьми абсолютно соглашусь. Если вы можете использовать эти инструменты — отлично. Я же пишу эту статью для тех, кто хочет немного понять как работает Ansible и как с его помощью можно многое автоматизировать.

Если вы до этого не сталкивались с Ansible вообще, то советую почитать статью компании Селектел. Отличная статья.

Максимум автоматизации


Давайте определимся, что нам нужно, чтоб запустить Wordpress на VPS сервере с установленной Ubuntu:
  • Nginx
  • Mysql
  • PHP5
  • Memcached для использования W3Total Cache плагина
  • Wordpress

Вот в таком порядке мы и будем писать роли для настройки сервера.
Читать дальше →
Total votes 9: ↑6 and ↓3+3
Comments3

Deploy Django приложений с использованием Ansible для чайников

Reading time8 min
Views21K
Доброго времени суток!

Совсем недавно мой коллега познакомил меня с замечательным инструментом автоматизации ручного труда под названием Ansbile. После чего моментально родилась идея написать что-то своё, что упрощает тот самый ручной труд. Что чаще всего приходится делать руками? Правильно, деплоиться.

В этой статье я расскажу о том, как с использованием ansible раскатать django-проект на чистом удаленном сервере ubuntu 14.04, создав при этом для проекта отдельного пользователя.
Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments8
1
23 ...

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity