Решение проблем с блокировками изменения данных для систем с большим числом CPU
28 мая 2008 года
Клиф Клик (Cliff Click) из компании Azul Systems предложил интересное решение проблемы по обеспечению работы быстрых и надежных блокировок при изменении структур данных в системах с большим количеством процессоров. При числе процессоров превышающих 32 становится неэффективным использование стандартных механизмов блокировки доступа к общим данными из многопоточных программ. Клифу была поставлена задача найти решение данной проблемы для 768-ядерной системы (теоретический порог возможности использования read-write локов - 50-100 CPU).
Суть идеи в изменении стиля кодирования и вовлечения для хранения данных массива большого размера, изменение каждой ячейки которого является атомарной операцией, реализованной путем переключения активной позиции в массиве через логическую репликацию единицы данных, используя алгоритм конечного автомата (с массивом производится операции чтения и инкрементального копирования ячеек при изменении).
В рамках проекта high-scale-lib разработана Java библиотека с реализацией предложенного подхода. Так реализация хэша (java.util.concurrent.ConcurrentHashMap) на 768 ядерной системе позволяет обрабатывать более миллиарда чтений данных в секунду при более 10 миллионов изменений в секунду (подход эффективен когда интенсивность чтения преобладает над изменением).
Источники
править- Главная ссылка к новости (http://www.infoq.com/news/2008...)
- Видео с пояснением работы алгоритма
- Текст презентации с конференции JavaOne
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.