Обновить
50.76
Рейтинг

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

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

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

Жёлтое — Вакуум — Облако

Высокая производительность *Разработка веб-сайтов *Анализ и проектирование систем *Облачные вычисления *Облачные сервисы
Последние несколько лет я, по непонятной причине, стараюсь подтолкнуть людей к расширению профессионального кругозора. Я убежден, что в современном мире невозможно занять достойное место, занимаясь узкоспециализированной деятельностью – только узкоспециализированной деятельностью (за редкими исключениями).

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

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

Соответственно, у кодера есть ограничение по местам работы – подходит чистая ИТ-компания или предприятие с большим и разношерстным ИТ-отделом.

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

Но сегодня – не об этом, сегодня – о технологиях.
Читать дальше →
Всего голосов 43: ↑28 и ↓15 +13
Просмотры 5.5K
Комментарии 51

Новости

RedisPipe — вместе веселее

Блог компании Joom Высокая производительность *Open source *Программирование *Go *

Когда я думаю о том, как работают наивные RPC клиенты, мне вспоминается анекдот:


Суд.
— Подсудимый, за что вы убили женщину?
— Еду я в автобусе, подходит кондуктор к женщине, с требованием купить билет. Женщина открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, достала кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку, закрыла сумочку, открыла кошелек, достала деньги, открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, положила туда кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку.
— И что?
— Контролер ей дал билет. Женщина открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, достала кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку, закрыла сумочку, открыла кошелек, положила туда билет, закрыла кошелек, открыла сумочку, достала кошелочку, закрыла сумочку, открыла кошелочку, положила туда кошелек, закрыла кошелочку, открыла сумочку, положила туда кошелочку, закрыла сумочку.
«Возьмите сдачу», раздался голос контролера. Женщина… открыла сумочку…
— Да убить её мало, — не выдерживает прокурор.
— Так я это и сделал.
© С.Альтов

А если серьёзно
Всего голосов 32: ↑30 и ↓2 +28
Просмотры 5.4K
Комментарии 7

Liveprof покажет, когда и почему менялась производительность вашего PHP-приложения

Блог компании Badoo Высокая производительность *Разработка веб-сайтов *PHP *Программирование *


Привет, Хабр! Меня зовут Тимур Шагиахметов, я PHP-разработчик в Badoo.

Производительность приложения — один из важнейших критериев качества работы программиста. В вопросах оптимизации PHP-приложений помощником является профайлер.

Недавно мы рассказывали о том, какими инструментами пользуемся для профилирования. Напомню: одним из инструментов для анализа производительности, когда непонятно, какие части кода повлияли больше всего на увеличение времени формирования ответа, является XHProf. Это расширение для PHP, которое позволяет профилировать код на боевом сервере и впоследствии  улучшать его.

Но хотелось бы ещё иметь историю изменения производительности, чтобы можно было отследить, что и когда повлияло на её ухудшение, не так ли? Для этого около года назад мы разработали Liveprof — инструмент для автоматического профилирования всех запросов с интерфейсом для анализа изменения производительности приложения.

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

В этой статье я расскажу о деталях реализации и особенностях использования этого инструмента.
Читать дальше →
Всего голосов 84: ↑84 и ↓0 +84
Просмотры 17K
Комментарии 7

Дополнительные лекции курса «Проектирование высоконагруженных систем» (осень 2018) в Технополисе

Блог компании Одноклассники Высокая производительность *Java *Анализ и проектирование систем *Учебный процесс в IT
image

Мы продолжаем публиковать лекции курса «Проектирование высоконагруженных систем», который читается студентам Санкт-Петербургского Политехнического университета командой инженеров из Одноклассников в рамках двухлетней программы «Java-разработчик высоконагруженных приложений» проекта Технополис (совместный проект Mail.Ru Group и СПбПУ). В 2017 году были прочитаны и выложены 10 лекций (30 часов видео), но тема Highload настолько обширна, что за один семестр невозможно охватить всё. Мы лишь ненадолго погрузились в основные аспекты Highload-разработки, каждый из которых достоин отдельного курса. В этом году мы продолжаем закрывать белые пятна и представляем вашему вниманию набор из шести лекций на новые темы: начинаем с параллельных вычислений и livecoding первого этапа студенческого курсового проекта, после чего погружаемся в средства мониторинга и диагностики JVM, а потом переходим к проблемам отказоустойчивости. А после лекции о продвинутых алгоритмах, актуальных в высоконагруженных проектах, завершаем цикл лекцией о существующих подходах к репликации и об их применимости к разным задачам.

Первые десять лекций.

Список новых лекций:

  1. Actor Model. Future. Reactive Streams (Вадим Цесько incubos)
  2. Livecoding второго этапа проекта (Вадим Цесько incubos)
  3. Мониторинг и диагностика JVM (Андрей Паньгин apangin)
  4. Site Reliability Engineering (Антон Иванов keyplayer)
  5. «Современные» структуры данных (Дмитрий Щитинин dormidoncheg)
  6. Репликация (Дмитрий Щитинин dormidoncheg)

Всего голосов 23: ↑23 и ↓0 +23
Просмотры 6.6K
Комментарии 0

Минуточку внимания

Шардинг в Блокчейне

Высокая производительность *Распределённые системы *Криптовалюты
Перевод

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


Хорошо известно, что Ethereum, самая популярная dApps платформа, обрабатывает меньше чем 20 транзакций в секунду. Из-за этого ограничения цена транзакций и время на их подтверждение очень высоки: несмотря на то, что блок в Ethereum публикуется раз в 10-12 секунд, согласно ETH Gas Station время между отправкой транзакции и тем как она действительно попадает в блок в среднем 1.2 минуты. Низкая пропускная способность, высокие цены и долгое подтверждение транзакций не позволяет запускать на Ethereum какие-либо высокопроизводительные сервисы.


Основная причина того, что Ethereum не может обрабатывать больше 20 транзакций в секунду заключается в том, что каждая нода в Ethereum должна проверить каждую транзакцию. За пять лет с выхода Ethereum было предложено много идей как решить эту проблему. Эти решения можно грубо разбить на две группы: те, которые предлагают делегировать выполнение транзакций небольшой группе нод с очень хорошим железом, и те, которые предлагают каждой ноде обрабатывать только подмножество всех транзакций. Пример первого подхода — это Thunder, в котором блоки создаются только одной нодой, что позволяет, по утверждениям разработчиков, получать 1200 транзакций в секунду, что в 100 раз больше чем у Ethereum. Другие примеры из первой категории — это Algorand, SpaceMesh, Solana. Все эти протоколы улучшают разные аспекты протокола и позволяют выполнять больше транзакций чем в Ethereum, но все ограничены скоростью одной (пусть и очень мощной) машины.

Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Просмотры 6.6K
Комментарии 5

Производительность торговой платформы на простом примере

Высокая производительность *IT-инфраструктура *Серверная оптимизация *Компьютерное железо
Из песочницы

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


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


Однако существуют приложения где важнее время отклика, например торговые платформы в компьютерном трейдинге (HFT), поисковики, робототехника и телеком. Время отклика – это время выполнения «единичной» операции данного типа, например от получения пакета с текущими котировками с биржи до посылки заказа на биржевую операцию. На самом деле время отклика и пропускная способность (количество операций данного типа в единицу времени) тесно связаны, но разница – принципиальна. Увеличить пропускную способность часто можно просто добавив железа (больше серверов), но улучшить время отклика подобным образом проблематично (кроме случаев пиковых нагрузок).

Читать дальше →
Всего голосов 31: ↑26 и ↓5 +21
Просмотры 4.2K
Комментарии 14

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

Высокая производительность *Open source *Виртуализация *Компиляторы *Мозг
image

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

Первым делом выкладываю ссылки на предыдущие части:
Часть 1: пишем языковую ВМ
Часть 2: промежуточное представление программ
Часть 3: Архитектура транслятора. Разбор языковых структур и математических выражений

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

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

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

Начнем творить…
Читать дальше →
Всего голосов 23: ↑20 и ↓3 +17
Просмотры 11K
Комментарии 0

Управление мощностями: в поисках идеального баланса

Блог компании ЮMoney Высокая производительность *Тестирование IT-систем *Серверная оптимизация *Тестирование веб-сервисов *

Здравствуйте! Меня зовут Иван Давыдов, я занимаюсь исследованиями производительности в Яндекс.Деньгах.


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


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


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


Читать дальше →
Всего голосов 33: ↑33 и ↓0 +33
Просмотры 5.3K
Комментарии 8

Apache Kafka и RabbitMQ: семантика и гарантия доставки сообщений

Блог компании ITSumma Высокая производительность *Мессенджеры *Apache *Big Data *
Перевод


Подготовили перевод следующей части многосерийной статьи, где сравнивается функциональность Apache Kafka и RabbitMQ. В этой публикации речь идёт о семантике и гарантии доставки сообщений. Обращаем ваше внимание, что автор учитывал Кафку до версии 0.10 включительно, а в версии 0.11 появился exactly-once. Тем не менее, статья остаётся актуальной и полна полезных с практической точки зрения моментов.
Предыдущие части: первая, вторая.
Читать дальше →
Всего голосов 34: ↑34 и ↓0 +34
Просмотры 36K
Комментарии 2

Технические аспекты блокировки интернета в России. Проблемы и перспективы

Блог компании Конференции Олега Бунина (Онтико) Высокая производительность *Информационная безопасность *Разработка веб-сайтов *Законодательство в IT
Начнем сразу с дисклеймера: ниже принципиально не будет политических вопросов. Административные и юридические вопросы тоже будем обходить настолько, насколько сможем, чтобы полностью не вырывать техническую часть из остальных плоскостей.

Блокировки интернета в России уже есть — это данность, с которой мы живем и должны жить дальше. А раз так, нужно разбираться, как это устроено технически, что может и не может провайдер. Филипп Кулин (schors) давно начал собирать информацию по этому поводу, участвовал в нормативной работе, ходил на разные совещания. В итоге сейчас больше него о блокировках в России знает только Роскомнадзор, но это не точно. Под катом краткая сводка актуального состояния дел.


О спикере: Филипп Кулин (schors) генеральный директор ООО «Дремучий лес» — небольшого российского хостера, занимающегося в основном shared-хостингом.
Всего голосов 120: ↑117 и ↓3 +114
Просмотры 43K
Комментарии 169

Бесшовная (почти) миграция между мажорными релизами PostgreSQL с помощью логической репликации

Блог компании True Engineering Высокая производительность *PostgreSQL *Администрирование баз данных *DevOps *
Tutorial
У нас в True Engineering на одном проекте назрела необходимость в смене версии PostgreSQL с 9.6 на 11.1.

Зачем? База данных на проекте уже объемом 1,5 Tb и растет. Перформанс – одно из основных требований к системе. А сама структура данных эволюционирует: добавляются новые колонки, меняются существующие. Новая версия Postgres научилась эффективно работать с добавлением новых колонок с дефолтным значением, так что не нужно городить кастомных костылей на уровне приложения. Ещё в новой версии добавили несколько новых способов партиционирования таблиц, что тоже крайне полезно в условиях большого объема данных.

Итак, решено, мигрируем. Конечно, можно поднять параллельно со старой новую версию сервера PostgreSQL, остановить приложение, через dump/restore (или pg_upgrade) переместить базу и снова запустить приложение. Нам это решение не подошло из-за большого размера базы, к тому же, приложение работает в боевом режиме, и на даунтайм есть считанные минуты.

Поэтому мы решили попробовать миграцию с помощью логической репликации в PostgreSQL с использованием стороннего плагина под названием pglogical.

В процессе «проб» мы столкнулись с весьма обрывочной документацией по этому процессу (а на русском языке её вообще нет), а также некоторыми подводными камнями и неочевидными нюансами. В этой статье мы хотим изложить свой опыт в виде Tutorial.



TL;DR

  • Всё получилось (не без костылей, о них и статья).
  • Мигрировать можно в рамках PostgreSQL версии от 9.4 до 11.x, с любой версии на любую, вниз или вверх.
  • Даунтайм равен времени, которое требуется вашему приложению, чтобы переподключиться к новому серверу БД (в нашем случае это был перезапуск всего приложения, но в дикой природе, очевидно, «возможны варианты»).
Читать дальше →
Всего голосов 38: ↑38 и ↓0 +38
Просмотры 13K
Комментарии 30

Пробы и ошибки при выборе HTTP Reverse Proxy

Блог компании Ostrovok.ru Высокая производительность *Системное администрирование *Nginx *DevOps *
Всем привет!

Сегодня мы хотим рассказать о том, как команда сервиса бронирования отелей Ostrovok.ru решала проблему роста микросервиса, задачей которого является обмен информацией с нашими поставщиками. О своем опыте рассказывает undying, DevOps Team Lead в Ostrovok.ru.

Читать дальше →
Всего голосов 30: ↑29 и ↓1 +28
Просмотры 23K
Комментарии 7

Будущее инфраструктур центров обработки данных

Блог компании Cloud4Y Высокая производительность *Информационная безопасность *Облачные вычисления *Накопители
Архитектуры центров обработки данных общего назначения (такие ЦОДы сегодня все еще широко применяются) хорошо отрабатывали свои задачи в прошлом, но с недавних пор большинство из них достигли своих границ масштабируемости, производительности и эффективности. В архитектуре таких ЦОД обычно используется принцип совокупного выделения ресурсов — процессоров, жестких дисков и ширины сетевых каналов.

При этом изменение объема используемых ресурсов (увеличение или уменьшение) происходит в таких ЦОДах дискретно, с заранее определенными коэффициентами. Например, при коэффициенте 2 мы можем получить такой ряд конфигураций:
  • 2CPU, 8 GB RAM, 40GB storage;
  • 4CPU, 16GB RAM, 80GB storage;
  • 8CPU, 32GB RAM, 160GB storage;
Однако, для множества задач эти конфигурации оказывается экономически неэффективными, часто клиентам достаточно некоей промежуточной конфигурации, например, — 6CPU, 16GB RAM, 100GB storage. Таким образом, мы приходим к пониманию, что вышеуказанный универсальный подход к выделению ресурсов ЦОД оказывается неэффективным, в особенности при интенсивной работе с большими данными (например, быстрые данные, аналитика, искусственный интеллект, машинное обучение). Пользователи в таких случаях хотят иметь более гибкие возможности управления используемых ресурсов, им необходима возможность независимого друг от друга масштабирования используемых процессоров, памяти и хранилищ данных, сетевых каналов. Конечной целью этой идеи является создание гибкой компонентной инфраструктуры.



Рис. 1. Дата-центрированная архитектура ЦОД.
Читать дальше →
Всего голосов 13: ↑13 и ↓0 +13
Просмотры 3.2K
Комментарии 0

ИТ-гигант уходит с рынка чипов для дата-центров — расскажем, что это значит для индустрии

Блог компании CloudMTS Высокая производительность *IT-инфраструктура *Облачные вычисления *Процессоры
Последний ARM-чип компании Qualcomm для дата-центров — Centriq, вышел чуть более года назад и собрал на старте множество положительных отзывов. Но в середине декабря ИТ-гигант объявил, что закрывает направление, занимающееся производством процессоров для ЦОД.

Рассказываем, с чем связано такое решение и как оно отразится на отрасли в целом.

Читать дальше →
Всего голосов 26: ↑24 и ↓2 +22
Просмотры 19K
Комментарии 15

Как производят лучшие компьютеры в России? Интервью с Артёмом Смирновым из HYPERPC

Блог компании Kingston Technology Высокая производительность *Компьютерное железо Игры и игровые консоли Интервью
Наверное, каждый из вас без проблем может собрать компьютер — найти и заказать правильные комплектующие, распаковать-установить-настроить, поднять нужный софт. Но представьте, что вы эти занимаетесь каждый день, да ещё и не один год подряд. Работа мечты или адская кухня? Нет, можно, конечно, ради интереса сменить род деятельности, испытать всё на своей шкуре… А можно спросить у Артёма Смирнова из HYPERPC, и он всё расскажет!


Читать дальше →
Всего голосов 56: ↑26 и ↓30 -4
Просмотры 24K
Комментарии 40

Haiku β1 — сделаем /b/ OS великой снова

Высокая производительность *Open source *Софт
Из песочницы
Совсем недавно (почти 4 месяца назад) вышла новая Haiku (далее — просто BeOS, ибо проект гораздо удачнее ReactOS — настолько, что разница между Haiku и BeOS уже пренебрежимо мала).

Конечно же, мне давно уже надоели все эти Windows и *nix; хотелось попробовать чего-то новое, поэтому я не мог не пройти мимо этого проекта. Да и недавно прочитанный киберпанк-роман Александра Чубарьяна давал понять, что BeOS — крайне мощная вещь. Кстати, если кто тоже его читал, думаю, Вы догадываетесь, как Яндекс выбрал имя Алиса для своего голосового помощника.
Читать дальше →
Всего голосов 54: ↑50 и ↓4 +46
Просмотры 14K
Комментарии 38

Tornado vs Aiohttp: путешествие в дебри асинхронных фреймворков

Блог компании Авито Высокая производительность *Разработка веб-сайтов *Python *Микросервисы *
Привет! Я Дима, и я довольно давно и плотно сижу на Python. Сегодня хочу показать вам отличия двух асинхронных фреймворков — Tornado и Aiohttp. Расскажу историю выбора между фреймворками в нашем проекте, чем отличаются корутины в Tornado и в AsyncIO, покажу бенчмарки и дам немного полезных советов, как забраться в дебри фреймворков и успешно оттуда выбраться.


Читать дальше →
Всего голосов 58: ↑57 и ↓1 +56
Просмотры 22K
Комментарии 16

Конференция C++ Russia 2019

Блог компании JUG Ru Group Высокая производительность *C++ *Компиляторы *Конференции

Всем привет! Представьте, что C++ Russia больше нет. Куда вы пойдёте вместо этого? Есть множество конференций, посвящённых более широким темам, но наша — одна из немногих, целиком и полностью сфокусированная на C++ и открыто заявляющая, что это будет реальный хардкор. Выбора немного. Хорошо, что мы никуда не исчезали! В следующий раз C++ Russia пройдёт уже этой весной.


Конференция состоится 19-20 апреля в Москве. Скорее всего, будет дополнительный третий день мастер-классов, которые не входят в основную программу.


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

Читать дальше →
Всего голосов 57: ↑53 и ↓4 +49
Просмотры 9.6K
Комментарии 11

Экстремальное масштабирование в Alibaba JDK

Блог компании JUG Ru Group Высокая производительность *Java *Системное программирование *Виртуализация *

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


  • Разработали мультитенантную виртуальную Java-машину;
  • Придумали механизм работы объектов, не приносящих оверхеда на сборку мусора;
  • Сделали что-то вроде аналога ReadyNow из Azul Zing;
  • Запилили собственные корутины с yield-ами и континуациями (и даже готовы поделиться опытом с Loom, о котором я писал осенью);
  • Прикрутили ко всем этим чудесам собственную подсистему диагностики.

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



Доктор, откуда вы берёте такие картинки? Уголок «обложек O'Reilly»: бэкграунд для КДПВ предоставлен Joshua Newton и изображает священный танец Сангьянг Джаран в городе Убуде, Индонезия. Это классический балийский перформанс, состоящий из огня и трансового танца. Человек с непокрытыми пятками двигается вокруг костра, разведённого на кокосовой шелухе, распихивая ногами разное и танцуя в трансовом состоянии под действием конского духа. Идеальная иллюстрация для собственного JDK, правда?

Читать дальше →
Всего голосов 32: ↑31 и ↓1 +30
Просмотры 12K
Комментарии 10

Сравниваем PHP FPM, PHP PPM, Nginx Unit, React PHP и RoadRunner

Высокая производительность *PHP *Программирование *Тестирование веб-сервисов *


Тестирование производилось с помощью Yandex Tank.
В качестве приложения использовались Symfony 4 и PHP 7.2.
Целью являлось сравнение характеристик сервисов при разных нагрузках и нахождение оптимального варианта.
Для удобства все собрано в docker-контейнеры и поднимается с помощью docker-compose.
Под катом много таблиц и графиков.
Читать дальше →
Всего голосов 72: ↑67 и ↓5 +62
Просмотры 42K
Комментарии 46

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