Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


projects:libcds:timestamp_structures

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projects:libcds:timestamp_structures [2016/04/01 13:49] kelprojects:libcds:timestamp_structures [2016/05/22 10:44] (current) kel
Line 1: Line 1:
 ====== Concurrent Data-Structures Through Explicit Timestamping ====== ====== Concurrent Data-Structures Through Explicit Timestamping ======
 +> [[https://trello.com/b/vp5O1Wcs/timestamped-deque|Trello]]
 +> [[https://github.com/Radiansz/libcds|libcds-fork]]
 +
 ===== Перечень доработок ===== ===== Перечень доработок =====
- 
  
   - Удаление неиспользуемой памяти   - Удаление неиспользуемой памяти
   - Избавиться от ограничения количества потоков   - Избавиться от ограничения количества потоков
   - Использование различных моделей памяти(?)   - Использование различных моделей памяти(?)
- 
  
 ===== Вопросы ===== ===== Вопросы =====
  
   - Стоит ли реализовавывать контейнер на RCU вместо HP?   - Стоит ли реализовавывать контейнер на RCU вместо HP?
 +      - //[khizmax] Хорошо бы иметь обе - для RCU и для HP. Это две совершенно разные техники, требуют двух разных специализаций. Для RCU писать проще, но там могут возникнуть сложности с физическим удалением - внутри критической секции RCU вызывать retire_ptr (удаление элемента) нельзя, будет deadlock //
   - Избавление от зависимости количества HP заданных в системе. Сравнение производительности c HP реализацией.   - Избавление от зависимости количества HP заданных в системе. Сравнение производительности c HP реализацией.
 +      - //[khizmax] Вот тут я не понял. Избавление от кол-ва HP - это переписать HP. Задача интересная, хватит ли времени?//
   - Стоит ли включать в текущую систему тестирования libcds, или использовать Google Tests/аналоги.   - Стоит ли включать в текущую систему тестирования libcds, или использовать Google Tests/аналоги.
 +      - //[khizmax] Использовать Google Test. В dev-ветке unit-тесты уже на 80% переведены на gtest (попутно найдено немало ошибок), создана инфраструктура для stress (многопоточных) тестов, stress-тесты для очереди и стека переведены на gtest//
   - Как правильно производить тестирование дека? Какую статистику было бы полезно собирать? Проваленные операции извлечения, количество извлечений, количество добавлений?   - Как правильно производить тестирование дека? Какую статистику было бы полезно собирать? Проваленные операции извлечения, количество извлечений, количество добавлений?
 +      - //[khizmax] Тестировать как очередь (2 реализации - лево- и правосторонняя) и как стек (тоже 2 реализации).//
 +      - //[khizmax] Кол-во извлечений/добавлений слева/справа + кол-во интересных случаев, например, сколько раз не удалось добавить с первого раза (contention на CAS). Вообще это видно по алгоритму, когда его напишешь и начинаешь отлаживать//
   - Имеет ли смысл попробовать использовать тестирование алгоритма через {{http://dspace.mit.edu/bitstream/handle/1721.1/92058/895662651-MIT.pdf|CB-DPOR}}?   - Имеет ли смысл попробовать использовать тестирование алгоритма через {{http://dspace.mit.edu/bitstream/handle/1721.1/92058/895662651-MIT.pdf|CB-DPOR}}?
 +      - //[khizmax] Безусловно имеет. Тут я не могу что-либо порекомендовать, так как не использовал его. Но если получиться как-то это прикрутить - здорово. Также обратить внимание на threadSanitizer - он уже есть из коробки (gcc, clang), использовать его просто (компиляция со спец. ключами), потом ломать голову над тем, что он нашел//
projects/libcds/timestamp_structures.txt · Last modified: 2016/05/22 10:44 by kel