Поймал себя на ощущении, что хочется поделиться своим опытом работы с интеловской энергонезависимой памятью (Intel Optane memory или Intel PMem). Я буду для краткости называть ее ПМем. Думаю, что несмотря на объем продаж в сотни миллионов долларов, пока мало кто с ней сталкивался и знает ее специфику. Я же по долгу службы занимаюсь ей уже довольно продолжительное время и гонял на ней различные приложения и микро-бенчмарки. А также добивался ее эффективного использования модифицируя под нее клиентские коды.
В принципе литературы по ней навалом, по крайней мере на английском, но практические советы и простое и понятное описание ее поведения найти не просто, если вообще возможно. Я хочу рассказать что от нее можно ожидать, специфику ее режимов работы в тесной привязке к производительности. А также поясню, в каких случаях она работает хорошо, и в каких вряд ли оправдает ожидания. На всякий случай здесь интеловская заглавная маркетинговая страница по этой технологии.
Если Вы не читали мою первую статью на тему, советую начать с нее.
Раз уж я обмолвился про некоторое, хотя и весьма косвенное отношение к финансовым математикам, позвольте мне развить тему до абсурда исходя из того как ее развивают в Риск Аналитике. При расчете цены опциона часто считают также чувствительность этой цены к набору параметров. Например, как будет меняться цена опциона при изменении цены акции, на которую выпущен опцион, или при изменении волатильности цены акции, или ставки Центробанка и т.д.
Нас может интересовать как меняется вероятность выигрыша игры при изменении вероятности выигрыша очка. Фактически мы хотим посчитать производную от первого по второму. Простейший подход — оценить ее на глаз из графика. Видно, что максимум достигается в ситуации 50:50. При изменении шансов выигрыша очка с 0.45 до 0.55 вероятность победы в бадминтон возрастает с 0.26 до 0.74, то есть на 0.48. Грубая оценка дает производную в районе 5. То есть если с равных шансов Вы растете до 0.51 (то есть 51%), прирост в вероятности выигрыша игры будет около 0.05 (или 5%). Аналогичным образом можно посчитать производную в любой другой точке на графике.
Надеюсь, среди читателей есть любители спорта. Если Вы играете в бадминтон или настольный теннис, то Вы возможно задавались вопросом: какова вероятность выиграть игру при известной вероятности выиграть очко? Допустим Вы проигрываете своему сопернику со счетом около 11:7. Казалось бы всего 4 очка разницы, но при этом никак не удается выиграть партию. Не везет? Предлагаю решить эту задачу и получить ответ на этот вопрос.
Имея косвенное отношение к финансовой математике я знаю, что именно для финансового математика такая задача покажется особенно несложной. Возможные методы ее решения очень напоминают методы расчета цены опциона. Но есть в этой задачи и нюансы, несколько нетипичные для финансов. Давайте рассмотрим варианты решения.
В этой статье я хочу в научно-популярной форме рассказать об оптимизации времени отклика в торговых платформах бирж и банков (HFT). Для справки речь идет о временах от сотен наносекунд до сотен микросекунд. Для большинства других приложений многие приведенные ниже методы оптимизации неактуальны просто в силу отсутствия столь жестких требований.
Обычно мы рассматриваем производительность в единицах пропускной способности. Например в Гигафлопах. Задача оптимизации в таких случаях сводится к выполнению максимального количества вычислений за единицу времени или решение задачи за минимальное время. Дизайн процессора рассчитан в первую очередь на достижение максимального количества вычислений за единицу времени и стандартные техники оптимизации на то же самое.
Однако существуют приложения где важнее время отклика, например торговые платформы в компьютерном трейдинге (HFT), поисковики, робототехника и телеком. Время отклика – это время выполнения «единичной» операции данного типа, например от получения пакета с текущими котировками с биржи до посылки заказа на биржевую операцию. На самом деле время отклика и пропускная способность (количество операций данного типа в единицу времени) тесно связаны, но разница – принципиальна. Увеличить пропускную способность часто можно просто добавив железа (больше серверов), но улучшить время отклика подобным образом проблематично (кроме случаев пиковых нагрузок).