Re[31]: Собеседования в Яндекс++
От: smeeld  
Дата: 05.06.19 00:15
Оценка:
Здравствуйте, Lexey, Вы писали:

L>Здравствуйте, smeeld, Вы писали:


S>>Догадайтесь с двух раз, ладно, c трёх раз. Вы видите где-нибудь инкремент текущего storage_chunk? А он происходит.


L>То есть, у тебя set/get имеют какие-то сайдэффекты, которые никак не видны из их названий?


Это приватные функции, выполняющие определённую роль. Тот кусок кода-это из интерфейсной юзерспайсовой оболочки, предоставляющей доступ к функционалу высокопроизводительной системы стораджа через демон, функционирующий в юзерспайсе. Сама система-это система организации хранения данных, оптимизированная с учётом особенностей реализации драйверов шин блочных устройств в linux, а также особенностей взаимодействия кеша CPU, с областями памяти, которые выделены под зоны для DMA, в которых отображаются данные с диска. Она работает в обход подсистемы блочного IO ядра и слоя файловых систем в ядре. Основная функциональная часть реализации функционирует в kernel space. В юзерспайсе многопоточный демон, общающийся с кернел левелом через модифицированную подсистему epoll. Похожую вещь чуваки пропихивают в майнстрим. Сейчас в процессе превращения стораджа в распределённую систему хранения. Пока данные синхронизируются через упомянутый демон, организующий кластерный кворум в режиме мастер-мастер. Но есть планы реализовать обмен данными посредством RDMA. Требование к системе всегда было одно-производительность. Ради этой цели приходится идти на самые разные трюки. Порой код выглядит нечитабельным или малопонятным, но иначе никак. К тому куску выше это не относится, там тестовый набросок.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.