Наш сетевой драйвер терял пакеты. Не время от времени, а постоянно. На пропускной способности линии с 64-байтными пакетами мы теряли 31% всего трафика.
В качестве оборудования использовался Ethernet-контроллер на 1 Гбит/с на SoC RISC-V. В спецификациях говорилось, что он может справляться со скоростью проводного трафика. Движок DMA работал корректно. Обработчик прерываний срабатывал вовремя. Тем не менее, пакеты исчезали.
Я начал с очевидного подозреваемого: очереди получения. Реализация выглядела вполне логично — простой связанный список с указателями на голову и хвост. Под нагрузкой (64-байтные пакеты на пропускной способности линии) драйвер терял 31% пакетов! При профилировании обнаружилась причина проблемы: производительность убивали связанный список и спин-блокировки.
Я переписал драйвер, использовав кольцевой буфер без блокировок. Результаты: потеря 31% пакетов превратилась в 0,12% — улучшение в 258 раз!
В этой главе мы поговорим о структуре очередей для драйверов устройств.
Читать далееПривет, Хабр. Меня зовут Дмитрий Сергеев. Я менеджер продукта «виртуальные серверы» (GPU) в компании VK Tech.
Одна из ключевых проблем внедрения нейросетей в бизнес — отсутствие подготовленной ИТ-инфраструктуры. Почти всегда приходится разбираться, какая из тысяч моделей подойдет для задачи и будет учитывать специфику и процессы бизнеса. Часто это становится дорогим занятием без предсказуемого результата.
В этой статье я на примере сервисов VK Cloud разберу, в каких сценариях востребованы физические GPU, а также где и как их можно эффективно заменить с помощью vGPU, чтобы оптимизировать бюджет и сэкономить на аренде полного объема ресурсов.
Читать далееВ первой части мы разобрались с представлением данных. Мы сделали невалидные состояния невозможными для выражения в рамках модели. В этой части мы разберемся с тем как можно выражать поведение таких моделей, и где проходит граница между тем, что ловит чекер, и тем, что придется оставить рантайму.
Читать далееОсенью 2024 года я не планировал начинать новый проект. Тем более связанный с медициной.
После тяжёлой пневмонии дочери врач назначил контрольный анализ крови. Среди стандартных показателей оказался анализ на уровень глюкозы. Именно он впервые показал проблему.
Вскоре нас направили в детскую больницу, где после обследования поставили диагноз — сахарный диабет первого типа.
Наверное, многие родители, столкнувшиеся с этим впервые, испытывают похожие ощущения. За несколько дней приходится освоить огромный объём новой информации: научиться измерять уровень глюкозы, рассчитывать углеводы, понимать действие разных типов инсулина, вести дневник питания и принимать десятки небольших решений каждый день.
Параллельно с этим я заканчивал курс Python в Яндекс Практикуме. Днём — работа, вечером — обучение, ночью — медицинские статьи и клинические рекомендации. Не самый простой период, но именно тогда и появилась идея проекта, о котором пойдёт речь дальше.
Читать далееСлучайный запуск парсера на двух серверах одновременно — и Telegram мгновенно убивает сессию с ошибкой AuthKeyDuplicatedError. Аккаунт улетает в теневой бан, а стандартная авторизация через Telethon наглухо блокируется. В этой статье я покажу хардкорный способ спасти прогретый аккаунт: мы сделаем дамп памяти tdata из официального клиента macOS, обойдем конфликты Python-библиотек и настроим жесткий спуфинг сессии на Ubuntu-сервере. Итог: антифрод обманут, парсер снова собирает лиды.
Читать далееКогда предприниматель начинает задыхаться от операционки, первая мысль почти у всех одна и та же: нужны люди. Нанять помощника, менеджера, логиста, кладовщика — передать им рутину и наконец выдохнуть. Логика понятна. Но именно здесь большинство предпринимателей наступают на грабли, которые стоят им месяцев потерянного времени и сотен тысяч рублей.
Давайте разберёмся честно: почему найм без системы не работает, во сколько это обходится, и как сделать так, чтобы новый человек с первого месяца приносил пользу, а не головную боль.
Читать далееВ прошлых статьях я разбирал линейное и целочисленное программирование: PuLP, OR-Tools, pyomo, задачи о назначениях, коммивояжёра, раскрой, генерацию столбцов. Здесь рассмотрим немного иной подход: выполнимость булевой формулы, она же SAT. С одной стороны, это фундамент теории NP-полноты. С другой, вполне рабочий инструмент, который на чисто комбинаторных задачах нередко обходит классические MIP-солверы.
Дальше по плану: что такое SAT, как устроены алгоритмы, позволяющие солверам тянуть сотни тысяч переменных, как с этим работать из PySAT и какие солверы он даёт. В финале решим прикладную оптимизационную задачу через MaxSAT.
Кому пригодится: тем, кто занимается математической оптимизацией или ML-инженерам, как ещё один инструмент в своем наборе. Если вы отвечаете за процессы, то в примерах, возможно, узнаете знакомые сюжеты: ручные расписания, подбор совместимых комплектаций, дележ дефицитного ресурса. Всё это неплохо ложится на SAT.
Читать далееПри работе с Apache Kafka рано или поздно возникает необходимость быстро проверить топик, прочитать сообщения или посмотреть состояние группы потребителей (consumer group). Можно применять стандартные инструменты Kafka. Однако на практике они часто оказываются не самыми удобными для повседневной работы. Многие команды получаются длинными, каждый раз требуют передачи параметров подключения и нуждаются в различных CLI-утилитах.
Есть и более легкие решения — например, kcat, который хорошо знаком многим инженерам и часто используется для диагностики Kafka. Но существует и вариант поудобнее — kafkactl.
Привет, Хабр! Меня зовут Сергей Кардапольцев, я технический писатель в Selectel. В этой статье мы познакомимся с kafkactl — CLI-инструментом для работы с Kafka. Посмотрим, чем он отличается от стандартных Kafka-утилит и kcat, а также разберем базовые сценарии работы на примере кластера.
Читать далее →В прошлой статье мы собрали готовый образ Linux и запустили I2C Master Controller который живет в ПЛИС и управляется драйвером предоставляющим в ОС доступ к нему как типовому I2C-контроллеру. В этой, заключительной части из общей серии статей, я хотел бы филигранно отшлифовать все мелкие недочеты и привести примеры утилит, которые могли бы отправлять нужные нам данные на I2C OLED-дисплей SSD1306, например температуру кристалла, время или что-нибудь еще.
Всем кому интересна тема - го под кат! :)
Читать далееТрансформеры уже умеют писать код, генерировать тексты и рисовать картины. Но могут ли они управлять автономным автомобилем в реальных городских условиях, среди людей и других машин?
Меня зовут Максим, я руковожу службой поведения и предсказания движения в Автономном транспорте Яндекса. Отвечаю за задачу Motion Planning — ту часть системы, которая решает, как именно должен двигаться автомобиль в следующие секунды. В этой статье я расскажу, как мы используем архитектуры на основе трансформеров в планировании движения и почему это сильно отличается от привычных задач генеративных моделей.
Мы пройдём путь от первых ML‑экспериментов до регулярных испытаний на реальных машинах. Разберём, чем Open Loop отличается от Closed Loop, почему качество предсказаний не определяет качество вождения и почему безопасность для нас важнее любой архитектуры.
Читать далееКогда очередной мессенджер внезапно перестает работать без специальных инструментов, о которых теперь нельзя публично упоминать вслух, многие неожиданно вспоминают, что до эпохи «ватсапов» и «телеграмов» человечество вполне успешно общалось по электронной почте. Тем более что адрес e-mail сегодня есть практически у каждого. Правда, стоило пользователям снова вспомнить об этой технологии, как выяснилось, что и здесь не всё спокойно.
С месяц назад в Рунете начали циркулировать тревожные слухи: популярные почтовые сервисы вроде Яндекс Почты и Mail.ru якобы один за другим отключают бесплатный доступ по протоколам IMAP, POP3 и SMTP, благодаря которым почта десятилетиями работала через привычные внешние клиенты. Почитав новости (в том числе и на Хабре), я решил разобраться, какие службы действительно продолжают работать с почтовыми программами вместо веб-интерфейса и насколько удобно ими пользоваться. Результатами этих изысканий и хочу сегодня поделиться.
Ну, и что пока еще работает?В 2013 году в этом ЦОД внедрили систему мониторинга на базе Honeywell. Спустя почти десять лет контроллеры начали зависать, появились ложные сигналы, а после ухода производителя с российского рынка исчез доступ к программному обеспечению и технической поддержке.
Полностью менять систему автоматизации никто не хотел: электрика работала, датчики работали, инженерная инфраструктура тоже. Поэтому на объекте пошли другим путем — заменили только контроллеры и модули ввода-вывода, сохранив существующую автоматику.
В статье покажем, как организовали такую модернизацию, какие инженерные системы подключили к новой диспетчеризации и как решили задачу оповещений через мессенджер.
Читать далееНаверное, любой системный аналитик в начале своей карьеры, открывая ТЗ на сорок страниц, где-то через 10 минут ловил себя на мысли: «Я уже не понимаю, что здесь главное». При этом опытный специалист пролистывает тот же документ и через пару минут говорит: «Это стандартная интеграция». Потому что он сразу видит структуру, практически как гроссмейстер в шахматах. И дело здесь вовсе не в сверхпамяти, а в том, как устроено мышление. На мой взгляд, у профессиональных шахматистов и системных аналитиков оно устроено похоже. В этой статье разберем, как именно думают гроссмейстеры, чем их методы запоминания отличаются от мнемотехники, и главное – как применять эти принципы в работе и в жизни.
Читать далееНедавно мне попалась отличная статья про IAsyncEnumerable и стриминг данных. В ней у автора упал прод, который пытался выдать 500 000 записей разом и упал на вызове ToListAsync() с OOM при 8 ГБ RAM. Далее в статье описывается, как все это стримить с помощью IAsyncEnumerable с примерами кода. В целом после прочтения статьи может сложиться впечатление, что все свои ToListAsync() срочно нужно убрать и заменить на стриминг.
Но со времен появления стримингового апи в .NET мне всегда было интересно, не только то как отдавать стримы, но и как это все получать на клиенте?
Читать далееПривет, Хабр! Мы — Владимир, Дмитрий и Константин — команда из логистики в торговой сети «Монетка» («Группа Лента»). Мы управляем процессами в одной из крупнейших розничных сетей в России, и у нас — 4+ тысячи магазинов, 40+ тысяч сотрудников и миллионы коробок товара, которые каждый день нужно отгружать со складов 24/7. А выходной – только один день в году, 1 января.
Читать далееЛетом 2025 года xAI Илона Маска представила Grok 4 — и с этого момента текстовый помощник с характерным юмором вырос в ИИ-систему высшего эшелона, способную на равных конкурировать с ChatGPT, Claude и Gemini в глобальных бенчмарках. К середине 2026 года технологическая линейка сделала огромный шаг вперед. Тем не менее перед отечественными ИТ-специалистами и рядовыми пользователями стоит все тот же барьер: как получить официальный и стабильный доступ к экосистеме Grok, если зарубежные банковские карты заблокированы, а маркетплейсы приложений жестко привязаны к зарубежным регионам. Ниже подробно разберем актуальные версии модели, тарифные сетки и легальные сценарии работы.
Читать далееМы тут время от времени постим обзоры на интересные игры, которые нравятся кому-то из нашей команды. И сегодня у нас на очереди игра «Мор (Утопия)». Если вам по какой-то причине не хватает в жизни чувства бессилия и потери контроля, то «Мор (Утопия)» это исправит. Вы будете неправильно расставлять приоритеты, расплачиваться за принятые решения, бороться за выживание и, если повезёт, дойдёте до финала. Уставшим и неудовлетворённым, потому что так и задумано.
Игра «Мор (Утопия)»/Pathalogic — дебютный проект независимой московской студии геймдизайна Ice-Pick Lodge. Официальный релиз вышел в июне 2005 года. За неё студия получила премию «Самая нестандартная игра» на Конференции разработчиков игр. Основатель студии Николай Дыбовский рассказывал, что «Мор (Утопия)» — это попытка выйти за рамки жанра компьютерной игры, в которой принято преодолевать уровни один за другим и получать награды. Смысл в том, чтобы игрок получил новый эмоциональный опыт и пережил настоящую метаморфозу. Никаких развлечений, только тревога и фрустрация! Признайтесь, захотелось? :) Тогда заходите почитать про игру побольше.
Читать далееПривет, Хабр! Меня зовут Алексей Постригайло, я старший партнер ИТ-интегратора «Энсайн». Больше 20 лет занимаюсь системной интеграцией, разработкой и сопровождением цифровых систем.
За это время мы неоднократно сталкивались с ситуацией, когда сервер формально настроен правильно, проект работает, документация существует, но реальное устройство окружения знает только один инженер.
Он помнит, почему установлена конкретная версия PHP, откуда взялся дополнительный модуль, какие права были изменены вручную и что нужно выполнить после переноса базы данных.
Пока этот человек находится в команде и доступен, проблема почти незаметна. Она проявляется при миграции, восстановлении после сбоя, передаче проекта другой команде или попытке развернуть аналогичное окружение на новом сервере.
Для таких задач мы создали HConfig — консольный инструмент автоматизированного конфигурирования серверов и управления Linux-инфраструктурой.
В конце статьи расскажу, где найти HConfig. А сначала разберу, почему он появился, как устроен и для каких сценариев подходит.
Читать далееПривет, Хабр! На связи снова Максим из ATI.SU.
В прошлых статьях мы разобрались, как искать логи и креш‑отчёты на iOS‑устройствах — и делали это вручную. Этот навык остаётся базовым на проекте любого размера: без него невозможно понять причину сбоя. Но есть и вторая часть работы — сами проверки, то есть прогон пользовательских сценариев. Пока приложение небольшое, их можно прокликивать руками. По мере роста количество однотипных проверок увеличивается, и повторять их вручную перед каждым релизом становится всё дороже.
Возникает логичный вопрос: можно ли автоматизировать именно эту рутину — прогон сценариев, — чтобы проверки проходили без нашего участия, а нам оставалось разбираться с причинами сбоев, если такие возникнут? Здесь нам помогут нативные автотесты на XCUITest. Они позволяют системно, а не от случая к случаю, прогонять пользовательские сценарии, отслеживать падения и проверять стабильность. А когда тест краснеет, в дело снова вступают логи и креш‑отчёты — те самые, что мы научились искать в предыдущих статьях.
Этой статьёй мы открываем цикл о UI‑тестировании iOS приложений. Начнём с основ: разберёмся, какое место UI‑тесты занимают в пирамиде тестирования, познакомимся с инструментами и постепенно перейдём к построению устойчивых тестов с применением проверенных паттернов.
Отвёртки на изготовку!Меня зовут Алёна, и я более пяти лет занимаюсь оценкой языковых моделей: участвовала в создании таких русскоязычных бенчмарков как Russian SuperGLUE, ruMTEB, куратор проекта Альянса в сфере искусственного интеллекта «MERA» (бенчмарка для оценки русскоязычных LLM), и создатель множества других проектов в области тестирования генеративных моделей. На конференциях, встречах с командами и обсуждениях LLM-продуктов я часто слышу один и тот же вопрос: «А как вообще правильно оценивать LLM на практике?», и почти всегда за этим вопросом стоит один и тот же разрыв.
С одной стороны, есть академический мир. В нём бенчмарк — это методология, датасеты, метрики, контроль качества, проверка утечек, воспроизводимость, анализ ошибок и месяцы работы. Хороший академический тест должен быть достаточно строгим, чтобы его результатам можно было доверять.
С другой стороны, есть индустриальная практика. Команде нужно выбрать модель, проверить новую версию промпта, сравнить два пайплайна, выкатить RAG-систему, оценить агентную систему или понять, не стало ли хуже после очередного изменения. И всё это не через полгода, а, желательно, к следующему релизу.
На этом месте и возникает типовая развилка. Часть команд не оценивает почти ничего: несколько ручных примеров перед демо, быстрый просмотр ответов глазами — и решение «вроде, работает». Другая часть пытается сделать «минимально нормальную» оценку: 10–20 запросов, LLM-судья, средний балл, табличка для отчёта. Проблема в том, что второй вариант часто выглядит как контроль качества, но им не является. Более того, он может быть опасен, потому что создаёт уверенность там, где на самом деле есть только очень слабый сигнал. При этом я хорошо понимаю, почему так происходит. Дело не в том, что команды ленятся или не понимают важности оценки. Скорее, наоборот: они работают в темпе, для которого классический академический подход часто является слишком тяжеловесным.
Читать далее