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

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

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

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

Магия степеней двойки, или Запуск кучи docker контейнеров

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

Праздник «день программиста» отмечается в 256-й день года, а это 2⁸, т.е. два в степени восемь. Это не просто так — на степенях двойки многое завязано в компьютерах и программировании, они повсюду. Настолько повсюду, что иногда даже слишком.

Благодаря празднику я вспомнил, что давно хотел написать эту статью, и поделиться несколькими техническими байками, где числа, являющиеся степенями двойки, вставляли «палки в колёса» мне или моим коллегам.

Читать байки
Всего голосов 15: ↑14 и ↓1+13
Комментарии9

«Чистый» код, ужасная производительность

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

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

Читать далее
Всего голосов 115: ↑89 и ↓26+63
Комментарии219

Всё, что вы хотели знать о Java, но не доходили руки спросить: что будет на Joker 2023

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

Как ускорить запуск JVM? Каково переходить с SQL на Cassandra? Что нас ждёт в Java 21? Как профилируют в Alibaba? Какие части Java были сделаны в России? И как в названия докладов на Java-конференции прокралось не только слово «Kotlin», но и «Python» с «PHP»?

На все эти и многие другие вопросы ответит Joker 2023. До конференции остался месяц, её программа готова — представляем её Хабру.

Программа Joker 2023
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Быстрее быстрого в СУБД

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

Привет! Меня зовут Сергей, я технический эксперт в компании Bercut. Когда-то увлекался Delphi и J2ME, издал несколько книг на эти темы, и профессионально уже около 20 лет создаю высоконагруженные приложения баз данных, используя для этого PL/SQL и SQL.

В Bercut мы занимаемся разработкой и развитием IT-продуктов и решений для операторов цифровых услуг и мобильных сервисов. Наши системы работают на различном железе, разных СУБД и обслуживают 24x7x365 в режиме онлайн сотни миллионов абонентов по всему миру. И это только кажется, что абонент один раз в день куда-то позвонил и все, больше никакой нагрузки от него нет и никто с ним не работает. На самом деле каждый смартфон каждого абонента непрерывно обменивается данными с сетью, а это все работа инфраструктуры операторов сотовой связи, а значит, нашего ПО. Как же система справляется с таким огромным объемом нагрузки?

Сегодня расскажу, что нужно делать и чего избегать, чтобы построить максимально производительную систему на примере СУБД Оракл.

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

Истории

Как профилировать, когда perf видит не все

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


В современных системах интерпретаторы используются повсеместно. Для проверки на соответствие ожиданиям по производительности их необходимо профилировать. Но когда значительная часть логики исполняется встроенным интерпретатором, окинуть взглядом общую картину при профилировании становится крайне затруднительно, потому что существующие инструменты не способны отражать переходы между интерпретируемой и нативной частями системы.
Читать дальше →
Всего голосов 66: ↑66 и ↓0+66
Комментарии2

Нужна ли Redis новая архитектура? (13 лет спустя)

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

Redis — это фундаментальная технология, и поэтому мы время от времени встречаем людей, рассматривающих альтернативные архитектуры. Несколько лет назад эту тему подняла компания KeyDB , а недавно новый проект Dragonfly заявил, что является самым быстрым Redis-совместимым хранилищем данных в памяти. Мы верим, что эти проекты привносят много интересных технологий и идей, достойных обсуждения. Нам в компании Redis нравятся такого рода вызовы, поскольку они требуют от нас подтверждения архитектурных принципов, с которыми изначально был разработан Redis (снимаем шляпу перед Сальваторе Санфилиппо, также известному как antirez).

Хотя мы всегда ищем новые вызовы для инноваций и повышения производительности и возможностей Redis, мы хотим поделиться своей точкой зрения и некоторыми размышлениями о том, почему архитектура Redis остается лучшей в своем классе для хранилища данных в памяти в режиме реального времени (кешбаза данных и все, что между ними).

Читать далее
Всего голосов 15: ↑14 и ↓1+13
Комментарии7

Делим неделимое в Kubernetes: шеринг GPU с помощью MIG и TimeSlicing

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

Привет, Хабр! На связи снова Антон, DevOps-инженер в отделе Data- и ML-продуктов Selectel. В предыдущей статье я рассказал о шеринге GPU и показал, как запустить несколько инстансов на одной видеокарте с помощью MIG. А в конце затронул тему с автомасштабированием инференс-серверов. Она оказалась актуальной, и я решил написать продолжение.

В этот раз посмотрим, как применять технологии шеринга в Kubernetes, а также разработаем прототип автомасштабируемой инференс-платформы за один вечер. Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Всего голосов 57: ↑56 и ↓1+55
Комментарии10

Гигачад в мире мини-ПК: 96 ГБ ОЗУ и Intel Core i9-13900H в форм-факторе NUС

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

Мини-ПК — весьма популярный форм-фактор десктопных компьютеров, который практически сразу после своего появления привлек внимание как обычных, так и корпоративных пользователей. Сейчас компания Intel, к сожалению, уже не выпускает эти устройства, передав бразды «правления» ASUS.

Но это не конец для NUC, поскольку производят подобные системы и другие компании. На днях появилась информация о скором выходе в продажу необычно мощного для своего класса устройства. Бренд SimplyNUC выпускает систему с процессором Intel Core 13 поколения и поддержкой вплоть до 96 ГБ ОЗУ. Не основной, а именно что оперативной памяти. Подробности о новинке — под катом.
Читать дальше →
Всего голосов 51: ↑43 и ↓8+35
Комментарии44

Семантики доставки событий в распределенных системах

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

Павел Агалецкий, ведущий разработчик в юните Platform as a Service в Авито, рассказал про семантики или гарантии доставки сообщений, и почему с ними не всегда просто разобраться.

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

Лучший regexp для Go. Benchmark c другими ЯП. Сравнение библиотек

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

"Не используйте регулярки - иначе вместо 1 проблемы, у вас их станет 2!" - как то так говорят знатоки... А что остается делать непослушным, желающим эффективный поиск по большому количеству шаблонов?

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

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

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

Разрабатываем свой браузер. Часть вторая: CSS

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


Всем привет!


Продолжаем цикл статей по разработке браузерного движка.


Да, лучше поздно, чем никогда. Да, перерыв был большой.


В конце статьи я опишу, как поживает проект lexbor, что с ним происходит.


В этой статье я постараюсь раскрыть особенности парсинга Cascading Style Sheets (CSS). Расскажу, как вывернуть «ежа» наизнанку и как тестировать полученный результат.


В CSS спецификациях всё разжевано, ну, или почти всё, тут я расскажу, как всё устроено, куда смотреть и с чего начать.


Эта статья больше обзорная, здесь не будет мелких подробностей реализации, скорее, общие сведения и основные алгоритмы. За мельчайшими подробностями прошу в код на GitHub.


И конечно, как это обычно бывает, мы замахнёмся на звание самого быстрого парсера CSS.

И так, начнём!
Всего голосов 11: ↑11 и ↓0+11
Комментарии1

Как в 1.5 раза повысить производительность фронтенда высоконагруженного интернет-магазина на Next.js

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

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

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

Улучшаем BARSiC: как мы проверяли и совершенствовали алгоритм консенсуса в кластере

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

Привет, Хабр! В команде ВКонтакте существует система управления репликацией и консенсусом в кластере, которая называется BARSiC (Binary Asynchronous Replication with Simple Consensus). Прежде всего она контролирует состав кластера, определяя, кто реплика, а кто — мастер. А при выходе мастера из строя реплики выбирают нового с непротиворечивой линейной историей. 

Для решения этой задачи команда ВКонтакте совместно с университетом ИТМО работали над научно-исследовательским проектом «Разработка моделей для верификации распределенных алгоритмов в системе BARSiC». В этой статье подробно расскажем о том, как мы в рамках проекта верифицировали выбранный для BARSiC алгоритм, и попутно исправили найденную в нём ошибку. 

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

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

Бизнес-ключ и суррогатный ключ нужны оба

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

Пару дней назад я агитировал всеми уважаемого эксперта в хранилищах данных за новый стандарт суррогатных ключей UUIDv7 для высоконагруженных систем. И я получил от него ответ, что суррогатные ключи не нужны, а нужны лишь бизнес-ключи (естественные ключи). Этот абсурдный ответ заставил меня написать ответное письмо, а затем и эту статью.

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

Как освоить Tarantool за 3 месяца и выжить: учимся на ошибках DevOps-инженера

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


Освоение нового инструмента и его внедрение в работающий проект — практически типовая задача для многих компаний. Более того, часто DevOps-инженерам и другим специалистам приходится изучать новый инструмент в сжатые сроки, в том числе когда компетенцию в команде надо нарабатывать с нуля. Поэтому сложности и ошибки — практически неотъемлемая часть обучения. 
Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии1

Всегда ли хорош Index Only Scan?

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

Среди применяемых в PostgreSQL методов доступа к данным Index Only Scan стоит особняком, считаясь у многих разработчиков "волшебной пилюлей" для ускорения работы запроса - мол, "Index Scan - плохо, Index Only Scan - хорошо, как только получим его в плане - все станет замечательно".

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

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

Как построить систему, способную выдерживать нагрузку в 5 млн rps

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

Всем привет! 

Меня зовут Владимир Олохтонов, я руковожу командой разработки в отделе Message Bus, который является частью платформы Ozon. Мы занимаемся разработкой самых разных систем вокруг Kafka, etcd и Vault. В этой статье я расскажу о том, как мы строили линейно масштабируемую gRPC-прокси перед Kafka, способную обслуживать миллионы запросов в секунду, используя Go.

Читать далее
Всего голосов 114: ↑111 и ↓3+108
Комментарии58

Как разбить GPU на несколько частей и поделиться с коллегами: практическое пособие по работе с MIG

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

Привет, Хабр! Меня зовут Антон, я — DevOps-инженер в отделе Data- и ML-продуктов Selectel. Последние три месяца исследовал интересную проблематику — шеринг GPU между конкурентными процессами и пользователями. В русскоязычном сегменте не смог найти ни одного оригинального материала — только переводы англоязычных статей.

После посещения пары докладов понял, что тема особенно актуальна: компании знают о шеринге GPU как о технологии, но пока не применяют ее. У меня же накопилось достаточно материалов, чтобы осветить эту тему более подробно и показать, как работает шеринг GPU на практике. Интересно? Самое время погрузиться под кат!
Читать дальше →
Всего голосов 46: ↑46 и ↓0+46
Комментарии11

Переезд c PostgreSQL на YDB. Кейс сервиса Яндекс Игры

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

Привет! Меня зовут Александр Смолин. Я бэкенд-разработчик в команде Яндекс Игр. Уже два года мы используем YDB для задач сервиса. В статье расскажу, как мы в Яндекс Играх внедряли YDB, зачем это было нужно, с какими сложностями столкнулись и какие результаты у нас сейчас.

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

RabbitMQ Direct Reply-to. RPC поверх кролика без дополнительных очередей (пример на Python)

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

Реализацией RPC запросов поверх брокеров сообщений никого не удивишь: очередь для запроса, очередь для ответа — ничего сложного.


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


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


На самом деле, в RabbitMQ есть механизм и для такого сценария. Но он спрятан в недрах документации и о нем почти нет информации в интернете (особенно рабочих примеров кода).


Вот это недоразумение мы сейчас и исправим.

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

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