Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

19
Devexperts Research [основные направления] TMPA-2014 Дмитрий Цителов Виталий Трифанов Роман Елизаров

description

Tools & Methods of Program Analysis 2014 (TMPA-2014) Conference in Kostroma, November 14-15 Current Challenges in the Area of Efficient Parallel Algorithms and Data Structure Development Devexperts is a leading provider of high-load software used in integrated automation for brokerages, exchanges and other players in the financial services industry. The specific nature of the industry dictates the need for developing and verifying lock-free / wait-free algorithms and data structure implementations, which efficiently use multiprocessor systems with shared memory, to prove the correctness of their work. Over the last decade, this area has become increasingly relevant, although a number of topics still leave much room for further research. In quite a few cases, theoretical research has not been supported by practical implementations either. We are going to speak about the main research streams, which are relevant to us as a company. We will also touch upon the topic of exploring ways to set up mutually beneficial cooperation with universities at the confluence of science and business.

Transcript of Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Page 1: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Devexperts Research

[основные направления]TMPA-2014

Дмитрий ЦителовВиталий Трифанов

Роман Елизаров

Page 2: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Devexperts

• Разработка ПО для финансовых компаний– Брокеры, дилеры, биржи

• Глубоко специализированная компания– R&D полного цикла– QA– M&S 24/7

• dxFeed – сервис доставки рыночных данных

Page 3: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Много данных, всё обновляется

Page 4: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Поток на входе непрерывно растет

Page 5: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Особенности

Page 6: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

ОсобенностиДля эффективности!

Page 7: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Бесплатный обед закончился!

Page 8: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Хотим

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

● Уметь доказывать его корректность на модели

● Уметь верифицировать сам код (на соответствие модели)

Page 9: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Пример: Data Racepublic class Account {

private int amount = 0;

}

public class TestRace {

public static void main (String[] args) {

final Account a = new Account();

Thread t1 = depositAccountInNewThread(a, 5);

Thread t2 = depositAccountInNewThread(a, 6);

t1.join();

t2.join();

System.out.println(a.amount); //5? 6? 11?

}

}

Page 10: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Expected execution

Page 11: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Racy execution

Page 12: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Как искать гонки?

Динамически Быстро Точно

Ограничить область поиска

Важно не потерять информацию!

Page 13: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Синхронизационные контракты

• Факты синхронизации– lock, semaphore, ConcurrentHashMap, etc.

• Обращения к разделяемым данным– коллекции, календарь, etc.

Язык описания высокоуровневых свойств

Page 14: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Data race detector

• DSL для описания контрактов– xml-based– только основные контракты

• Динамический поиск гонок– инструментирование байт-кода– алгоритм на основе логических часов– находит и применяет контракты

Page 15: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Реальная задача: хэш-таблицы

• Работа Gao at al– Хэш-таблица без ожидания– Только машинное доказательство– Не проработан до конца механизм изменения

размера без ожидания

• Реализация Cliff Click (high-scale-lib)– Не очевидно что этот тот же самый алгоритм– Нет формального доказательства

Page 16: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Открытые проблемы

• Построить человеко-читаемое доказательство алгоритма Gao et al– Включая изменение размера без ожидания

• Разбить доказательство на модули– Хотим заменять примитивы в значениях

таблицы на сложные структуры

• Атомарно читать/писать сложные структуры в данном месте памяти– А не через подмену указателей

Page 17: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Проверка линеаризуемости

• Отсутствие гонок не гарантирует корректность многопоточной программы

• Обычно, говоря «корректность», имеют в виду линеаризуемость - эквивалентность последовательному исполнению

• Нужно уметь проверять линеаризуемость полученного кода как юнит-тест

Page 18: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Намеченный формат работы

• Отдельное подразделение в компании– очень важно, чтобы не дергали текучкой– хотим построить полноценный процесс

• Взаимодействие с ВУЗами– своих сил не хватает– студентам нужны квалификационные работы– ВУЗу нужны публикации

Page 19: Devexperts Research Team at TMPA-2014 (Trading Systems Testing)

Контакты

• Дмитрий Цителов ([email protected])• Виталий Трифанов ([email protected]

)• Роман Елизаров ([email protected])