Как стать автором
Обновить
15
0.2
Андрей @andi123

специалист по всему

Отправить сообщение

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

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



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

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

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

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

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

Linux Pipes – медленные

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров12K

Я пишу программу для сверхбыстрого кодирования/декодирования азбуки Морзе и использую pipe для передачи данных. При этом pipe работает очень медленно. Давайте разберемся почему.

Читать далее
Всего голосов 34: ↑34 и ↓0+42
Комментарии11

Bluetooth Low Energy: подробный гайд для начинающих. Bluetooth Mesh

Время на прочтение16 мин
Количество просмотров21K

Внедрение стандарта BLE в 2010 году привело к быстрому росту вариантов использования устройств интернета вещей, таких как сенсоры, носимые устройства, портативные медицинские инструменты и прочие. В то же время, большим недостатком BLE, существующим с момента его внедрения, была невозможность организации ячеистых сетей, когда множество устройств могут посылать друг другу сообщения и ретранслировать их при необходимости на другие устройства в сети. Ситуация изменилась в июле 2017 года, когда Bluetooth SIG выпустила стандарт Bluetooth Mesh.

В этой главе мы рассмотрим наиболее важные основные понятия, чтобы облегчить начало вашего пути в изучении Bluetooth Mesh.

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Комментарии0

Обратная связь, творящая чудеса

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров8.1K

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

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

Читать далее
Всего голосов 24: ↑23 и ↓1+32
Комментарии37

Git. Руководство по оформлению веток и коммитов

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров21K

Статей на тему что такое git и как им пользоваться на просторах интернета не мало. Я же хочу предложить вам несколько иной взгляд на привычные вещи, а именно, на оформление веток и коммитов, рассмотреть что такое WIP-коммиты, для чего они нужны и как с помощью них можно повысить свою продуктивность и поддерживать чистоту в истории вашего репозитория, в особенности, если вы работаете в команде. Поехали.

Познать истину
Всего голосов 17: ↑15 и ↓2+13
Комментарии16

DIY: Личная электронная медицинская карта

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров2.1K

Всем привет!

Как говорит народная мудрость, «коли болен — лечись, а здоров — берегись». Долгое время я ощущал себя здоровым человеком (хоть и были некоторые хронические заболевания), и не посещал регулярно врачей. Но всё когда-нибудь кончается, и в 41 год я понял, что ощущение здоровья улетучивается как спирт из открытой тары. С этим запросом я пошёл к лекарю – понять какие у меня есть проблемы и что нужно сделать, чтобы вернуться в состояние здоровья.

Как обычно, на приёме был назначен ряд лабораторных и инструментальных исследований, а также были даны направления на консультации к другим узким специалистам. Те, в свою очередь, назначили другие исследования. В рюкзаке стали копиться направления, протоколы приёмов, результаты анализов, диски с результатами исследований. Попытки систематически разложить их в отдельные папки успехом не увенчались – непонятно какой должен быть принцип. Хронологический? Или по системам организма? Или по врачам? Любой вариант в каких-то сценариях неудобен.

Поскольку я всё же ИТшник, то было принято решение систематизировать материалы и сделать свою «электронную медицинскую карту» - с которой лично мне было бы удобно работать. А поскольку я не разработчик (хоть иногда и пишу код), то использовал для этого Excel. В статье хочу поделиться опытом использования Excel для ведения личной электронной медицинской карты – что я там веду, почему именно это и почему именно в такой форме.

Читать далее
Всего голосов 9: ↑8 и ↓1+10
Комментарии5

Земля в печатных платах | Слои, компоненты, секции, питание и переходы | Тренинг Рика Хартли

Уровень сложностиСредний
Время на прочтение30 мин
Количество просмотров10K

В этой статье представлен большой тренинг Рика Хартли по разводке земли в печатных платах. Перевёл и озвучил данное видео Dmitry Muravyev, за что ему огромное спасибо. Я всего лишь сделала конспект этого замечательного тренинга, чтоб люди могли ознакомиться с ним быстрее, чем смотреть двухчасовое видео, либо вернуться к каким-то отдельным темам, если позабылось. Категорически рекомендую ознакомиться с источником.

Впервые люди начали использовать землю в качестве проводника около 300 лет назад для отведения молний от зданий. Молния сама естественным образом стремится разрядиться на землю. Так что установив железный стержень на крыше здания и проведя от него  большой толстый провод вниз по зданию к балке, вбитой в землю, люди отводили молнии от зданий. Это был первый опыт использования земли в качестве возвратного пути для протекания тока. Из чего скоро стало ясно, что землю можно использовать в качестве возвратного пути и для других целей.

Читать далее
Всего голосов 31: ↑31 и ↓0+38
Комментарии6

«Культурный контракт» с сотрудником

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров6.3K

Один из наиболее эффективных инструментов руководителя, который я пробовал, это заключать "культурный контракт" с каждым сотрудником при его приеме на работу.

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

Так при чем тут "культурный контракт"? Все просто, при приеме каждого сотрудника моя первая беседа с ним была на основе тезисов:

Читать далее
Всего голосов 39: ↑34 и ↓5+39
Комментарии75

Расшифровка startup файла Arm Cortex-M

Уровень сложностиСложный
Время на прочтение7 мин
Количество просмотров3.7K

В статье предпринята попытка разобраться в содержимое startup файла микроконтроллера STM32F4, построенного на базе ядра Arm Cortex M4. Для запуска ядра используется ассемблерный код, который и предстоит изучить. Для лучшего понимания материала необходимо иметь представление об архитектуре ядра Cortex M4. Сразу отмечу, что замечания и уточнения приветствуются, т. к. они позволят дополнить представленную информацию.

Читать далее
Всего голосов 9: ↑6 и ↓3+6
Комментарии19

Кто ты, воин? Или о правильных собеседованиях

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров19K

В предыдущей статье я примерно пояснил, почему вопросы на собеседованиях такие, какие они есть. Сегодня же постараемся выработать систему, на основании которой будет удобно и надежно подбирать воинов в нашу гордую IT-когорту, то есть встанем на сторону работодателя.

Читать далее
Всего голосов 27: ↑19 и ↓8+14
Комментарии19

4 стихии программной документации: The Grand Unified Theory of Documentation

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров5.1K

В статье я хочу рассказать об одной очень интересной теории разработки документации на системы и программы. Её авторы утверждают, что создали ни много ни мало «Великую Единую Теорию Документации» (The Grand Unified Theory of Documentation). Мы привыкли с опаской относиться к заявлениям о том, что кто-то обнаружил сокровенную истину и раскрыл её профессиональному сообществу. В теории изложены идеи и правила, которые мы встречаем в разных методиках разработки документации и сами применяем на практике.

Основная ценность этой теории не в том, что она раскрывает некое сокровенное секретное знание, а в аккуратной систематизации этого самого знания и в полезных советах по разработке каждого типа документа. Не скажу, что я на 100% согласен со всеми правилами, изложенными в теории, но в ней есть много полезных и рациональных мыслей. В любом случае, она стоит того, чтобы с ней ознакомиться.

Читать далее
Всего голосов 26: ↑24 и ↓2+27
Комментарии9

Возможности современного клавиатуростроения (программные)

Время на прочтение12 мин
Количество просмотров18K

О возможностях программируемых клавиатур и о том как можно увеличить скорость набора текста с помощью программных функций повышения физической совместимости

Читать далее
Всего голосов 37: ↑36 и ↓1+47
Комментарии85

Обхода блокировок много не бывает на роутерах Keenetic

Время на прочтение23 мин
Количество просмотров169K

С помощью действий, описанных в этой статье, Вы сможете подключить все устройства домашней сети (телефоны, смарт-тв, компьютеры и ноутбуки и другие "домашние" устройства) к данному обходу блокировок, а также подключаться к Вашему роутеру не из дома и пользоваться его обходом блокировок для доступа к любимым сайтам и приложениям. Кроме того, из обеих этих сетей (домашней и через подключение к роутеру), из любого браузера можно будет пользоваться onion-сайтами.

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

Читать далее
Всего голосов 31: ↑27 и ↓4+33
Комментарии85

Ассемблер: x86/x86_64/Arm32/Arm64

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров9.4K

Я достаточно давно решил ознакомится с ассемблером архитектуры Arm. По большей части для ознакомления и понимания внутренних процессов архитектуры. Чем больше я изучал литературу и различные источники, тем больше я понимал, что нужна практика. Я решил вспомнить ассемблер для x86-х машин и заодно потренироваться на архитектуре Arm.

Но как всегда для практики надо быть подготовленным, а как оказалось, я был не подготовлен...

Читать далее
Всего голосов 12: ↑11 и ↓1+13
Комментарии34

Разреженные структуры данных

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров12K

Когда-то я писал пост про различные интересные структуры данных. Среди них был т.н. sparse set. Там мы описали его в общих чертах, опустив некоторые детали (которыми позже статья была дополнена). Но кроме sparse set существуют и другие разреженные структуры данных! На них сегодня и посмотрим : )

Разредиться!
Всего голосов 27: ↑27 и ↓0+27
Комментарии11

Увеличиваем оперативную память программиста, тренируясь в dual-n-back

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров11K

Однажды я заметил, что мне сложно уследить за логикой внутри третьего вложенного цикла. Значения переменных в голове уплывали от меня по мере того, как я представлял, как они должны меняться по ходу кода.

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

Через N времени гугления я наткнулся на ряд ссылок, ведущих к упражнению «Задача n‑назад», наиболее распространенный вариант которой называется «dual‑n-back».

Увеличить оперативную память
Всего голосов 25: ↑25 и ↓0+25
Комментарии11

Как не давать пустых обещаний себе, команде и заказчику

Время на прочтение10 мин
Количество просмотров16K

Привет, Хабр!

14 лет я работал в международной компании Airbus – компании, занимающейся авиастроением. В IT же мой путь начался совсем недавно – всего лишь чуть больше года назад.

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

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

Читать далее
Всего голосов 34: ↑32 и ↓2+38
Комментарии40

Qucs-S: руководство по видам моделирования, часть 1

Время на прочтение10 мин
Количество просмотров8.6K

Qucs-S является программой с открытым исходным кодом для моделирования электронных схем. Qucs-S кроссплатформенный (поддерживаются Linux и Windows) и написан на С++ с использованием набора библиотек Qt. О данной программе рассказывают мои предыдущие статьи. Для работы Qucs-S рекомендуется использовать также открытый движок моделирования Ngspice. Актуальным релизом Qucs-S на текущий момент является версия 2.1.0. В данной статье подробно рассматриваются виды моделирования, имеющиеся в Qucs-S. Начальное руководство по работе с программой можно найти здесь: https://habr.com/ru/articles/678526/

Читать далее
Всего голосов 30: ↑30 и ↓0+30
Комментарии30

Сам себе мобильный интернет. Запускаем базовую станцию стандарта 4G LTE

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров90K
Приветствую всех!

Я уже не раз рассказывал про то, как в домашних условиях поднять сотовые сети разных стандартов. Но всё же все они были уже весьма древними. Самое время замахнуться на кое-что поинтереснее — LTE.



Итак, в сегодняшней статье поговорим о том, что детально в нашем сообществе не описывал практически никто — о том, как запустить базовую станцию самого нового из поддерживаемых большинством телефонов этой страны стандартов. Поговорим об особенностях её работы и о трудностях, с которыми, возможно, придётся столкнуться при запуске. Традиционно будет много интересного.
Читать дальше →
Всего голосов 313: ↑312 и ↓1+368
Комментарии159

В открытом доступе бесплатно лекция о современном состоянии раздела о выносливости спортивной физиологии (рекламы НЕТ)

Время на прочтение4 мин
Количество просмотров7.5K

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

Читать далее
Всего голосов 31: ↑20 и ↓11+9
Комментарии18
1
23 ...

Информация

В рейтинге
2 734-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Embedded Software Engineer
Lead
От 100 500 ₽
Linux