Size: a a a

2020 May 10

SP

Sergei Puzyrev in DevOps
когда хеш-таблица скейлится
источник

PK

Phil Kulin in DevOps
Sergei Puzyrev
мне казалось что здесь ты читал XML и пихал в k->v базу, не?
Я хотел. И сделал. Но потом отказался. Я там же рассказываю про это
источник

PK

Phil Kulin in DevOps
Sergei Puzyrev
блин, я однажды пошутил про то что кто-то будет пихать JSON или XML прямо сырыми в типизированные форматы типа Protobuf
Ну я попытался да
источник

SP

Sergei Puzyrev in DevOps
вместо перезаписи указателей с места на место ей приходится копировать сами данные. как ты говоришь твоя TContent - толстая, до шести мегабайт. в результате в раме вместо условных (50 байт на элемент * миллион элементов = 50 мбайт) ты перемещаешь (мегабайт на элемент * миллион элементов = терабайт)
источник

SP

Sergei Puzyrev in DevOps
впрочем, похоже, что у тебя средний размер таки не мегабайт
источник

PK

Phil Kulin in DevOps
Sergei Puzyrev
если мапка хранит элементы прямо в себе, то в момент роста она должна переместить гораздо больше данных в оперативе
Ну для меня не совсем понятно. Этот TContent 244 байта что ли. 8 vs 244 не прямо смущает. Но по факту похоже там охрененно дорогой grow, что прямо вот вообще заметно
источник

SP

Sergei Puzyrev in DevOps
Phil Kulin
Ну для меня не совсем понятно. Этот TContent 244 байта что ли. 8 vs 244 не прямо смущает. Но по факту похоже там охрененно дорогой grow, что прямо вот вообще заметно
ну емое, это на элемент. ты ж сам говоришь что у тебя миллион элементов.
это 244 мегабайта памяти, причем мапка делает не потоковый доступ, это постоянно кеш-мисс
источник

SP

Sergei Puzyrev in DevOps
я не очень понимаю, почему там 244 байта, ты ж говоришь что у тебя может быть 6 МБайт на элемент?
источник

PK

Phil Kulin in DevOps
Sergei Puzyrev
вместо перезаписи указателей с места на место ей приходится копировать сами данные. как ты говоришь твоя TContent - толстая, до шести мегабайт. в результате в раме вместо условных (50 байт на элемент * миллион элементов = 50 мбайт) ты перемещаешь (мегабайт на элемент * миллион элементов = терабайт)
Не, ну 6Mb это данных под TContent. Сама-то она 2xx байт. Там же строки да указатели
источник

PK

Phil Kulin in DevOps
Sergei Puzyrev
я не очень понимаю, почему там 244 байта, ты ж говоришь что у тебя может быть 6 МБайт на элемент?
Я ей чтотото там рантйм сайзоф сделал
источник

SP

Sergei Puzyrev in DevOps
один хрен.
ты парсишь XML похоже на правду, но неочевидно, не ломаешь ли ты там дрова.
история с JSON отъедает перформанса еще некисло так.

на чуть более высоком уровне что там происходит?
у тебя есть XML с выгрузкой, ты эту выгрузку как-то парсишь и нормализуешь, а потом что? как ты используешь результат парсинга?
источник

PK

Phil Kulin in DevOps
А потом я по протобафу  запрашиваю - дай мне значение по ключу в такой-то базе. Вишь - я там индексов налепил?
источник

SP

Sergei Puzyrev in DevOps
Phil Kulin
А потом я по протобафу  запрашиваю - дай мне значение по ключу в такой-то базе. Вишь - я там индексов налепил?
у кого? или кто-то другой запрашивает?
источник

SP

Sergei Puzyrev in DevOps
что есть ключ? content id?
источник

PK

Phil Kulin in DevOps
не, IP, domain, etc. А они содержат массивы content id. и вот уже развернутые списки я отдаю обратно в pb
источник

PK

Phil Kulin in DevOps
источник

SP

Sergei Puzyrev in DevOps
у тебя еще в процессе загрузки формируются отдельные мапы вида
url -> list<content-id>
ip4 -> list<content-id>
ip6 -> list<content-id>
?
источник

SP

Sergei Puzyrev in DevOps
источник

SP

Sergei Puzyrev in DevOps
заорал!
источник

PK

Phil Kulin in DevOps
Sergei Puzyrev
у тебя еще в процессе загрузки формируются отдельные мапы вида
url -> list<content-id>
ip4 -> list<content-id>
ip6 -> list<content-id>
?
Да
источник