ИСПОЛЬЗОВАНИЕ ПРОГРАММНОЙ ТРАНЗАКЦИОННОЙ ПАМЯТИ В РАСПРЕДЕЛЕННЫХ ХРАНИЛИЩАХ ДАННЫХ



ПОДРУБАЙЛО А.А. Доповідь присвячена застосуванню програмної транзакционной пам'яті в розподілених сховищах даних в оперативній пам'яті. Розглянуто витрати на використання даної технології і вплив транзакционной пам'яті на продуктивність сховища при багаторазовій реплікації і її відсутності. Наводяться рекомендації щодо підвищення продуктивності розподілених сховищ при використанні програмної транзакционной пам'яті.

The report focuses on the use of software transactional memory in in-memory data grids. We consider the cost of using this technology and the impact of transactional memory performance in cases of multiple storage replication, and without redundancy. Author proposes the recommendations to improve the performance of distributed repositories using software transactional memory.

УДК 004.652.5

Введение

Использование транзакций существенно снижает производительность распределенных хранилищ данных в оперативной памяти (In-memory data grid, IMDG), что побудило разработчиков отказать от транзакционности в таком классе систем. В то же время, существующий механизм программной транзакционной памяти [1] (software transactional memory, STM) призван улучшить способность параллельных вычислительных систем работать с транзакциями, но не применяется в системах класса IMDG.

Традиционной областью применения транзакционной памяти считаются системы с общей памятью, но в [2] и[3] предложены распределенные модели STM, демонстрирующие применимость этой технологии в распределенных системах. Оптимистичный подход к изменению данных реализован в некоторых простейших системах кеширования (MemC3) [4].

В данном докладе рассматривается возможность использования STM в распределенных хранилищах данных в оперативной памяти и влияние этого механизма на производительность хранилищ при обработке транзакций.

Методика исследования

Для исследований было выбрано хранилище данных в оперативной памяти, содержащее 16 узлов данных (по четыре на каждом сервере) и 4 узла-локатора, перенаправляющих клиентские запросы на конкретный узел данных. Клиенты могут обращаться к произвольному узлу-локатору,при этом их запрос может перенаправляться на свободный узел с требуемыми данными в пределах кластера.

В экспериментах использовались степени избыточности от 1 до 3 (т.е. для одной записи существовало максимум 2 копии на других узлах хранилища).

Для контроля влияния STM использовалось идентичное по конфигурации и наполнению распределенное хранилище, использующее блокировки.

Используемые методы работы с STM

В рамках настоящего исследования использовалось несколько методов оптимистического контроля конкурентности:

- Локальный. Заключается в использовании версии локального объекта в качестве метаданных. При любом изменении объекта транзакция инкрементирует его версию. В случае, если за время работы транзакции версия объекта изменилась, транзакция отменяется и не вносит каких-либо изменений.

Данный метод применим к распределенным хранилищам только в двух случаях: если хранимые данные не реплицированы либо если в хранилище допустима консистентность в конечном счете.

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

Выводы

Проведенные эксперименты показали, что замена механизма управления конкурентностью с блокировок на программную транзакционную память и уменьшение размера транзакций позволяет добиться прироста производительности распределенных хранилищ данных в оперативной памяти на 13% - 48%.

Метод глобальной транзакционной памяти на 10-15% проигрывает локальному аналогу, однако последний применим лишь при отсутствии избыточности, необходимой во многих современных приложениях для обеспечения надежности и отказоустойчивости.

На основании проведенных исследований можно сформулировать следующие рекомендации по повышению производительности IMDG с использованием программной транзакционной памяти:

  1. Программную транзакционную память следует использовать в приложениях, совмещающих фоновую запись данных в хранилище и частые операции чтения. Примером могут послужить хранилища данных для бизнес-анализа, базы данных ТВ-гида и др.

  2. При отсутствии репликации в хранилище следует использовать локальный алгоритм STM, в хранилищах с избыточностью – глобальный.

  3. Длинные операции чтения следует разбивать на составляющие, чтобы транзакции были максимально короткими.

  4. В хранилищах, где одновременного чтения и записи данных не происходит или операции записи данных составляют менее 5% от общего числа операций (например, библиотечные каталоги,базы расписания занятий, архивные системы и т.д.), применение программной транзакционной памяти не оправдано и ведет к падению производительности.

Предложенная методика применима для хранилищ, совмещающих фоновую запись данных в хранилище и частые операции чтения. В хранилищах, где для чтения данных применяется исключительно выборка по ключу,предложенная методика не применима. Также программную транзакционную память нецелесообразно применять в тех IMDG, для которых операции записи составляют менее 5% всех запросов.

Список литературы

  1. N.Shavit, D. Touitou, “Software transactional memory”, Proceedings of the 14thACM Symposium on Principles of Distributed Computing (Ottawa, Canada). ACM, NY,1995, pp.204–213.

  2. N Carvalho, P Romano, “A generic framework for replicatedsoftware transactional memories, Network Computing and Applications (NCA), 201110th IEEE International Symposium on, Aug. 2011, pp. 271 - 2743. M Saad, B Ravindran, “HyFlow: a high performance distributed software transactional memory framework”, Proceedings of the 20th international symposium on High performance distributed computing, 2011, pp.265-2664. H Zhang, G Chen, BC Ooi, KL Tan, M Zhang, “In-memory bigdata management and processing: A survey”, Knowledge and Data Engineering, IEEE Transactions on Volume: 27, Issue: 7, 2015, pp.1920 – 1948.
Jun 13, 2016