Кресты на моей кукухе
Автор вспомнил, что это канал про lock-free очередь его мечты (ну не прям lock-free, честный lock-free сложно и не нужен) Заимплементил-таки схему bitset + queue вместо queue + queue.Предварительный результат радует. График — гистограмма задержек на запись…
Некрасивая метрика, проблему с которой я сходу (к своему стыду) не понял — время от отправки сообщения до его чтения. На старой очереди это было <1 мкс, на новой >40мкс в медиане. Ночью меня осенило: я же разогнал писателей. Читатель снова стал захлёбываться. Докинул nop'ов ~пропорционально уменьшению во времени прохождения бенча — метрика более-менее нормализовалась. С этим разобрался
Пишем быстрее! Получилось срезать ~ 70нс (~20%) в медиане и в среднем. Быстрее и на 99-м перцентиле, хоть и немного
С чтением неоднозначно(9( Чуть лучше в медиане, чуть хуже в среднем (~7% тудым/сюдым). Хуже на высоких перцентилях на 10-15%. В общем, скорее хуже
При том, что мне хочется минимально тормозить писателя, трейдофф приемлемый
Пишем быстрее! Получилось срезать ~ 70нс (~20%) в медиане и в среднем. Быстрее и на 99-м перцентиле, хоть и немного
С чтением неоднозначно(9( Чуть лучше в медиане, чуть хуже в среднем (~7% тудым/сюдым). Хуже на высоких перцентилях на 10-15%. В общем, скорее хуже
При том, что мне хочется минимально тормозить писателя, трейдофф приемлемый
Кресты на моей кукухе
Некрасивая метрика, проблему с которой я сходу (к своему стыду) не понял — время от отправки сообщения до его чтения. На старой очереди это было <1 мкс, на новой >40мкс в медиане. Ночью меня осенило: я же разогнал писателей. Читатель снова стал захлёбываться.…
В общем, схематоз:
Было: MPMC FAA-очередь занятых элементов + такая же очередь свободных элементов
Стало: MPMC FAA-очередь занятых элементов + битсет, отвечающий за свободные элементы
Битсет имеет операции
Выглядит как массив атомиков, в которых один битик соответствует одному индексу. Я хотел минимизировать контеншн, потому
1. массив побит на блоки по 16 атомиков (128 байт, 1024 элемента-битика)
2. каждый поток имеет свой "родной" блок
На
Есть у меня большие сомнения в линеаризуемости этого добра) Хотя пока читатель один, должно сходиться
Дальше буду смотреть, есть ли прок от замены MPMC очереди на MPSC, раз мне больше всё равно не надо
Было: MPMC FAA-очередь занятых элементов + такая же очередь свободных элементов
Стало: MPMC FAA-очередь занятых элементов + битсет, отвечающий за свободные элементы
Битсет имеет операции
push(index)
и take_any() -> optional<size_t>
Выглядит как массив атомиков, в которых один битик соответствует одному индексу. Я хотел минимизировать контеншн, потому
1. массив побит на блоки по 16 атомиков (128 байт, 1024 элемента-битика)
2. каждый поток имеет свой "родной" блок
На
take_any()
мы ищем битик в родном блоке. Если не нашли — начинаем проходить по чужим блокам. Прошли круг и ничего не нашли — очень жаль, вываливаемсяЕсть у меня большие сомнения в линеаризуемости этого добра) Хотя пока читатель один, должно сходиться
Дальше буду смотреть, есть ли прок от замены MPMC очереди на MPSC, раз мне больше всё равно не надо
Как же я в рот ебал этот ваш лок фридом нахуй. Вот ты всё придумал, всё у тебя отлично складывается, ты обложен гарантиями, писатели не мешают друг другу примерно никогда, всё заебись, ты гений. И тут приходит читатель, гнида нахуй, и что были твои гарантии, что не было, у тебя лицо уже обоссано, все твои там идеи это маня-фантазии и полная поебота
Как же радостно встретить тред на 120 сообщений в багзилле кернела, где обсуждается твоя проблема
Как же горестно увидеть, что она закончилась ни на чём 2 года назад
Как же горестно увидеть, что она закончилась ни на чём 2 года назад
Увидел настолку в магазине — купился на визуал и сеттинг. Наконец, опробовали. Довольно прикольно, красивенько. Играется интересно. А ещё в ней есть буквально я
Но когда выяснил, что есть и компьютерная игра, не мог понять, зачем нужен формат настолки, потому что играется довольно механически. Тем не менее, допройти хочется. А потом и компьютерную версию пройти. Интересно, насколько различаются механики
Но когда выяснил, что есть и компьютерная игра, не мог понять, зачем нужен формат настолки, потому что играется довольно механически. Тем не менее, допройти хочется. А потом и компьютерную версию пройти. Интересно, насколько различаются механики
Вы там все чокнулись в своих компьютерах
Ни одно из измерений коробка 5.25'' — не 5.25''
Ни одно из измерений коробка 3.5'' — не 3.5''
Ни одно из измерений коробка 2.5'' — не 2.5''
Ни одно из измерений коробка 5.25'' — не 5.25''
Ни одно из измерений коробка 3.5'' — не 3.5''
Ни одно из измерений коробка 2.5'' — не 2.5''
И почему корпуса с hot swap'ом hdd'шников это настолько дорого
Самая дешмань, которую получается найти, это 45к+. Видимо, дорогая панель, в которую втыкаются диски. Но почему она такая дорогая-то
Upd. Изучив вопрос, пришёл к выводу: потому что столько платят
Самая дешмань, которую получается найти, это 45к+. Видимо, дорогая панель, в которую втыкаются диски. Но почему она такая дорогая-то
Upd. Изучив вопрос, пришёл к выводу: потому что столько платят
Hitachi
Вайбики 2-й картинки
Upd. оказывается, WD выкупили бренд HGST Ultrastar, и некоторые модели могут продаваться как под WD, так и под HGST брендом