LINUX.ORG.RU

Избранные сообщения pon4ik

Как правильно программировать под NUMA используя DPDK?

Форум — Development

Всем привет,

Возник такой вопрос. Предположим, что есть 2 NUMA ноды NUMA#0 и NUMA#1, соответственно есть 2 сокета с CPU#0 (NUMA#0) и CPU#1 (NUMA#1). На каждом CPU присутствует несколько ядер, пусть для примера их количество будет равно 4 на первом процессоре и 6 на втором (CPU#0{0-3} и CPU#1{0-5}).

К CPU#0 подключяется 2 сетевых контроллера NIC#0 и NIC#1 с поддержкой RSS и количеством очередей от 1 до 16. Для обработки данных в режиме FastPath (обход сетевого стека ядра Linux) используется DPDK. Суть обработки данных сводится к двум задачам: форвардинг и реконструкция TCP-сессий с буферизацией.

Внимание вопрос: как правильно использовать мощности 2-х нод для обработки сетевого трафика? Удастся ли использовать CPU#2 со второй ноды для эффективной обработки пакетов, ведь у ядер этого CPU должны быть проблемы с тем, что приём и отправка пакетов осуществляются адаптером, физически расположенном на другой ноде.

Кто курил DPDK, какую модель использвать для обработки данных - pipeline, run-to-completion, io/worker?

Как быть, делитесь опытом/соображениями?

 , , ,

i82
()

есть ли книжка по обучению программированию?

Форум — Development

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

Есть ли хоть одна (на родном языке), где излагается, как собственно, устроено ремесло программиста? Меня интересует:

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

 , ,

den73
()

Тестирую компиляцию описания формата Kaitai Struct в диаграмму GraphViz

Галерея — Скриншоты

Сделали новую фичу в Kaitai Struct: раньше мы умели описания бинарных форматов файлов и пакетов смотреть в визуализаторе и компилировать в исходный код парсера на поддерживаемых языках программирования (к ним, кстати, медленно, но верно добавляются PHP и Perl), а теперь мы умеем еще и генерировать по описаниям форматов вот такие вот диаграммы.

На скриншоте - развернутая на фул-скрин схема базовых тестовых форматов стека OSI 2-4 уровней. Все начинается с pcap-файла (вне уровневой классификации), в который вложены фреймы формата Ethernet (2 уровень), в которые вложены IPv4-пакеты (3 уровень), в которые вложены либо TCP-сегменты (4 уровень), либо ICMP-пакеты (3 уровень). Таблички - классы. Жирные стрелки - включения типов один в другой, серые дуги - использования значений из какого-то поля в другом.

В правом верхнем углу - для сравнения - окошко с текстовым редактором, в котором видно, как выглядит исходник описания формата pcap в .ksy.

Схема получена абсолютно автоматически без каких-либо ручных правок и дорисовываний ровно за 2 шага:

1. Пачка файлов с описаниями форматов .ksy компилируется в graphviz:

ksc -t graphviz файлы.ksy

2. Полученный dot-файл банально обрабатывается graphviz:

dot -Tsvg <файл.dot -o файл.svg

Если стало интересно, вот еще пачка примеров:

 kaitai, ,

GreyCat
()

Многпоточность c++

Форум — Development

Собственно решил осилить сабж но в инете мало инфы(или я не умею пользоваться гуглом).Посоветуйте какие-нить книги на тему. Желательно с примерами и упражнениями.

 ,

wild_blood
()

Linux C++ free memory after dealocation

Форум — Development

Привет форумчане. Странные вещи творятся в с++ и системе.

Если контейнер(такой чтоб лежал последовательно в памяти) наполнить то память естественно вырастет. Но если потом даже удалить из контейнера все элементы, то потребление памяти не снижается. Если проверить память дважды, то на второй раз потребление памяти незначительно снижается на некоторых контейнерах. Оно понятно, что plain контейнеры резервирую память на будующее для уменьшения аллокаций. Но даже если контейнеру сделать swap с пустым, то потребление памяти всё равно не уменьшается. Смею предположить, что это ещё какая-то системная фича, мол если процесс затребовал себе гектар, потом освободил его, то система не забирает его сразу обратно, мало-ли ещё понадобится. Я сделал такой вывод ещё потому, что даже если выделаю через new много памяти, то после delete освобождается только половина.

Мои потуги можно увидеть тут https://github.com/LuxoftAKutsan/TestsAndResearch/tree/master/free_memory_smo...

Вопросы к форумчанам :

1) Где почитать матчасть по этой теме.

2) Может я лажаю в коде и у меня реальные утечки?

3) Как бы заставить систему вернуть себе более не используемую мной память.

 , , , ,

dokihot
()

reviewboard альтернативы

Форум — Development

Живу в каменном векес svn.

Хочу проводить ревью до коммита, читай путём отсылки патча. Какие есть альтернативы reviewboard? Или он тут безусловно лучший и пробовать, что то ещё не имеет смысла?

 , , ,

pon4ik
()

Узнать, какие клавиши/сочетания имеют назначение в vim

Форум — General

Добрый день! Мне хотелось бы добавить пару своих собственных сочетаний и изменить некоторые, пришедшие с плагинами, но я не уверен, какие клавиши/сочетания можно использовать, ведь некоторые из них уже могут быть назначены. Нет ли простого способа увидеть все действующие назначения в vim? Заранее спасибо.

 

Norong
()

Ищу интересный проект для получения опыта

Форум — Development

Ищу проект для участия с целью получения опыта по С++. Может кто пилит на ЛОРе, или просто знает, на что стот посмотреть/изучить. Естественно open source и на добровальных началах.

Есть много теоретических знаний (не только по языку), но совсем нету опыта.

Т.е. нужен тот, кто будет давать задачи разных уровней сложности и, по нужде, подсказывать.

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

Если есть интерес, могу написать список изученной литературы.

 , , ,

l4gfcm
()

Какие бывают нотации для записи алгоритма работы многопоточных программ?

Форум — Development

На практике встречал только сиквенс диаграммы. Возможно есть какая-нибудь понятная запись в текстовом виде?

 , , ,

pon4ik
()

awesome, unity + gnome-shell style

Галерея — Скриншоты

Снова awesome, снова из master.

В этот раз решил воскресить идею unity + gnome-shell style, которая в прошлый раз в галерею не влезла по причине отсутствия описания.

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

Сейчас в master творятся приятные метаморфозы, awesome готовится к очередному релизу, 3.6. Например, в gears я заметил то, что теперь можно применять шейп, причём, с учётом того, что окна являются тоже сурфейсом, то и на них это распространяется (правда, композитный менеджер не в курсе этого дела, и тень отрисовывает не обращая внимания на применение шейпа, и выглядит это как говно).

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

Трей у меня скрывается, но, как известно, при скрытии остаются отрисованные значки, потому он у меня помещается в wibox, который находится за пределами видимости, и при перерисовке трея в другой виджет его контент с панели скрывается нормально. Кстати, теперь у трея есть опция, позволяющая сделать отступы между иконками.

Тасклист перепилен, мне было лень заниматься с аргументами, потому всё вхардкодил, всё равно при каждом изменении я лезу в код виджета, так даже удобнее.

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

Виджет часов показывается даже в fullscreen, что очень удобно.

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

ШГ в браузере так и не починил, потому показывать его не стану. Да и не изменилось там ничего.

  • Тема иконок по-прежнему Evolvere Flat Vivid Sunken Dark.
  • Тема GTK+ 2.x, Qt4 и Qt5 — самописная, на murrine.

А ещё я так и не выложил конфиги с прошлого раза, так как причесал их только пару часов назад. Конфиги лежат здесь.

 , ,

r3lgar
()

Пройтись по контейнерам одного типа

Форум — Development

Есть пару контейнеров, скажем QVector. Как красиво пройтись по всем и выполнить операцию над элементами?

Элементы во всех контейнерах одного типа.

 ,

UVV
()

json тест парсера

Форум — Development

Есть ли какой то общепринятый набор тестов для парсера json?

 , , ,

pon4ik
()

Замена tcpreplay

Форум — Development

Есть что то под онтопик использующее AF_PACKET для проигрывания?

 ,

pon4ik
()

Помогите выбрать, чему бы подучиться в программировании

Форум — General

В связи с переходом в новую команду в фирме необходимо переопределить свои личные PM (Performance Management) цели на ближайший год. Фирма всячески помогает курсами, тренингами и просто материалами, нужно только выбрать что-то конкретное для изучения. В команде занимаются в основном многопоточным и сетевым программированием на C и C++, часто с использованием Boost. Ни в том, ни в другом я пока не силён, мягко говоря. Поэтому даже не знаю, можно ли эти направления сконкретизировать. Что бы вы предложили мне выучить как новичку, не пытаясь объять необъятное?

 , , , ,

eugeno
()

Palemoon и VimFX

Форум — Desktop

VimFX в Palemoon не работает, и работать не будет. Чем заменить? Vimium кастрированный, vimperator неудобный.

UPD: Пока остановился на pentadactyl. После допиливания и адаптации он оказался в чём-то даже удобнее VimFX, к тому же, гораздо быстрее. Поставил цветовую схему simple, hintkeys=hjklasdfgyuiopqwertnmzxcvb, навигацию по вкладкам на S-j/S-k, замапил русскую раскладку для хоткеев, пока норм.

 , ,

Axon
()

C++ coveralls offline аналог

Форум — Development

Есть ли какой-нибудь халявный офлайн аналог, по качеству сравнимый с сабж'ем?

В смысле что бы не корёжило его на тех же деструкторах.

 

pon4ik
()

Опубликованы C++ Core Guidelines

Форум — Development

Бьерн Страуструп и Герб Саттер опубликовали в открытом доступе объемный документ, содержащий основные принципы разработки на современном С++. Авторы надеются, что следование данным принципам позволит разработчикам эффективно использовать язык и писать безопасный и поддерживаемый код.

C++ Core Guidelines: https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md/

 ,

nonimous
()

Курс «Функциональное программирование на языке Haskell»

Форум — Development

21 сентября 2015 года на платформе stepic.org стартует совместный курс СПбАУ РАН и Computer Science Center по основам функционального программирования на языке Haskell.

В рамках курса мы рассмотрим ленивую и энергичную семантики, алгебраические типы данных и их использование для сопоставления с образцом. Знакомясь с богатой системой типов Haskell, мы обсудим параметрический и специальный полиморфизм и, в частности, механизм классов типов. Мы изучим основные классы типов из стандартной библиотеки Haskell, в том числе функторы и монады. Мы научимся программировать, используя стандартные монады, в частности обсудим проблему ввода-вывода в чистых языках и его реализацию в Haskell с помощью монады IO, а также работу с изменяемым состоянием с помощью монады State.

Подробности тут.

 ,

ymn
()

Когерентность cpu

Форум — Development

Добрый день. Я напишу по памяти, возможно с ошибками:

#include <iostream>
#include <thread>
int *ptr;
void fn()
{
    // Воткнуть ли aquire барьер?
    std::cout << *ptr;
}
int main()
{
    ptr = new int{0};
    // Воткнуть ли release барьер?
    std::thread t(fn);
    t.join();
    return 0;
}
Насколько знаю, пара барьеров вшита в thread::join() и при завершении потока. Имеются ли невидимые барьеры в данном случаи?

 ,

pavlick
()

посоветуйте книгу

Форум — Development

наткнулся вот на такую «Mathematics for Computer Science» Eric Lehman and Tom Leighton:

http://www.cs.princeton.edu/courses/archive/spr10/cos433/mathcs.pdf

сложновато читать на английском, есть ли что-то похоже на русском?

 ,

IvanR
()