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

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

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

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

Шардирование: с нуля до Яндекс Диска

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

Меня зовут Андрей Колнооченко. Я отвечаю за ядро файловой системы Яндекс Диска. Когда мы запускали сервис, то сразу ориентировались на рост и приняли решение шардировать базу метаданных о файлах. Но за 11 лет Яндекс Диск настолько вырос, что нам пришлось трижды менять подход к шардированию. В статье расскажу, с какими проблемами мы сталкивались по мере роста сервиса и как от MongoDB пришли в итоге к PostgreSQL.

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

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

Как мы уложили компьютерный мультик в 8 кБ

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

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

В апреле 2023 года, спустя несколько месяцев работы, мы, наконец, выкатили ленту Барашек и цветок. Можете сами скачать его или проследить на YouTube ход выполнения программы.

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

Читать далее
Всего голосов 92: ↑90 и ↓2+88
Комментарии32

Тестирование менеджера транзакций

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


Привет, Хабр! Меня зовут Георгий Лебедев, я учусь на 4-м курсе ФРКТ МФТИ и работаю в команде разработки ядра Тарантула. В этой статье я хочу поделиться методикой тестирования менеджера транзакций, которая применяется в Тарантуле.
Читать дальше →
Всего голосов 26: ↑25 и ↓1+24
Комментарии1

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

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

Все, что написано ниже – субъективный опыт, пропущенный через призму череды жизненных ситуаций. Медленное развитие, как концепция, достаточно спорный предмет для обсуждений, но не лишенный смыслов. Рекомендую его рассмотреть, как инструмент сохранения гибкости и системности. Особенно в контексте исторических событий, через которые продирается человечество последние лет пять.

Читать далее
Всего голосов 26: ↑22 и ↓4+18
Комментарии15

Истории

Как мы управляем инфраструктурой на более 1000 серверов при помощи Ansible

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

Привет, Хабр! Мы системные инженеры X5 Tech — Алексей Кузнецов и Борис Мурашин. У нас за плечами больше 15 лет опыта, в том числе поддержка сервисов Rapida, CyberPlat, TeleTrade, сопровождение стека BigData и внедрение кластеров Hadoop. В этой статье мы расскажем, как выбирали систему управления конфигурациями, какими критериями руководствовались, что в итоге выбрали, с какими проблемами столкнулись и как их решали.

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

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

Hadoop в Облаке: история миграции сотен петабайт

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

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

Меня зовут Михаил Марюфич. Я руководитель Data Platform в ОК, отвечаю за инфраструктуру для Big Data и машинного обучения. В этой статье я расскажу о нашем опыте переноса Hadoop с Bare Metal в облако: с чего стартовали, какие варианты рассматривали, как выстроили миграцию и с чем сталкивались в процессе.

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

Exception Handling: сквозь мультивселенные интероперабельности

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


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

Меня зовут Максим Кокряшкин, я занимаюсь поддержкой и расширением функциональности форка LuaJIT, интегрированного в Tarantool. В этой статье мы обсудим, как интероперабельность исключений помогает упростить обработку ошибок на стыках разных языковых рантаймов, а также посмотрим, как можно реализовать интероперабельность стандартными механизмами обработки исключений.
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии0

Впихнуть невпихуемое, или Как мы боролись с сервисами, которые слишком много «ели»

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

Всем привет! Меня зовут Максим, я релиз-инженер Ozon, и в этой статье я расскажу про впихивание невпихуемого, или про оптимальную с точки зрения используемых ресурсов стратегию деплоя в Kubernetes, которая позволила нам сэкономить тысячи ядер CPU и терабайты RAM.

Читать далее
Всего голосов 31: ↑29 и ↓2+27
Комментарии6

Новые процессоры от Intel, AMD и видеокарты от Nvidia: что еще представили на CES 2024

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

В начале января 2024 года в Лас-Вегасе прошла выставка Consumer Electronics Show, CES. На ней собрались производители, дистрибьюторы, ритейлеры и потребители со всего мира, чтобы продемонстрировать инновации и достижения электроники, бытовой техники, компьютерных технологий.

Selectel следит за новинками в рамках выставки. Несмотря на то, что CES обычно ассоциируется с потребительской электроникой, мы используем некоторые модели оборудования в наших дата-центрах. А еще ищем идеи для серверных решений в сегменте enterprise. В этой статье — обзор на некоторые интересные новинки. Подробности под катом.
Читать дальше →
Всего голосов 48: ↑47 и ↓1+46
Комментарии3

Как мы начали использовать виртуальные потоки Java 21 и на раз-два получили дедлок в TPC-C для PostgreSQL

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

В этом посте мы расскажем о примере дедлока в TPC-C для PostgreSQL, причиной которого является исключительно переход на виртуальные потоки Java 21 - и никаких проблем обедающих философов.

Читать далее
Всего голосов 21: ↑20 и ↓1+19
Комментарии31

Оптимизируя неоптимизируемое: ускорение компиляции C++

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

В этой статье речь пойдёт о повышении скорости компиляции библиотеки {fmt} до уровня библиотеки ввода-вывода Cи stdio.

Дня начала немного теории. {fmt} – это популярная открытая библиотека С++, представляющая более эффективную альтернативу С++ библиотеке iostreams и библиотеке Си stdio. Последнюю она обошла по целому ряду аспектов:

  • Безопасность типов с проверками форматирующих строк во время компиляции. Эти проверки включены по умолчанию начиная с С++ 20, и присутствуют в качестве дополнения для С++ 14/17. Форматирующие строки среды выполнения в {fmt} также оказываются безопасными, чего невозможно достичь в printf.
  • Расширяемость. Определяемый пользователем тип можно сделать форматируемым. При этом большинство типов стандартных библиотек, например, контейнеры и пакеты для обработки даты и времени, предлагают возможность форматирования изначально.
  • Производительность. {fmt} намного быстрее любой распространённой реализации printf, порой на несколько порядков (например, в форматировании чисел с плавающей запятой).
  • Возможность переноса поддержки Unicode.

Тем не менее одной из областей, в которой stdio по-прежнему опережала {fmt}, являлось время компиляции.
Читать дальше →
Всего голосов 56: ↑55 и ↓1+54
Комментарии29

Nvidia выпустила три новых видеокарты и заявила о лидерстве в гонке систем AI PC. Что это за адаптеры?

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

Nvidia представила новые графические адаптеры в рамках стратегии развития AI PC. Три новые модели выпущены в рамках линейки GeForce RTX™ 40 SUPER Series, это GeForce RTX 4080 SUPER, GeForce RTX 4070 Ti SUPER и GeForce RTX 4070 SUPER. В начале января на выставке CES в Лас-Вегасе компания сообщила о том, что новые технологии помогут геймерам, дизайнерам и другим категориям пользователей эффективнее использовать возможности искусственного интеллекта на персональных компьютерах, не прибегая к помощи облачных сервисов. Подробности — под катом.
Читать дальше →
Всего голосов 36: ↑35 и ↓1+34
Комментарии20

Это просто праздник какой-то: две линейки процессоров Intel, новые GPU от AMD, платформы и российские серверы

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

Наша регулярная рубрика обзоров серверного железа продолжает свою работу — теперь в 2024. В этом выпуске рассмотрим устройства, представленные в декабре. Погрузимся в новые платформы, изучим новые диски и системы хранения данных. Уже присматриваете новое железо для своих серверов? Тогда добро пожаловать под кат! Подробности под катом!
Читать дальше →
Всего голосов 38: ↑37 и ↓1+36
Комментарии12

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

Петафлопс на петафлопсе: заработал суперкомпьютер MareNostrum 5 стоимостью в €202 млн. Что это за система?

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

Пару лет назад Китай анонсировал процессор Zhaoxin KX-6640MA, обычный x86-чип, не ARM и не RISC-V. Тогда же стало появляться большое количество новостей о скором выходе мини-ПК и ноутбуков на его базе. На Хабре сообщалось, что устройства доступны ограниченными партиями.

Сами чипы удалось протестировать лишь сейчас, и надо сказать, что результаты тестов не особо впечатляющие. Судя по GeekBench, производительность чипа из КНР примерно равна производительности процессоров от AMD 2011 года. Подробности — под катом.

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

Неожиданное взаимодействие предсказания ветвлений и подсистем памяти

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

Это 15-я статья в серии, посвящённая оптимизации подсистем памяти. Остальные доступны здесь (англ.).

В ней мы изучим взаимодействие механизма предсказания ветвлений с подсистемой памяти. В повествовании мы будем исходить из предположения, что вам знаком принцип предсказания ветвлений и работы подсистем памяти в современных процессорах.
Читать дальше →
Всего голосов 45: ↑43 и ↓2+41
Комментарии6

Тесты новейшего процессора Loongson 3A6000

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

Недавно был представлен 8-ядерный процессор следующего Loongson 3A6000 на базе ядра LA664, а знакомый энтузиаст смог приобрести плату на данном процессоре (модель процессора LS3A6000-HV и чипсет LS7A2000).

Читать далее
Всего голосов 47: ↑45 и ↓2+43
Комментарии31

Tarantool 3.0

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


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

В этой статье я попытаюсь рассказать о том новом, что появится в Tarantool 3.0, не простым перечислением изменений, а описывая проблемы, которые мы пытались решить. В таком ключе это может быть интересно и тем, кто не собирается устанавливать Tarantool, — просто с технической точки зрения.
Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Комментарии23

Распределенный SQL в Picodata

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

Недавно мы выпустили новую значительную версию Picodata — распределенной in-memory СУБД с открытым исходным кодом. Это продукт на основе Tarantool c поддержкой плагинов на Rust и некоторыми другими интересными особенностями, о которых можно почитать в статье Picodata: простое масштабирование Tarantool.

Одно из главных улучшений в новом релизе Picodata 23.12 — возможность выполнять распределенные (кластерные) SQL-запросы непосредственно из консоли Picodata, без дополнительных настроек. Можно управлять глобальными и шардированными таблицами (DDL), модифицировать данные в них (DML) и, разумеется, читать из них (DQL). Также, мы теперь поддерживаем централизованное управление пользователями, ролями и привилегиями на основе списков контроля доступа (ACL), опять же — в рамках всего кластера.

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

Погрузиться в детали
Всего голосов 14: ↑14 и ↓0+14
Комментарии2

Проектирование fault-tolerant систем на Go

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

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

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

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

Читать далее
Всего голосов 20: ↑16 и ↓4+12
Комментарии7

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

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

MQTT (Message Queue Telemetry Transport) — легковесный протокол обмена сообщениями для публикации/подписки сообщений, на настоящий момент этот протокол является основным стандартом в Интернете Вещей (IoT). Брокер MQTT — главный узел (серверное ПО) для подключения IoT устройств и обмену сообщений между ними. На текущий момент доступно более 20 брокеров MQTT с исходным кодом, что затрудняет выбор архитекторами и разработчиками программного обеспечения. В статье будут рассмотрены и сравнены некоторые из самых популярный MQTT-брокеров.

Читать далее
Всего голосов 21: ↑18 и ↓3+15
Комментарии11

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