Как стать автором
Обновить
148.16

Высокая производительность *

Методы получения высокой производительности систем

Сначала показывать
Порог рейтинга
Уровень сложности

Confluent Kafka: любовь и ненависть в .NET, часть 1

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

Всем привет! Сегодня расскажу про Confluent Kafka. Ее любят, ненавидят, но мало кто остается равнодушным.

О себе

Меня зовут Алена, я ведущий разработчик, занимаюсь развитием референсной архитектуры в компании билайн. К основным областям профессиональных интересов можно отнести проблемы распределенных систем, event sourcing и DDD.

В двух словах о Kafka

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

Читать далее

Новости

Мониторинг Linux с SAR: обширное описание метрик и как их читать

Время на прочтение34 мин
Количество просмотров891

Состояние сервера можно условно сравнить со здоровьем человека: оно у всех разное и умирают все от разных причин. Пульс, давление, температура — это показатели, которые помогают в диагностике нас. В мире Linux эти показатели: CPU, использование памяти, работа дисков и прочее. Как и в медицине, мониторинг можно проводить в реальном времени или анализировать уже собранные данные.

Если у человека проблема с сердцем 🩺, врач может сделать ЭКГ прямо сейчас, но если нужны показатели за длительный период, нужен суточный мониторинг ЭКГ по Холтеру, который может показать, например, проблемы ночью. В Linux этим занимается набор инструментов sysstat, в состав которого входит, в том числе, утилита sar, которая помогает визуализировать данные в логах /var/log/sysstat/.

Разделы:

Часть I. Установка и настройка sysstat.

Часть II. Пример использования sar для чтения из логов двух нод Kubernetes — умозрительный пример.

Часть III. Команда sar и диагностика проблем: описание метрик и что они означают, наглядные таблицы. Описание проблем.

Читать далее

Мысли вслух. Сколько потребляет памяти один запрос PostgreSQL?

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

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

Хочу поднять проблему как объективно посчитать размер потребляемой оперативной памяти конкретным запросом в PostgreSQL. И предлагаю использовать для этого автоматическое нагрузочное тестирование. Такая вот сегодня постановка задачи.

Читать далее

Нестандартная обобщённая хеш-таблица на чистом Си

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

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

Читать далее

Истории

Как оптимизировать производительность API при высокой нагрузке

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

В статье мы рассмотрим основные подходы и практики для оптимизации производительности API, применяемые в МТС Exolve, поймем, как избежать подобных последствий и обеспечить стабильную работу сервисов.

Читать далее

Игровые консоли зимы 2025: что выбрать для новых приключений?

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

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

Читать далее

Как увеличить скорость python-скриптов: C-расширения и Python/C API

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

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

Мы будем изучать именно интеграцию расширений во времени сборки, а не просто загрузка библиотек через ctypes.

В этой статье я хочу рассказать о том, как интегрировать C-расширения с использованием библиотеки Python.h. Я также расскажу как создать свою python-библиотеку с C-расширениями. Также мы исследуем, как устроен Python — например, вспомним, что все является объектами. Я буду использовать poetry как менеджер рабочего окружения.

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

Не буду тянуть, начнем!

Читать далее

Правильный инструмент для аналитики нагрузочного тестирования. Часть 2

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

Load-testing-hub: эволюция сервиса аналитики нагрузочного тестирования

Ранее я рассказывал о load-testing-hub, инструменте для аналитики и агрегации данных по нагрузочным тестам. Тогда он находился в стадии MVP, а теперь прошел значительные улучшения.

Что изменилось?

— Добавлено больше информации и гибкости в настройках.
— Расширены возможности сравнения результатов.
— Реализованы детальные графики и аналитика по методам.
— Оптимизирован процесс выявления аномалий в производительности сервисов.

Один из практических кейсовпоиск по банковским операциям среди сотен миллионов записей. Load-testing-hub помог протестировать производительность, выявить узкие места и оптимизировать решение.

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

Читать далее

Руководство по проведению постмортемов. Как правильно разбирать инциденты для улучшения стабильности в будущем

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

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

Для чего же нам нужно проводить “вскрытие” системы после инцидента? Тем более, что жизнь «пациента» была сохранена, и команда, работавшая над сохранением жизни, свою долю стресса и опыта уже получила.

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

Тут мы открываем вторую причину – с помощью аналитики посмотрема, когда мы выявили причины сбоя, мы можем предотвратить повторение инцидента.

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

Читать далее

Liberux NEXX: Linux-смартфон с 32 ГБ ОЗУ и аппаратными переключателями

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

Источник.

Ну что, линуксоиды могут быть довольны. На рынке появился (точнее, скоро появится) очередной телефон на базе Linux. Причем не просто так, а с изюминкой. Liberux NEXX – это не просто смартфон, а настоящий техно-манифест. 32 ГБ оперативки, Linux под капотом и куча фишек для параноиков. Давайте разбираться, что это за телефон и кому он вообще нужен.
Читать дальше →

Что такое чиплеты и почему они так важны для будущего процессоров?

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

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

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

Что такое чиплеты?


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

Такая компоновка позволяет уменьшить размеры деталей, которые могут воспользоваться новейшими методами производства, повышая эффективность процесса и позволяя вместить больше компонентов.
Читать дальше →

Как выбрать формат внедрения BPM-платформы

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

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

В этой статье мы на основе своего опыта реализации проектов расскажем о вариантах и шагах для достижения цели на примере внедрения решений на платформе ELMA365.

Читать далее

Perforator: новая система непрерывного профилирования теперь в опенсорсе

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

Привет! Сегодня мы выложили в опенсорс Perforator — систему непрерывного профилирования (continuous profiling), которую используем внутри Яндекса для анализа производительности большинства сервисов.

В Github-репозитории доступен исходный код системы и инфраструктура для развёртывания своей инсталляции Perforator на кластере Kubernetes. Кроме того, Perforator можно использовать на своём компьютере как более простую замену perf record: профили получаются точнее, а оверхед меньше. Исходный код доступен под лицензией MIT (и GPL для eBPF-программ) и запускается под x86-64 Linux.

При помощи Perforator и прошлых подходов к задаче профилирования мы регулярно оптимизируем самые крупные сервисы в Яндексе, например Баннерную крутилку или Поиск, на десятки процентов. Кроме того, Perforator реализует недостающий в опенсорсе компонент профилирования для простой автоматической оптимизации программ с использованием profile-guided optimization. Наши тесты показывают, что использование PGO даёт ускорение около 10% в разных сценариях.

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

Читать далее

Ближайшие события

11 – 13 февраля
Epic Telegram Conference
Онлайн
27 марта
Deckhouse Conf 2025
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Не все сетевые интерфейсы одинаково полезны или как сеть важна для высоконагруженных 1С-систем

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

Подумал, что необходим небольшой пост, посвященный сетевым адаптерам/интерфейсам, которые устанавливают в своих ИТ-ландшафтах пользователи. Речь пойдет не столько о конкретных моделях, сколько про то, что сеть такой же компонент информационной системы (как и те же диски, память, CPU), и на него нужно обращать не менее тщательное внимание. Многие его просто игнорируют и недооценивают – «Ну сеть и сеть, что там с ней может быть не так? Вот же 10 Гбит/с. Вот график пропускной способности. Всё прекрасно.».

Читать далее

Как рождаются, живут и умирают горутины

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

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

Читать далее

Современные техники оптимизации производительности в C++. Кэш-локальность, аллокаторы и параллелизм

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

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

Читать далее

Отчет о проекте эффективного приоритетного дерева SAPT

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

Отчет о, написанном мною, алгоритмическом статичном двунаправленном дереве, имеющим сложность O(1) по всем параметрам. Не считаю эту статью чем-то выдающимся, никуда не претендую, это всего лишь отчет моей работы. Если вам понравится можете свободно пользоваться.

В качестве небольшого предисловия:
Зачем я спроектировал дерево?

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

Пример профилей поведения будет в конце статьи.

Читать отчет

Мой путь к быстрой и понятной архитектуре, или зачем я выбросил агрегаты из DDD?

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

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

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

Читать далее

Оптимизация Trellis: запускаем генерацию 3D моделей на GPU с 8ГБ памяти

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

Я оптимизировал Trellis для работы на обычных ПК. Это мощный AI-инструмент для генерации 3D моделей из изображений, и хочу поделиться тем, как удалось снизить требования к видеопамяти с 16GB до 8GB, сохранив качество генерации.

Читать далее

Погружение в инструменты диагностики Linux. Часть 2 — top

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

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

Читать далее
1
23 ...

Вклад авторов