Как стать автором
Обновить
200.84
Сначала показывать

Как оптимизировать код на С для x86-процессоров: подсистема кэша и памяти, инструкции AVX-512

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

Меня зовут Андрей Бакшаев, я ведущий инженер-программист в YADRO. Моя команда занимается разработкой и оптимизацией математических библиотек под архитектуру x86. До этого я 15 лет работал в Intel. Значительная часть моих задач заключалась в том, чтобы реализовывать некоторые алгоритмы обработки изображений и сигналов в довольно известной математической библиотеке IPP, максимально эффективно используя возможности процессоров. Я также исследовал производительность этих алгоритмов в процессорах на ранней стадии проектирования. 

В статье я поделюсь своим опытом оптимизации низкоуровневого кода на языке C. Рассмотрим подсистему кэша и памяти процессоров и новые инструкции AVX-512. Разберем пример ускорения копирования байтового массива данных и посмотрим, как векторизованный код позволяет сократить время работы широко используемого алгоритма замены байтов по таблице с 619 до 34 мс, то есть примерно в 18 раз. 

Читать далее
Всего голосов 42: ↑39 и ↓3+48
Комментарии23

Игра в имитацию: как разрабатывать и отлаживать ПО для процессора, которого нет

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

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

Спойлер: делать имитацию. О том, какие подходы существуют и как выжать из них максимум эффективности для имитации сложных многоядерных систем, рассказали инженеры-программисты отдела разработки системного ПО YADRO Светлана Бурлака и Александр Солдатов.

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

В закладки тестировщика-автоматизатора: от базовых правил для написания быстрых автотестов до полезных плагинов Pytest

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

Привет, Хабр! Принесли полезный контент для всех, кто пишет автотесты на Python. В подборке — видео докладов с последнего AQA-митапа: о плагинах Pytest, архитектуре автотестов для продукта на open source-движке, а также о критериях понятных тестов (и как их соблюдать на практике). Материалы будут полезны как начинающим, так и опытным AQA-инженерам. Под катом — все видео и ответ на вопрос, зачем это смотреть, от гостей митапа.

Смотреть доклады →
Всего голосов 10: ↑9 и ↓1+10
Комментарии0

Решаем задачу асинхронного ввода-вывода с библиотекой Asio

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

Привет, Хабр! Меня зовут Илья Казаков, я C++ разработчик в команде систем хранения данных  компании YADRO, одна из моих задач — реализация эффективных IO-bound программ под Linux. 

На одном из проектов мы с командой использовали Asio — библиотеку C++ для сетевого и низкоуровневого программирования ввода-вывода. Она предлагает свою асинхронную модель. Технология отлично справилась с нашей задачей, и я хочу поделиться с вами опытом ее использования. Под катом расскажу, какие решения я рассматривал для асинхронного ввода-вывода и почему остановился на Asio.

Узнать больше →
Всего голосов 14: ↑13 и ↓1+15
Комментарии22

«Есть вопросы, на которые не ответит даже наниматель»: три истории о собеседованиях разработчиков на С++

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

21 ноября в рамках митапа по С++ Константин Владимиров, Илья Шишков (@ishfb) и Елена Степанова — эксперты с многолетним «стажем» в собеседованиях — обсудят, как проводить технические интервью, говорить про алгоритмы без синтетических задач и оценить знания кандидата. Регистрируйтесь и присоединяйтесь к дискуссии в Москве или онлайн. 

А сейчас знакомим вас с модераторами и задаем им три каверзных вопроса про собеседования. На чем проваливаются кандидаты и нужно ли проходить собеседования, чтобы лучше их проводить? Ответы под катом. 

Узнать ответы →
Всего голосов 22: ↑14 и ↓8+11
Комментарии28

Митап по С++ в Москве и онлайн: боли нового стандарта, висячие ссылки и дискуссия о собеседованиях

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

Привет, Хабр! 21 ноября собираемся на митапе по C++. Обсудим новый стандарт С++ 23 с точки зрения практикующего программиста, узнаем, как избежать dangling reference, и подискутируем, как собеседовать комфортно для всех.

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

Изучить программу →
Всего голосов 16: ↑16 и ↓0+16
Комментарии0

Обзор книги «С++ 20 в деталях»: доступно, но не для джунов

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

Привет, Хабр! Меня зовут Дмитрий Луцив, я работаю в СПбГУ на кафедре системного программирования, веду ряд IT-дисциплин на математико-механическом факультете в лабаратории компании YADRO и помогаю вузам актуализировать образовательные программы под задачи индустрии.

Я давно не программировал на С++, но стараюсь не отставать от изменений, происходящих в языке. Книга «C++ 20 в деталях» заинтересовала меня личностью автора (на секунду, это Райнер Гримм) и возможностью познакомиться с новым источником знаний о «плюсах». Решил ее прочитать, чтобы понять, кому материал будет полезен и могу ли я его рекомендовать. Под катом расскажу, что в книге хорошего, а что можно было бы сделать лучше, а также дам список дополнительных источников для специалистов разного уровня.

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

Один на 150 миллионов операций. Расследуем причины выброса времени отклика в операциях ввода-вывода

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

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

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

Узнать решение →
Всего голосов 26: ↑26 и ↓0+26
Комментарии10

Бесшовный апгрейд ПО для системы хранения данных: как организовать и улучшить

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

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

Я Владимир Приходько, руководитель отдела разработки подсистем управления в компании YADRO. Вместе с командой мы развиваем пользовательский функционал СХД. В тексте расскажу о специфике бесшовного обновления ПО в системах хранения данных и дам рекомендации, как выстроить этот процесс с учетом лучших практик. Все описанные подходы мы с командой успешно используем в обновлении СХД TATLIN.UNIFIED

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

Пишем свой драйвер Molecule без костылей и боли

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

Привет, Хабр! Меня зовут Павел, я инженер по разработке инфраструктуры в компании YADRO. В апреле 2023 года разработчики Molecule представили мажорный релиз инструмента в версии 5.0.0. Помимо множества багфиксов и улучшений, пользователи получили возможность написать свой собственный драйвер, подключить его в уже существующие сценарии тестирования ролей и использовать как molecule.docker или molecule.openstack. Я не нашел или плохо искал статей об этом и решил написать поэтапное руководство по разработке собственного драйвера — от примитивного Hello world до работающего прототипа.

В статье вы найдете пример custom_docker доработки оригинального драйвера molecule.docker, описание базовых классов и методов из API Molecule, а также рассказ о нюансах разработки и эксплуатации.

Перейти к инструкции
Всего голосов 12: ↑12 и ↓0+12
Комментарии2

Проектируем узлы печатной платы с учетом особенностей монтажа при массовом производстве. Подход DFA

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

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

Подход, на который мы будем опираться, называется DFA — Design for Assembly (проектирование для сборки). Набор методов DFA гарантирует возможность сборки компонентов на плате, когда она поступит на монтажный участок, и позволяет отправлять плату в тираж без страха потерять деньги и время.

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

Митап по автоматизации тестирования на Python в Нижнем Новгороде и онлайн 26 сентября

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

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

Вместе с нижегородским сообществом PythoNN и инженерами компании-разработчика вычислительной техники YADRO мы обсудим правила, которые помогут сделать тесты понятнее, поговорим, как поддерживать одновременно автотесты в коммерческой и опенсорсной версиях ПО, и как использовать pytest plugins. 

На митапе вас ждет общение с опытными спикерами из разных городов и возможность встретиться с коллегами в центре Нижнего Новгорода, в КУПНО на Почаинской. 

Как всегда, для для онлайн-зрителей мы проведем трансляцию, где вы сможете задать вопросы спикерам!

Внутри поста — подробные описания докладов, ссылки на регистрацию и трансляцию.

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

Как ограничить количество выполняющихся задач в Jenkins при вызове parallel: сравниваем решения

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

Недавно передо мной встала задача — есть 250 тестов, каждый из которых занимает от 5 до 30 минут, а иногда и часы. Надо запустить их в параллель на одной машине, но не больше 16 одновременно. Ограничение связано с некоторым лимитированным ресурсом, а также количеством ядер CPU. Реальное число одновременно запущенных задач нужно вычислять динамически, то есть пойти простым путем и зарегистрировать имя или лэйбл ресурса заранее с помощью плагина Lockable Resource не получится.

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

История печатных плат: от Эйслера до наших дней

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

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

Читать далее
Всего голосов 37: ↑35 и ↓2+40
Комментарии33

Seastar как платформа для опорной сети 5G и краткое сравнение с Boost.Asio, userver и другими

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

Я исследовал некоторые open-source фреймворки — кандидаты на платформу для опорной сети пятого поколения операторского уровня, и хочу поделиться своими выводами. Под катом я сравню Seastar, mTCP, Boost.Asio, userver и ACE, расскажу, почему примитивы синхронизации — это плохо, а затем погружу вас в глубины Seastar.

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

Простые правила, которые помогают мне писать на Go без побочных эффектов

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

Роб Пайк сказал, что простое лучше, чем сложное. Я бы добавил: простое лучше, чем прикольное. Ведь Go спроектирован, чтобы писать программы в простом стиле. 

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

Читать далее
Всего голосов 25: ↑23 и ↓2+24
Комментарии11

3 доклада для тех, кто недавно с Go: материалы митапа в Петербурге

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

«Что самое крутое вы сделали за год, что пишете на Go», вопрос из зала после первого доклада.

«Записал новую машину на жену», остроумный комментарий к этому моменту в трансляции.

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

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

Что важно понимать студенту 2-3 курса технического вуза, который собирается искать работу

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

Мы в YADRO активно работаем со студентами и видим, что многих из них волнуют вопросы:

— какие навыки прокачивать ещё в университете,

— где взять опыт для первой версии резюме,

— как проходить первые собеседования,

— и как в целом задать своей карьере правильный вектор на самом старте.

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

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

Говорим про системное программирование и дизайн микропроцессоров простым языком

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

Системное программирование и разработка процессоров — область достаточно узкая, из-за чего её часто воспринимают как что-то непонятное и недоступное. Хотим поделиться новым подкастом «Битовые маски», который планирует исправить это впечатление. В каждом выпуске будем общаться с инженерами, причастными к созданию продуктов, которыми многие программисты пользуются ежедневно, и разбирать с ними интересные нюансы, мифы и задачи отрасли.

Гостем первого эпизода стал Дмитрий Петров, писавший компилятор для Kotlin. Под катом вы найдете запись, а для тех, кто не любит слушать — мы подготовили расшифровку ряда интересных фрагментов. Мы очень хотим фидбека: не стесняйтесь писать в комментарии или личные сообщения. 

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

Системному администратору и нагрузочному тестировщику:  статистика ввода-вывода в ядре Linux под капотом

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

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

Нам, как конечным пользователям, будет полезно понимать, как устроен механизм сбора и накопления статистики внутри ядра и как читает и интерпретирует данные популярная утилита iostat. Что именно значат aqu-sz, util и другие данные из режима расширенной статистики? Почему многие значения усреднены? Чтобы ответить на эти и другие вопросы, мы пройдем путь от системного вызова до момента, когда запрос ушел в диск и вернулся, — а счетчики обновились. Поехали!

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

Информация

Сайт
yadro.com
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия