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

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

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

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

Топологии серверов приложений WebSphere Application Server для обеспечения высокой доступности

Время на прочтение4 мин
Количество просмотров22K
Здравствуй, Хабр!

В этой статье я хочу рассказать какие есть подходы для обеспечения отказоустойчивости и масштабирования инфраструктуры серверов приложений WebSphere Application Server 7 компании IBM.
Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

В чем причина засора? Cтатистика веб-приложений

Время на прочтение5 мин
Количество просмотров13K
В прошлом нашем посте внимательный хабраюзер dovg отметил скриншот с красивым графиком. На нем было отражено время выполнения различных операций поиска. А поскольку статистика и анализ производительности высоконагруженных проектов – тема довольно актуальная, мы решили рассказать про систему, которую используем для сбора и анализа статистики «Мамбы». Как и в случае поиска, мы используем собственное решение, но в отличие от него BTP (никто не помнит, как эта аббревиатура появилась на свет, но почему-то именно она стала названием) находится в открытом доступе, и при желании вы можете установить её на своих серверах.

image
Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии25

Новый виток архитектуры CUDA

Время на прочтение4 мин
Количество просмотров14K
Всем привет!
В начале апреля я увидел анонс новой видеокарты от nVidia, с новым мажорным индексом compute capability – 3.0. Внимательно изучив спеки был удивлён – по всему выходило, что теперь ветвления будут приводить к самым худшим последствиям: большим потерям производительности. Мне нравилось, что от версии к версии ветвления играют всё меньшую роль, а Kepler показался в этом плане шагом назад. Мозгом я понимал, что такое вряд ли возможно и решил немного выждать.
И вот на этой неделе мне пришёл whitepaper по новой числодробилке на архитектуре Kepler и многое прояснил.
А дальше - чистейший текст и ни одной картинки
Всего голосов 49: ↑45 и ↓4+41
Комментарии116

Архитектура Pinterest – 18 миллионов посетителей, 10-кратный прирост, 12 сотрудников, 410 ТБ данных

Время на прочтение2 мин
Количество просмотров6.8K
История Pinterest очень похожа на Instagram. Феноменальный рост, огромное количество пользователей и хранимых данных, при этом поразительно мало сотрудников. А еще все в облаке.

Действительно, ни Pinterest ни Instagram не сделали больших научных или технологических открытий, но это скорее является следствием простоты использования облачных технологий, нежели признаком заката эры инноваций в Кремниевой Долине (Золотой век Кремниевой долины окончен, и мы танцуем на её могиле – прим. переводчика). Цифры в заголовке и оценки стоимости этих компании настолько велики, что нам кажется, будто бы за ними стоит некий вид технологической революции, обеспечивающей их бурный рост. Однако, эта революция гораздо более искусна – она показывает, насколько легко добиться столь быстрого роста, если вы способны реализовать хорошую идею. Привыкайте. Теперь это норма.
Вот что сегодня представляет собой Pinterest...
Всего голосов 62: ↑58 и ↓4+54
Комментарии113

Команда Microsoft Research побила мировой рекорд по сортировке

Время на прочтение2 мин
Количество просмотров2K
На сайте sortbenchmark.org ежегодно проводятся конкурсы по сортировке больших наборов данных. Один из видов соревнований — minute sort, в котором необходимо за минуту прочитать с диска и сортировать как можно большее число записей и сохранить результат в файл. Конкурс проходит в двух категориях — Indy, без ограничений на используемое железо, и Daytona — должны использоваться только обычные компьютеры “из магазина”.

Команде Microsoft Research удалось многократно превысить державшийся с 2009 года рекорд Yahoo в категории Daytona. Их кластер, состоящий из 1033 дисков на 250 машинах, справился с 1401 гигабайтом данных. Это почти втрое лучше результата Yahoo (500 гигабайт), при том, что кластер Yahoo был почти в шесть раз больше (5624 диска на 1406 машинах). Более того, майкрософтовский кластер побил и прошлогодний рекорд в категории Indy (1353 гигабайта).
Читать дальше →
Всего голосов 89: ↑75 и ↓14+61
Комментарии41

Как найти девушку за 250 микросекунд

Время на прочтение4 мин
Количество просмотров89K
В отличие от Европы и Америки в России к сайтам знакомств преобладает осторожное отношение. Однако, надежда нажать на волшебную кнопочку и найти себе любовь не гаснет в сердцах многих. И мы должны эту надежду оправдывать. Конечно, сразу найти идеально подходящую “половинку” мы не обещаем, но предложить десятки, сотни или в отдельных случаях тысячи вариантов, отвечающих именно вашим запросам, просто обязаны. Что и делаем, причем очень быстро.

Средний поиск по базе из 11 миллионов анкет, имеющих от 4 до 30 параметров каждая, занимает у нас в среднем 3.5 милисекунды. И при этом кроме поиска демон-серчер «Мамбы» выполняет следующие, в том числе не вполне традиционные задачи:
  • для каждой конкретной анкеты выдает ее место в поиске (каждый пользователь, заходя в свою анкету, видит сообщение «Вы находитесь на N месте в поиске»)
  • выдает конкретную анкету из списка по первичному ключу
  • производит непосредственный поиск анкеты по заданным параметрам

Несмотря на то, что наш поиск с самого начала разрабатывался собственными силами, время от времени возникали мысли использовать что-то уже известное, обкатанное и гарантированно эффективное. Ну, а если мы задумываемся о поиске, первым в голову приходит Sphinx.
Читать дальше →
Всего голосов 99: ↑82 и ↓17+65
Комментарии140

Вычисление CRC32 строк в compile-time

Время на прочтение5 мин
Количество просмотров19K
По своей программистской природе я очень не люблю неоптимальность и избыточность в коде. И вот, читая в очередной раз на работе исходный код нашего проекта, вновь наткнулся на одну особенность в способе реализации перевода строк продукта на разные языки.

Локализация здесь осуществляется довольно нехитро. Все строки, требующие перевода, оборачиваются в макрос _TR():
wprintf(L"%s\n", _TR("Some translating string"));

Макрос возвращает нужную версию текста в зависимости от текущего используемого языка. Определён он следующим образом:
#define _TR(x) g_Translator.Translate(x)

Здесь происходит обращение к глобальному объекту g_Translator, который в функции Translate() считает в рантайме crc32 от указанной строки, ищет в своей xml-базе перевод с совпадающей контрольной суммой и возвращает его.

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

Немного погуглив по запросу «compile-time crc32» я быстро понял, что задача это не самая тривиальная, а готовых решений мне найти так и не удалось.
Читать дальше →
Всего голосов 60: ↑53 и ↓7+46
Комментарии35

15 лет назад компьютер Deep Blue обыграл человека в шахматы

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


Корпорация IBM отмечают ещё один юбилей в своей истории — 11 мая 1997 года компьютер Deep Blue в матче из 6 партий обыграл чемпиона мира по шахматам Гарри Каспарова: дважды победил компьютер, один раз — человек и три партии было сыграно в ничью.

Победа Deep Blue не далась легко IBM — в недрах корпорации еще с начала 1950-х годов прошлого века велись работы по созданию специализированных вычислительных машин и соответствующего программного обеспечения. В 1985 году аспирант университета Карнеги Мелоун Фенг Хсу (Feng-hsiung Hsu) в ходе работы над своей диссертацией построил компьютер для решения шахматных задач, получивший название ChipTest. Его коллега Мюррей Кемпбелл (Murray Campbell), присоединившийся к проекту позднее, вместе с самим Фенгом Хсу были приняты в подразделение IBM Research, занимавшееся разработкой исследовательских инновационных задач. Именно они ответственны за появление проекта Deep Blue, которому в 1989 году оказалось ещё не под силу играть с человеком — тогда Каспаров выиграл. Аналогичная история повторилась в 1996 году, однако уже через год третья версия программы смогла взять реванш, и финальная партия закончилась за 19 ходов — при том, что партии у шахматистов уровня Каспарова длятся около четырёх часов.

Технически Deep Blue представлял из себя компьютер с 32-ядерным (32-node) процессором IBM POWER2, каждый из которых был подключён к восьми специализированным шахматным процессорам VLSI, работающим на серверной платформе RS/6000. Код Deep Blue был написан на С, а в качестве операционной системы использовалась IBM AIX.

После победы Deep Blue был помещён в Смитсоновский музей Вашингтона, положив начало новой эпохе суперкомпьютеров IBM Blue Gene.

Под катом видео, подготовленное IBM к юбилею, в котором Мюррей Кемпбелл — один из первых разработчиков Deep Blue — рассказывает о своём проекте.
Посмотреть
Всего голосов 18: ↑15 и ↓3+12
Комментарии32

[SSD only] Активация TRIM в Mac OS Lion / Mountain Lion 10.8

Время на прочтение6 мин
Количество просмотров115K
Здравствуйте, уважаемые хабражители.

Этот перевод предназначен в первую очередь для тех, кто уже использует SSD диск и MacOS Lion. Лично я год с хвостиком радуюсь производительности SSD Intel X-25M и отсутствию карусельки смерти чего и вам от души желаю.

До сегодняшнего дня я был уверен, что мой SSD работает на 100% своих возможностей. Но не тут-то было! Если вы купили свой яблочный компьютер без SSD, то есть из магазина он выехал с обычным HDD, то обещанный во Льве TRIM у вас будет не активен, как оказалось только изначально укомплектованные SSD накопителем компьютеры имеют эту функцию по умолчанию. Проблема, как вы понимаете, в вызывающем вопросы маркетинге компании имеет софтверные корни, а не железные. И на эту подлянку от Apple мистер Грант Пеннэл предлагает свой болт с резьбой.

Добро пожаловать под Хабракат, там мы расчехлим Терминал и поправим это вопиющие недоразумение...
Всего голосов 45: ↑40 и ↓5+35
Комментарии94

Будущее за микросерверами на MIPS-процессорах

Время на прочтение2 мин
Количество просмотров9.1K
Я очень удивился когда не нашёл на Хабре обсуждение двух взаимосвязанных новостей:
1. «AMD завершила поглощение SeaMicro»;
2. «AMD хочет приобрести MIPS, но сможет ли она опередить Google?».

Вы только представьте, что если AMD действительно купит компанию MIPS Technologies, и по заказу AMD инженера MIPS Technologies перепроектируют 64-х разрядный процессор серии MIPS R1x000 по современным технологическим нормам в 22 нм с использованием всех интеллектуальных разработок от компании SeaMicro. В результате может получиться замечательный энергоэффективный микропроцессор для микросерверов которые тут же начнёт выпускать SeaMicro.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии16

Nvidia для профессиональных 3D приложений

Время на прочтение6 мин
Количество просмотров180K
Пол года назад я искал себе видеокарту, на которой я смог бы заниматься 3d моделированием, и рендерингом на GPU. В связи с появлением на рынке большого числе рендеров на CUDA мне не терпелось приобрести видеокарту с поддержкой CUDA, а именно Nvidia.

Как некоторые уже знают, Nvidia выставляет на продажу видеокарты нескольких моделей Geforce, Quadro, Tesla, ION, Tegra. В этом коротком сравнении упустим ION и Tegra, т.к. предназначены для мобильных устройств и слабые по производительности.

Нам нужна мощь!

Nvidia power...

Читать дальше →
Всего голосов 45: ↑38 и ↓7+31
Комментарии35

Rule Engine, или как сделать систему проще

Время на прочтение5 мин
Количество просмотров17K
Добрый дня всем!

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

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

Вопросы и ответы



Задайте себе вопросы:

  • Кто, как и на основании чего решает, в каком порядке самолеты садятся и взлетают?
  • Какова может быть цена неверного решения?


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

Итак, кто? Ответ: в большинстве случаев люди. Не без помощи компьютеров конечно, но все таки люди. Теперь вопрос: как? Есть список возможных вариантов, человек из них выбирает. Вариантов дается немного, поэтому в принципе особых мук выбора нет. И последний вопрос: на основании чего? Есть правила, их нужно придерживаться и по возможности выполнять. Например, задержка вылета более чем на полчаса весьма нежелательна. Ну и главный вопрос: а причем тут Rule Engine?
Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии6

OPTIMIZE огромных таблиц в условиях ограниченных ресурсов или закат солнца вручную

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

Предыстория


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

Количество записей в данной таблице до недавнего времени колебалось от 30 до 50 миллионов. Обычный OPTIMIZE даже при таких условиях не всегда срабатывал. Поэтому отец-основатель (Евгений Васильевич) придумал пересобирать таблицу таким образом: все актуальные (is_deleted = 0) копировались в таблицу с идентичной структурой с добавлением префикса по дате и времени, а когда копирование завершалось, оставалось только удалить исходную таблицу, а новую переименовать в исходную.

Такой подход работал надежно, пока не потребовалось повысить скорость поиска предложений. И тут начинается наша небольшая история.
Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии7

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

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Измерение производительности Play Framework 2.0

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

Измерение производительности Play Framework 2.0


Я уже рассказывал о программной платформе Typesafe Stack 2.0. В том посте шла речь об одном из компонентов платформы — фрэймворке Akka 2.0, реализующем модель акторов на JVM. Сегодня я хочу написать о возможностях другой составляющей Typesafe Stack — фрэймворке Play 2.0. Хотя о функциональности данного компонента уже рассказывали здесь и здесь, тема производительности решений под управлением Play 2.0 по-моему осталась не раскрытой.

Тестирование фрэймворка будет проводиться с помощью простейшего приложения разработанного на его основе. В результате выполнения тестов необходимо ответить на следующие вопросы. Какое максимально возможное количество одновременных подключений? Сколько оперативной памяти потребляют эти подключения? Сколько запросов в единицу времени может обработать тестируемое приложение?
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии31

Рендеринг мира

Время на прочтение3 мин
Количество просмотров7K
Ведущий программист компании MapBox Юнг Хан (Young Hahn) опубликовал стенограмму своей презентации с конференции FOSS4G.

Компания MapBox известна как разработчик open source картографической дизайн-студии TileMill и тайлового сервера TileStream. Недавно они выпустили новую систему MapBox Streets — аналог Google Streets, но на открытых картах OpenStreetMap. Это глобальный картографический сервис с зуммированием до уровня отдельных домов, тоннелей, станций метро и т.д.

В презентации, названной «Рендеринг мира» (Rendering the World) ведущий программист компании рассказывает, как им удалось сгенерировать тайлы на таком уровне зуммирования для всей планеты.
Читать дальше →
Всего голосов 60: ↑51 и ↓9+42
Комментарии24

Эволюция архитектуры: от «самописных» сервисов к HandlerSocket

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


Сегодня мы расскажем о том, как в Badoo изменился подход к проектированию нагруженных “key-value” сервисов. Вы узнаете, по какой схеме такие сервисы создавались нами несколько лет назад (использование БД в качестве репозиториев и специализированного демона как интерфейса к данным), с какими трудностями мы при этом столкнулись и к какой архитектуре в результате пришли, разрешив появившиеся проблемы.
Читать дальше →
Всего голосов 82: ↑76 и ↓6+70
Комментарии34

[HighLoad] Алексей Рыбак: мастер-класс — Основы построения масштабируемых высоконагруженных веб-проектов 10 июня 2012

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

Интервью с ведущим МК на DevConf2012 — Алексеем Рыбаком (Badoo.com)
devconf.ru/offers/31

Это мой хобби-проект где-то с 2006 года, и я постоянно его дополняю.
Это крайне интересный опыт, он сильно отличается от того, что я приобретаю на работе, поэтому буду читать до тех пор, пока не надоест.

Только-только устоялись базовые подходы к разработке масштабируемых приложений, ещё каких-то 10 лет назад нашей отрасли вообще толком не существовало! Мы по-прежнему далеки от каких-то сред разработки или фреймворков, которые дали бы нам все необходимые решения из коробки. Начинает появляться некоторое количество технологий и инструментов, которые продвигаются именно как универсальное решение проблем масштабирования.
Читать дальше →
Всего голосов 42: ↑32 и ↓10+22
Комментарии13

Go for IT. Часть первая

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

Неуловимый Go.


Помните анекдот про неуловимого Джо? Именно восклицанием «Да кому он нужен!», прозвучавшим в форме вопроса "ЗАЧЕМ?", был встречен на Хабре релиз первой стабильной версии GO 1.

Именно на этот вопрос я хочу ответить циклом статей, оформленных в необычном для Хабра формате — в виде пошаговой совместной разработки действующего веб-проекта — с живым обсуждением и добавлением функционала. А чтобы вдвойне оправдать внесение цикла ещё и в хаб «Высокая производительность», мы поставим перед собой задачу создать не просто «хомяка», а проект, который наглядно продемонстрирует habri et orbi способность выдерживать значительные естественные нагрузки.

Вместо аперитива: реализация простейшего динамического веб-приложения на языке Go работает в 5-20 раз быстрее аналогичной Python-реализации. И всего в два раза уступает скорости отдачи статики Nginx-ом.

В рамках этого проекта, помимо самого языка Go, мы косвенно затронем и другие (относительно новые) технологии веб-разработки — HTML5, CSS3, Redis, MongoDB. Также я постараюсь вытащить из закутков долговременной памяти некоторые из трюков в области безопасности и экономии на спичках, коих накопилось много за полтора десятка лет работы в этой области. Устраивайтесь поудобнее, запасайтесь терпением и кофе — под катом «много букв», а ведь это только вводная часть :)
Читать дальше →
Всего голосов 95: ↑86 и ↓9+77
Комментарии179

Программа «Рыбка» решила королевский гамбит на 1 апреля

Время на прочтение1 мин
Количество просмотров8.1K
UPD 4.04. Новость оказалась первоапрельской шуткой ChessBase, которая из-за ошибки CMS была опубликована на сайте 2 апреля. Поверила даже Википедия, изменив статью про королевский гамбит.

Запустив шахматную программу Rybka на рабочей станции IBM POWER 7 с 2800 ядрами, автор программы сумел решить королевский гамбит — один из самых сложных и острых дебютов шахматной партии, который активно использовали Борис Спасский и Бобби Фишер. Компьютерная программа рассчитала исход всех вариантов развития шахматной партии и пришла к неожиданным результатам.



Оказывается, в случае принятия чёрными жертвы на f4 у белых остаётся только один ход, который ведёт к ничьей (в случае идеальной игры с обеих сторон) — слон на e2. Во всех остальных случаях белые получают мат.
Читать дальше →
Всего голосов 105: ↑93 и ↓12+81
Комментарии118

10 миллионов хитов в день с WordPress на сервере за $15

Время на прочтение1 мин
Количество просмотров17K
Английский разработчик Эван Лейт (Ewan Leith) опубликовал пошаговую инструкцию, как поднять виртуальный микросервер на Amazon, Linode или другом облачном хостинге, который сможет крутить блог WordPress и выдерживать 10 миллионов хитов в сутки (отчёт составлен с помощью Blitz.io), при этом будет стоить всего пятнадцать долларов в месяц.

Инструкция описывает, как последовательно установить Ubuntu 11.10 (Oneiric), MySQL, PHP с PHP FPM, APC и модулем MySQL, Nginx с конфигурацией для WordPress, ну и сам WordPress. После этого сервер работает ещё довольно медленно, но всё меняет установка W3 Total Cache и Varnish, которые вместе с Nginx способны сотворить настоящее чудо.

Выполнить действия из инструкции способен даже человек, не являющийся техническим специалистом.
Читать дальше →
Всего голосов 85: ↑74 и ↓11+63
Комментарии81

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