Почти в самом начале создания платформы (некоего фундамента, фреймворка на котором базируются все прикладные решения) нашего облачного веб-приложения СБИС мы поняли, что без инструмента, позволяющего сообщить пользователю о каком-либо событии с сервера, жить будет довольно-таки трудно. Все мы хотим мгновенно видеть новое сообщение от коллеги (которому лень пройти 10 метров), поднимающую корпоративный дух новость от руководства, очень важную задачу от отдела тестирования или получение поощрения (особенно денежного). Но путь становления был тернист, поэтому расскажем немного про трудности, которые мы встретили при взрослении от 5.0e3 до 1.0e6 одновременных подключений от пользователей.
Рубрика «высокая производительность» - 83
Сервис оповещения миллиона пользователей с помощью RabbitMQ
2017-10-30 в 10:12, admin, рубрики: AMQP, erlang, Erlang/OTP, RabbitMQ, stomp, tensor, Блог компании Тензор, высокая производительность, СБИС, Серверная оптимизация, Системы обмена сообщениями, тензорСовместный доступ с RAIDIX и Apple Xsan. Яблочный спас для видеомонтажеров
2017-10-27 в 14:12, admin, рубрики: 2k, 4k, post-production, xsan, Блог компании RAIDIX, высокая производительность, Серверное администрирование, СХД, файловая система, хранение данных
Эффективное хранение файлов большого размера в различных отраслях становится непростой задачей. Так, в медиаиндустрии используются колоссальные объемы контента. Учитывая, что цифровое видео формата 2K или 4K требует в 4 раза больше свободной емкости, чем файлы стандартного высокого разрешения, художественный фильм средней продолжительности может занимать от 2 (в формате Full HD) до 15 (в 8К) терабайт данных.
Специалисты студии оперируют файлами терабайтных размеров и осуществляют видеомонтаж, цветокоррекцию и окончательную обработку материала с помощью ресурсоемких профессиональных приложений.
Читать полностью »
Архитектура хранения и отдачи фотографий в Badoo
2017-10-27 в 12:07, admin, рубрики: Анализ и проектирование систем, артем денисов, архитектура, Блог компании Конференции Олега Бунина (Онтико), высокая производительность, масштабируемость, Серверная оптимизация, системы хранения данных, хранилища данных
Артем Денисов ( bo0rsh201, Badoo)
Badoo — это крупнейший в мире сайт знакомств. На данный момент у нас зарегистрировано порядка 330 миллионов пользователей по всему миру. Но, что гораздо более важно в контексте нашего сегодняшнего разговора, — это то, что мы храним около 3 петабайт пользовательских фотографий. Каждый день наши пользователи заливают порядка 3,5 миллионов новых фотографий, и нагрузка на чтение составляет порядка 80 тысяч запросов в секунду. Это достаточно много для нашего бэкенда, и с этим иногда бывают трудности.

Я расскажу про дизайн этой системы, которая хранит и отдает фотки в целом, и приведу на нее взгляд с точки зрения разработчика. О том, как она развивалась, будет краткая ретроспектива, где я основные вехи обозначу, но уже более подробно буду говорить только о тех решениях, которые мы сейчас используем.
Читать полностью »
Реализация HFT роботов на устройствах CEPappliance
2017-10-27 в 8:57, admin, рубрики: algorithmic trading, fpga, HFT-трейдинг, high performance, pre-trade, risk checks, Анализ и проектирование систем, высокая производительность, Программирование, стартапы; команда; опытМы уже 2 года плотно общаемся с HFT трейдерами и разработчиками решений для HFT торговли. И испытываем некоторую неловкость от того, что никто в этой среде открыто не рассказывает о своих технологических успехах. Так как мы делаем устройства на основе FPGA CEPappliance, применимые в том числе для HFT торговли, мы неустанно интересуемся кто и как использует FPGA в этой сфере. Складывается навязчивое впечатление, что FPGA в HFT торговле, как секс у подростков — все о них говорят, но мало кто ими занимается, да еще и успешно.
Читать полностью »
Качественное уменьшение изображений за константное время
2017-10-26 в 7:53, admin, рубрики: Алгоритмы, высокая производительность, обработка изображений, ресайзХочу поделиться очень простым и эффективным методом ресайза изображении, который работает за константное время относительно размера исходного изображения и дает неожиданно качественный результат. Метод применим для любых языков и приложений.
Для начала давайте порассуждаем логически. Если вы делаете ресайз изображения, наверное вы хотите чтобы результат хотя бы отдаленно напоминал оригинал. Для этого нужно учесть как можно больше информации из исходного изображения. Вы слышали о методе «ближайшего соседа»? В этом методе для каждой точки конечного изображения просто берется какая-то одна точка из исходного изображения в неизменном виде.

Уменьшение изображения 4928×3280 до 256×170 ближайшим соседом.
Рекомендую смотреть примеры из статьи в браузере в масштабе 100% и без ретины. То есть по максимуму исключить ресайз при просмотре.
Результат не представляет ничего хорошего. Изображение дерганое, зернистое, даже трудно понять что на нем изображено. Особенно если на исходном изображении было много мелких деталей или оно само было зернистым. Почему так получается? Потому что в конечном изображении было учтено очень мало информации из исходного. Если условно отметить на исходном изображении те точки, которые попадают в конечное, получится вот такая сеточка:

Точки, которые попадут в конечное изображение размером 20×13.
Читать полностью »
Студенческие суперкомпьютерные соревнования: инструкция по применению
2017-10-25 в 19:03, admin, рубрики: Competition, HPC, supercomputing, высокая производительность, параллельное программированиеПривет! Я капитан команды СПбГУ, принимавшей участие в соревнованиях ASC. На прошлой неделе вышла статья stealapanda об опыте работы с мощнейшим суперкомпьютером мира Sunway Taihulight. Стало ясно, что многие впервые слышат о таком мероприятии. В своей статье я хочу рассказать в целом об HPC соревнованиях, как они проводятся и какие навыки пригодятся если вы захотите вписаться в эту увлекательную авантюру. Также на примере ASC опишу как это все проходит.
Что такое HPC соревнования и чем они отличаются от обычного спортивного программирования
Асинхронность 3: Субъекторная модель
2017-10-23 в 7:15, admin, рубрики: c++, асинхронность, водород, высокая производительность, каналы, многопоточность, обмен сообщениями, параллельное программирование, Программирование, синхронизация, сопрограммы
Предисловие
Эта статья является продолжением цикла статей про асинхронность:
Спустя 3 года я решил расширить и обобщить имеющийся спектр асинхронного взаимодействия с использованием сопрограмм. Помимо этих статей также рекомендуется ознакомиться с универсальным адаптером:
Введение
Рассмотрим электрон. Что он из себя представляет? Отрицательно заряженная элементарная частица, лептон, обладающий некоторой массой. Это означает, что он может участвовать по меньшей мере в электромагнитных и гравитационных взаимодействиях.
Читать полностью »
Профилирование кода на C-С++ в *nix-системах
2017-10-18 в 12:04, admin, рубрики: c++, nix-системы, perf, александр алексеев, Блог компании Конференции Олега Бунина (Онтико), высокая производительность, профилирование, профилирование производительности, системное программирование
Александр Алексеев (Postgres Professional)
Отличный обзорный доклад конференции HighLoad++ 2016 о том, как надо проводить профилирование программного кода. О типичных ошибках, происходящих при измерениях. И, конечно, об инструментах:
— gettimeofday
— strace, ltrace, truss
— gprof
— gdb / lldb
— perf
— pmcstat
— SystemTap
— DTrace
— HeapTrack
— BPF / bcc

В начале у меня будет не слишком техническая часть, о том, как не надо делать benchmark’и.
Я наблюдаю, что люди часто делают типичные ошибки, когда делают benchmark’и. И вот первая из них…
Читать полностью »
Послевкусие от Kotlin, часть 3. Корутины — делим процессорное время
2017-10-17 в 16:32, admin, рубрики: java, kotlin, высокая производительность, параллельное программирование, параллельные вычисленияJava позволяет писать последовательный, параллельный и асинхронный код. Асинхронный — это когда регистрируется callback, который запустится после какого-либо события (например, файл прочитан). Это позволяет избежать блокировки потока, но ломает последовательность выполнения, так что на java пишут такой код скорее когда нет других вариантов. Kotlin даёт решение — корутины, с ними асинхронный код выглядит почти так же, как последовательный.
По корутинам мало статей. Конкретных примеров, показывающих их преимущества — ещё меньше.
Что нашёл:
- Избавление от callback hell. Актуально для UI
- Понравились концепции channels и actors. Они не новы, можно и без них, но для event систем должны очень хорошо подойти
- Совет от Романа Елизарова: «Корутины нужны для асинхронных задач, которые ожидают чего-либо большую часть времени»
Последнее интересно — большинство enterprise приложений всё время что-нибудь ждут: БД, другие приложения, изредка и файл нужно прочесть. И всё это может быть полностью асинхронным, а значит всё приложение можно перевести на асинхронную обработку запросов.
Итак, посмотрим как ведут себя корутины под нагрузкой.
Читать полностью »
Практическое руководство по анализу производительности приложений
2017-10-16 в 17:58, admin, рубрики: .net, C#, dotnext, анализ производительности, Блог компании JUG.ru Group, высокая производительность, ГольдштейнВы уже наверняка знаете, что спустя несколько месяцев после конференций мы выкладываем видеозаписи всех докладов. А для самых лучших, как в случае с кейноутом Саши goldshtn Гольдштейна, мы готовим еще и расшифровки — чтобы приобщиться могли и те, кто не любит видеоформат.
Саша рассказывает о способах и инструментах анализа производительности приложений, в том числе разработанных им самим.
В основе статьи — выступление Саши на конференции DotNext 2017 Piter. Саша работает техническим директором израильской тренинговой и консалтинговой компании Sela и не понаслышке знает, как проводить анализ производительности. Как его лучше начинать, чем завершать, какие инструменты стоит использовать, а каких избегать, читайте под катом.


