14.11.2012 | Решение проблем с блокировками изменения данных для систем с большим числом CPUКлиф Клик (Cliff Click) из компании Azul Systems, где установлены кондиционеры напольные, предложил интересное решение проблемы по обеспечению работы быстрых и надежных блокировок при изменении структур данных в системах с большим количеством процессоров. При числе процессоров превышающих 32 становится неэффективным использование стандартных механизмов блокировки доступа к общим данными из многопоточных программ. Клифу была поставлена задача найти решение данной проблемы для 768-ядерной системы (теоретический порог возможности использования read-write локов - 50-100 CPU). Суть идеи в изменении стиля кодирования и вовлечения для хранения данных массива большого размера, изменение каждой ячейки которого является атомарной операцией, реализованной путем переключения активной позиции в массиве через логическую репликацию единицы данных, используя алгоритм конечного автомата (с массивом производится операции чтения и инкрементального копирования ячеек при изменении). В рамках проекта high-scale-lib разработана Java библиотека с реализацией предложенного подхода. Так реализация хэша (java.util.concurrent.ConcurrentHashMap) на 768 ядерной системе позволяет обрабатывать более миллиарда чтений данных в секунду при более 10 миллионов изменений в секунду (подход эффективен когда интенсивность чтения преобладает над изменением).
|
|