# Понедельник 134 твита
Всем привет 👋 на этой неделе с вами я @ifesdjeen. Начнём с баз данных? Если интересно узнать про on disk storage и Cassandra - жду вопросов!
11:17В двух словах о себе: живу в Мюнхене, работаю разработчиком баз данных, коммитер в Apache Cassandra, пишу на Clojure с ~2011, учу алгоритмы.
11:22Вопросов пока не много, давайте тогда начнём с Seminal Papers в Database Systems. Например с LSM trees: paperhub.s3.amazonaws.com/18e91eb4db2114… кто читал?
11:33Кто интересуется Time Series? Кому с Graphite тесно живётся?
11:49Наверное самый известный и читаемый пейпер про распределённые системы: Dynamo, Amazon's Highly Availabe Store cloudgroup.neu.edu.cn/papers/cloud%2…
12:45Одной из главных мыслей пейпера является CAP Theorem (consistency, availability, partition tolerance) en.m.wikipedia.org/wiki/CAP_theor…
12:47также введение commit log (node-local)/ hinted handoffs (partitioned state) для availability, использование gossip для распределения данных
12:50А есть среди читателей такие кто пейперы читает вообще?
13:34Как насчёт функционального программирования? Есть Clojure/Haskell любители?
13:58Или formal methods / model checkers? Agda, Idris, Isabelle / Spin, TLA+?
13:59@backendsecret я интересуется, но мы используем prometheus14:02
@backendsecret Почитываю на выходных SICP, иногда на 4Clojure решаю задачки.14:04
@backendsecret А ты почитываешь? Если да - где находишь, а то в последнее время часто ищу оригинальные источники ин… twitter.com/i/web/status/8…14:07
@alexcleac Все зависит от темы. Есть темы где уже есть наработки, есть где спрашиваю у знающих людей. @adriancolyer… twitter.com/i/web/status/8…14:09
@backendsecret я читаю!14:11
Окей, значит Dynamo Paper объясняет как подойти к разработке базы данных с точки зрения распределённых систем: решает проблемы availability
14:12и объясняет что делать если одна из нод падает или не может присоединиться к остальному кластеру.
14:13LSM Paper рассказывает о внутренней организации файлов в базе данных и об общей архитектуре: memory tables / sorted string disk tables.
14:14Следующий пейпер: SEDA, Staged Event Driven Architecture: cs.cornell.edu/courses/cs614/… как подойти к проектированию потоков и обработке запросов
14:15@backendsecret Интересует что-нибудь с кластеризацией и тэгами и opensource14:16
@backendsecret Юзаю по мелочи influxdb. Большого объёма данных нет, для статистики вполне хорошо подходит, grafana… twitter.com/i/web/status/8…14:20
Продолжая тему распределённые системы 101, кто слышал об FLP Impossibility и Византийских Генералах?
14:25@backendsecret Бывает, когда надо в тему провалиться, например.14:25
Распределенку начал читать после Лэмпортовских рабо… twitter.com/i/web/status/8…
Проблема заключается в том что две Византийские армии, готовые напасть на город с двух сторон, должны прийти к согласию по поводу времени.
14:35Они могут коммуницировать с помощью гонцов, но гонец может не дойти до дружественной армии (может быть перехвачен). Таким образом,
14:36два генерала не могут быть уверены что другая сторона получила их уведомление (так как гонец с подтверждением может быть перехвачен)
14:37Эта проблема послужила началом теории распределённых систем и доказала необходимость "консенсуса", или нейтральной стороны для подтверждений
14:38@backendsecret @alexcleac @adriancolyer Есть еще такой вот твиттер аккаунт twitter.com/onepaperperday. Там порою годные бумаги бывают.14:39
На этой неделе @backendsecret обещает быть особенно интересным14:39
любителям Clojure задачка: каким образом написать свой if макрос без использования cond, and, or и других логических макросов?
14:42Решения на Haskell и других ленивых языках принимаются также.
14:46@backendsecret чем закончилось?14:47
@1101_debian Закончилось все тем что доказали что договориться им невозможно и ввели понятие FLP Impossiblity. groups.csail.mit.edu/tds/papers/Lyn…14:48
@1101_debian Более простыми словами: the-paper-trail.org/blog/a-brief-t…14:48
После FLP Impossibility и понятия того что консенсус между двумя процессами не возможен разработали консенсус алгоритмы для нескольких
14:51участников. Lamport разработал Paxos: lamport.azurewebsites.net/pubs/lamport-p…
14:51Который использовался в том числе и Dynamo, и в Cassandra.
14:51@backendsecret \c \x \y . c x y15:07
true и false интерпретируются как К и К* комбинаторы
а насчёт более простого - заинтриговал)
@backendsecret В треде говорят "clojure's dying more than it is growing" - как обстоят дела на твой взгляд?15:45
twitter.com/ZackMaril/stat…
Ссылки за сегодня (будут обновляться по мере поступления): gist.github.com/ifesdjeen/4af4…
15:51Вопрос теоретического характера в распределенных системах: как реализовать Exactly-Once-Delivery (доставка сообщения _точно_ один раз)?
15:55Например, как пытались реализовать это в TCP/IP и возможно ли реализовать это самому поверх скажем UDP?
15:57@backendsecret В распределённых системах exactly once не бывает, так-то. Но есть приближения.
🤔👇twitter.com/borovikov/stat…Z
16:15@backendsecret вот интересная реализация: Apache Flink - data-artisans.com/blog/high-thro…, правда в контесте stream processi… twitter.com/i/web/status/8…16:23
В распределенных системах невозможно добиться Exactly Once Delivery. Возможно только сделать _At Least Once_ Delivery.
16:25Что по сути значит Redelivery/Retransmit (повторные попытки доставки сообщений) и Таймауты.
16:25Можно только гарантировать что сообщение было доставлено хотя бы один раз, из-за надобности получения уведомления о получении.
16:28@backendsecret чем не устраивает at-most-once?16:36
@kgorin Например: в случае с банком мне бы хотелось чтобы снятия денег были гарантировано 1 раз. Записать снятие два раза не допустимо.16:39
@kgorin То есть для этого нужно exactly once _processing_ или idempotent processing. Например записывать id всех полученых сообщений.16:39
Возвращаясь к теме Dynamo и как строить Базу Данных, остается вопрос: каким образом распространять информацию между нодами?
17:48Если все будут говорить со всеми чтобы удостовериться что информация была распространена - в больших масштабах такое работать не будет.
17:49Чтобы избежать этой проблемы были придуманы Gossip Algorithms. Один из первых пейперов на тему: Epidemic Algorithms pdfs.semanticscholar.org/49ed/15db181c7…
17:50@backendsecret At-least-once + идемпотентность?18:22
Разминка: чем отличаются Sorted Files (LSM-Trees) от B+Trees (допустим в обоих случаях write-only workload)?
18:52Какие гарантии мы идеем в плане производительности (Big-O) операций: запись и чтение.
18:53Sorted Files быстрее писать. B+Trees дадут лучшее результаты при чтении. Примерно поэтому Sorted Files часто используют для primary storage,
19:03а B+Trees для secondary index. В этой связи, отличный пейпер на тему Concurrent Cache Oblivious B-Trees people.cs.georgetown.edu/~jfineman/pape…
19:06Cache Oblivious подразумевает что алгоритм будет производительным и дружественным по отношению к CPU Cache даже не зная его размера.
19:08Кстати, прочтя и ориентируясь в хотя бы половине упомянутых на этой неделе тем поможет пройти собеседование в <big cool tech companies>
19:10Было бы классно если бы я научился согласовывать предложения по-русски. Если видите ошибки-не судите строго, язык не родной, использую редко
19:16Поговорим об I/O? Какие бывают виды I/O с точки зрения операционной системы и/или платформ?
19:50Самый простой вид I/O это open/read/write/close syscalls, где запись и чтения производятся с помощью буфера и дескриптора файла.
19:58Очевидно, что эти вызовы синхронны (блокируют поток до завершения операции) и таким образом невозможно работать с несколькими дескрипторами
20:00Именно поэтому были передуманы другие способы ввода-вывода, и все (а именно - I/O Multiplexing) началось с select().
20:02select() - по прежнему синхронная операция, но она позволяет запросить ожидать событий на нескольких дескрипторах.
20:05Альтернативой select() является poll(), не-блокирующий вызов, который позволяет есть ли дескрипторы готовые для чтения или записи.
20:09К сожалению, ни select() ни poll() не подходят для решения c10K и работы с большим количеством дескрипторов
20:11поэтому появились epoll (Linux) и kqueue (BSD), неблокирующие (async) API для работы с большим количеством дескрипторов / соединений.
20:13@backendsecret Почему в линуксе их не сделали асинхронными?20:15
@truetobetrue сделали, только позже(epoll, event-driven poll).Вообще современные I/O APIs очень сильно устарели. Бы… twitter.com/i/web/status/8…20:15
epoll, не умеет доставлять несколько событий одного типа. Есть еще несколько проблем, но лучше почитать idea.popcount.org/2017-02-20-epo…
20:34@backendsecret Kafka планирует реализовать exactly-once. cwiki.apache.org/confluence/dis…20:36Но я если честно плохо понимаю ро… twitter.com/i/web/status/8…
@Arhelmus Exactly Once Delivery невозможно. То что они делают называется Exactly Once Processing.20:40
@backendsecret Но в результате же, это всеравно решает проблему того-же банка, где транзакция не должна быть применена дважды, да?20:40
@Arhelmus конечно! Просто exactly once delivery стало своего рода маркетинговым приемом) все не умеют а мы молодцы;… twitter.com/i/web/status/8…20:40
@truetobetrue @backendsecret Буква P не нужна
CAP это не проблема, поэтому ее решить нельзя :(
Есть распределенный… twitter.com/i/web/status/8…
Напомнило о статье Coda Hale: you can not sacrifice partition tolerance codahale.com/you-cant-sacri… twitter.com/krems5/status/…
21:45@backendsecret IIRC kqueue не только для файлов, но и для других ивентов (таймеры, fork/exec events). Что с epoll? Только I/O?21:50
Окей тви, на сегодня все. Пишите вопросы, или я продолжу постить ссылки на статьи и пейперы. Cегодня у меня только… twitter.com/i/web/status/8…
23:38Привет читателям @backendsecret! На этой неделе с вами @fads93_zombie
10:37Немного о себе: учился на кафедре микропроцессорных технологий МФТИ, 4 года назад попал на стажировку в московский офис Интела
10:50Работал в проекте Бабаяна, моя специализация - трансляторы, но не языковые :)
10:54Хочу начать с того, что в Москве очень сильная школа процессорных технологий, с центрами в МЦСТ, ИТМиВТ, Интеле и на кафедрах МФТИ
11:02Нельзя не сказать про Эльбрусы - часто рассматривали на лекциях на кафедре, мое впечатление - для своего времени это была передовая система
11:15Буду только рад, если МЦСТ найдёт средства на дальнейшую разработку. Haters gonna hate!
11:15Ах да, я веду паблик вконтакте с новостями процессорной индустрии без инсайдов
vk.com/pipelinestall
Давайте начнём интерактив. Помогите следопыту Даше определить, с какой аудиторией она имеет дело
11:32Шёл 2017 год...
11:35Обход графа в глубину...
11:36Я просто не мог удержаться
11:44В игрули я шпилю на...
(выпуск же про процессоры)
Его было не остановить @backendsecret pic.twitter.com/2qd3ZnS4at11:47
Прошу вас подумать над вопросами, пока я ненадолго отключусь :)
11:58Русский след в интеле, как с аэромеха попасть на микропроцессоры, зеленее ли трава в долине, и все, что может вас интересовать
12:00@backendsecret @alexanius А я думал codesign это что-то дуальное к design.19:40
@backendsecret @fads93_zombie Это все интересно, но оффтоп.
Какие перспективы у вышедшего наконец 3dxpoint'а?
Когда… twitter.com/i/web/status/8…
XPoint: как мне видится, технология перспективна для датацентров как быстрый кэш/расширенная RAM… twitter.com/i/web/status/8…
20:37@backendsecret @fads93_zombie Почему интеловский пенёк лучше амдшного рузена/FX'a в игрульках?
1/ Про производительность в играх можно судить по бенчмаркам, например arstechnica.com/gadgets/2017/0… twitter.com/ioooooi1/statu…
20:51@backendsecret @fads93_zombie Почему интеловский пенёк лучше амдшного рузена/FX'a в игрульках?
2/Вопрос почему: несмотря на то, что IPC микроарх Zen на 40% больше предыдущего поколения, это все равно меньше, че… twitter.com/i/web/status/8…
20:54@backendsecret @fads93_zombie Почему интеловский пенёк лучше амдшного рузена/FX'a в игрульках?
3/Простой пример: AMD добавили в Zen кэш микроопераций, который был в Core начиная с Sandy Bridge (2011) twitter.com/ioooooi1/statu…
20:56@backendsecret На борде сидишь?
Как твое образование относительно иностранных коллег выглядит, достойно?
Кто нибудь там про физтех вообще?
Про образование: в моей команде работают люди в основном с американским образованием, много PhD, есть один человек… twitter.com/i/web/status/8…
21:01Я не могу быть полностью объективен, но в практических аспектах образование на уровне. МФТИ+базовая кафедра в Интеле - non est penis canina
21:05@backendsecret На борде сидишь?
Как твое образование относительно иностранных коллег выглядит, достойно?
Кто нибудь там про физтех вообще?
Про физтех речь не заходила, но мой менеджер точно про него знает. Несколько человек знают про МЦСТ, те кто вместе… twitter.com/i/web/status/8…
21:10@backendsecret Правда что много бомжей, потому что им доплачивают?
Правда,что невозможно высокие цены на жилье?
Пра… twitter.com/i/web/status/8…
В самой долине почти нет таких людей, но их много в городах (Сан-Хосе, СФ). Жилье дорогое, аренда 1bd апартов в Сан… twitter.com/i/web/status/8…
21:14@backendsecret Правда что много бомжей, потому что им доплачивают?
Правда,что невозможно высокие цены на жилье?
Пра… twitter.com/i/web/status/8…
Каждый день езжу на работу мимо пожарной части :) Врачей вроде тоже хватает, если судить по списку тех, кто работае… twitter.com/i/web/status/8…
21:16Сейчас производители процессоров хвастаются использованием нейронных сетей в предсказателе переходов (AMD, Samsung)
21:18А знали ли вы, что в процессорах Интел начиная с Core 2 есть LSD-режим?
21:20К диэтиламиду лизергиновой кислоты он не имеет отношения.Loop Stream Detector позволяет отключить часть фронтенда и… twitter.com/i/web/status/8…
21:24@backendsecret сколько в мире реальных работодателей для разработчика микропроцессоров?
Думаю, не более 20. Intel, Nvidia, ARM, Qualcomm, Apple, Samsung, Google, Imagination, пара стартапов… И, конечно,… twitter.com/i/web/status/8…
21:34@backendsecret бум ML/Data Science как-то отразился на МП?
Интел выпускает оптимизированный Distribution for Python для ML/DS, оптимизирует фреймворки Caffe и TensorFlow. (Чт… twitter.com/i/web/status/8…
21:37@backendsecret А что это даёт?
Улучшает энергоэффективность (гасит BPU) и повышает пропускную способность фронтенда.
@krems5 twitter.com/dcromster/stat…
@backendsecret Что ты думаешь насчет x86? Не пришло ли наконец время для итаниума?
Какие шансы у эльбрусов?
Время итаниума наконец закончилось :) Интел прекращает выпуск Итаниумов с релизом Kittson
itworld.com/article/319607… twitter.com/krems5/status/…
@backendsecret Что ты думаешь насчет x86? Не пришло ли наконец время для итаниума?
Какие шансы у эльбрусов?
Моя точка зрения: широкая команда со статическим планированием (Итаниум, Эльбрус) уже не обгонит out-of-order super… twitter.com/i/web/status/8…
21:48@backendsecret Почему интел не делает процессоры с более слабыми моделями памяти, не планирует в embedded?
Про более слабые модели памяти - имеется в виду отказаться от TSO? Тогда это будет не x86 :) twitter.com/krems5/status/…
21:49@backendsecret Почему к power'ам и армам такие хилые доки, что бедный Peter Sewell вынужден экспериментально выясня… twitter.com/i/web/status/8…
У ARM совсем не хилые доки. Один из авторов ARM v8 публикует у себя в блоге работу с Machine Readable Spec… twitter.com/i/web/status/8…
21:51@backendsecret А можешь пояснить где тебе видится слабое место VLIWов? Только статическое планирование?
Статическое планирование и проблемы с масштабируемостью (сложности с утилизацией всех исполнительных устройств в ка… twitter.com/i/web/status/8…
22:05@backendsecret > Итаниум сдох22:06
> Эльбрус не нужен
Казалось бы, можно расслабиться. Но тут внезапно
> NVIDIA Denver
> Qualcomm QDSP6
@backendsecret А если отойти от всех проблем с окружением, как думаешь, Itanium мог бы выстрелить?
Наверное, мог бы, будь у него обратная совместимость с x86 без потери производительности и повыше тактовая частота. twitter.com/dcromster/stat…
22:11@backendsecret Есть ли тенденция включать больше векторных модулей в процессор?
В связи с популярностью sse и встро… twitter.com/i/web/status/8…
Как по мне - после AVX512 куда уж больше :) но потребность в SIMD вычислениях не падает, поэтому тренд продолжится twitter.com/krems5/status/…
22:13@backendsecret А если отойти от всех проблем с окружением, как думаешь, Itanium мог бы выстрелить?
Под итаниум был хорошо спроектированный C++ ABI, который теперь используется как стандартный в GCC. twitter.com/dcromster/stat…
22:18@backendsecret Разве Интел не собирается наступить на те-же грабли снова? Читал, что после всех Core I будет нечто… twitter.com/i/web/status/8…
Мне интересно, о чем идёт речь :) вообще у интела даже Xeon Phi x86-совместим twitter.com/dcromster/stat…
22:23@dcromster @backendsecret Что-нибудь эдакое квантовое? :)
Ах, хотелось бы мне быть архитектором квантовой ISA :) twitter.com/traffsh0w/stat…
22:26Не зря же я на госе по физике брал вопрос по выбору про алгоритм Дойча, в самом деле
22:27@backendsecret Статья была на уровне слухов. А Фи это же Pentium какой-то дорабатонный. Разве нет?
Все равно, если найдёте статью - дайте знать. А Xeon Phi, как сообщает википедия, действительно основан на микроарх… twitter.com/i/web/status/8…
22:31@backendsecret И тут у меня вопрос обывателя: а почему на такой древности, а не на Xeon там или i7?
Думаю, от оригинального пентиума там остался только in-order конвейер. В Xeon Phi есть SMT, кэши, 512b-регистры, мн… twitter.com/i/web/status/8…
22:43Будучи стажером в московском интеле, я исследовал поведение и свойства программ
22:58В одном из таких исследований я получил подтверждение принципа Парето: 80% времени исполнения приходится на 20% кода
23:00Объяснение этому феномену очень простое: программы действительно проводят большую часть времени в циклах :)
23:02Оптимизируйте вложенные циклы, друзья!
23:02@astarasikov @backendsecret Denver -- это та хреновина с кривым рекомпилятором на кристалле?
Воу-воу, JIT в JVM по-вашему тоже кривой рекомпилятор? twitter.com/feelthefrog/st…
23:03с другой стороны, преждевременная оптимизация есть зло - то, что я назвал боттлнеком, может таковым не быть
23:30В частности, вызовы виртуальных функций (и косвенные переходы вообще) хорошо предсказываются
23:33Всегда бомбит с постов, где пишут про их чудовищные накладные расходы
23:33@backendsecret Я бы сказал что сильно от задачи зависит. Точнее это может быть много мелких циклов в разных частях кода. Тогда всё плохо )
Плоский профиль - и наша цель, и наш злейший враг) twitter.com/alexanius/stat…
23:35# Вторник 93 твита
@1101_debian @backendsecret Только файловые дескрипторы. В Linux есть много интересных вещей, которые работают чере… twitter.com/i/web/status/8…8:23
@backendsecret @Arhelmus А где-нибудь уже exactly once processing есть?8:48
@nwalkr @Arhelmus У всех в основном "roll your own" насколько мне известно, только у них есть встроеные семантики: engineering.sendence.com/2017/03/hello-…8:48
Доброе утро! Продолжим экскурс в Distributed Systems и Databases? Из вопросов я понял что есть интерес к теме Deutschland ещё?
8:51В двух словах о Мюнхене: чудесный город, отличная система общественного транспорта, много велосипедных дорожек, недалёко от Альп.
8:55Цены достаточно высокие по сравнению с остальной Германией. Работы в IT очень много и на любой вкус.
8:57Много митапов, сегодня вечером будет Munich NoSQL на темы Graph Databases / Trending Algorithms. На прошлой был Munich Lambda по F# и F*.
8:59Одно из местных развлечений: Eisbach Wave 🌊 где можно прокатиться прямо в городе: река выходит из-под зданий и обра… twitter.com/i/web/status/8…
9:03В IT oчень много людей из разных стран. Много из Польши, Белоруссии, Украины и России. Многие говорят по английски, немецкий не учат.
9:05Получение визы и постоянного вида на место жительства гораздо проще чем во многих местах. ПМЖ при желании можно сделать за 2 года.
9:06Проект БД из Carnegie Mellon, для обучения: можно написать свои функции, Join, индексы, 15721.courses.cs.cmu.edu/spring2017/syl…
15721.courses.cs.cmu.edu/spring2016/syl…
Следующий пейпер: SEDA, Staged Event Driven Architecture: cs.cornell.edu/courses/cs614/… как подойти к проектированию потоков и обработке запросов
Вчера мы говорили о SEDA: Stage Driven Event Architecture. Еще есть follow-up от автора: matt-welsh.blogspot.de/2010/07/retros…
10:06Также мы говорили о CAP и Network Partitions. Когда речь идет о Partition Tolerance, нельзя не упомянуть Jepsen: aphyr.com/posts/281-jeps…
10:11Jensen - toolset для симуляции и анализа поведения баз данных и message queues в условиях нестабильных сетей и network partitions.
10:12И последняя ссылка в этом batch’e: Fallacies of Distributed Computing, или почему нужен High Availability: en.wikipedia.org/wiki/Fallacies…
10:16@backendsecret Расскажите, пожалуйста, о вашем опыте использования jepsen в продкашине или для себя.
У Jepsen очень хорошая документация,писать свои компоненты и расширения достаточно просто:
10:55Тулинг приятный, разобраться просто. Для большинства достаточно почитать посты Кайла о его тестов с помощью Jepsen.
10:56Для тех кто пишет свою базу данных или процессор потоков (stream processing tool), конечно Jepsen очень полезная вещь.
10:57Хотя я бы рекомендовал посмотреть также на netem чтобы проверять не только network partitions/message drops/delays а также retransmission
10:59packet corruption и всякие другие сценарии: wiki.linuxfoundation.org/networking/net…
10:59Например follow up по поводу тестов Cassandra с помощью Jepsen: datastax.com/dev/blog/testi…
11:01@backendsecret btw - Вот здесь написали решения этой задачи на Go в blockchain стиле с эффективным восстановлением… twitter.com/i/web/status/8…11:02
@backendsecret @krems5 во самая крутая книжка по базам данных( и распределенным тоже) shop.oreilly.com/product/063692…11:41
Один из самых подробных постов тему распределенных систем: What we talk about when we talk about Distributed Systems alvaro-videla.com/2015/12/learni…
12:31Один из самых подробных постов тему распределенных систем: What we talk about when we talk about Distributed Systems alvaro-videla.com/2015/12/learni…
Автор - @old_sound, у него часто в твиттере есть интересности. Вот его записаный ток: youtube.com/watch?v=fOAytj…
12:32О какой части баз данных вы бы хотели узнать больше?
15:24На Munich Lambda Meetup в @jetbrains pic.twitter.com/uk4HypYGqr
20:11Пока что Consistency/Consensus лидирует в списке вопросов. Кто работает с "eventually consistent" базами? Что вы используете?
20:47В eventually consistent базах важны две вещи: Replication Factor (RF), Read Consistency Level(RC), Write Consistency Level (WC).
20:56RF - сколько копий данных будет сделано в системе.
RC/WC - сколько реплик должно ответить чтобы запрос был успешным.
RC/WC могут быть численными либо, скажем Quorum (большинство). Чем чревато устанавливать RC или WC равным RF?
21:01Если RC равен RF, в случае если даже одна реплика не может ответить (таймаут, unavailability), то весь запрос будет отклонён.
21:09О read/write consistency levels и replication factor можно почитать тут: teddyma.gitbooks.io/learncassandra…
21:26Если во время записи реплика была недоступна, происходит Hinted Handoff. Координатор (нода на которую пришёл запрос) примет запись "вместо".
21:32Когда реплика вернётся в статус UP, координаторы пришлют все сохранённые записи. Больше по этой теме: docs.datastax.com/en/cassandra/2…
21:34Для чего нужны tombstones и gc_grace? Почему недостаточно просто удалить запись с диска и забыть?
21:43LSM-trees (реализация sstable) immutable. Во время чтения если строка находится в нескольких sstable, происходит merge (reconciliation)
21:52Значит sstable обязан иметь запись об удалении. Во вчерашнем пейпере Epidemic Algoritms это назвали "dormant certificates".
21:54Вторая причина - если реплика отсутствовала, ей нужно "сообщить" о том, что запись была удалена. Для этого нужно об этом иметь запись самому
21:55Больше информации на тему можно найти здесь: thelastpickle.com/blog/2016/07/2…
21:56Допустим, две реплики имеют разные записи (после проблем с сетью). Каким образом узнать _какие именно_ записи нужно синхронизировать?
21:59О том что есть конфликт можно узнать с помощью checksum данных: если суммы не совпадают, нужно синхронизировать.
23:20Конечно хорошо бы было узнать какие именно сегменты не совпали. Для этого используют Merkle Trees: en.m.wikipedia.org/wiki/Merkle_tr…
23:26Следующая проблема: создали таблицу. В кластере 300 нод. Каким образом сообщить всем нодам о том что была создана таблица?
23:44@backendsecret пустить слух об этом :)
Очевидным O(N) решением было бы контактировать каждую ноду. Но есть более эффективные решения: Gossip.
23:59@backendsecret Бомбить-то должно с того, что где виртуальный вызов -- там с большой вероятностью "прощай инлайн", если только не (D)PGO.0:04
@backendsecret Для обывателя это обозримый "оверхед": добавили virtual и стало херово. Обывателю всё равно, каков механизм этого "херово".
Хотел поинтересоваться: в jvm jit производится автоматическая девиртуализация? twitter.com/shipilev/statu…
0:26@backendsecret Ладно, про аэромех->расскажи. Это фалт что ли? Или все таки факи?
Как вообще в кремний то занесло? Кто вдохновил?
Да, поступал на ПМИ на ФАЛТ (на ФАКИ не было информатики). Попал в Интел через лабу МФТИ-Intel (компиляторы), потом… twitter.com/i/web/status/8…
0:35@backendsecret Кто-то даже находил смешным, что автоматический PGO оказался куда более распространён в джавовом мир… twitter.com/i/web/status/8…
Программистов невозможно заставить профилировать код, а в managed execution это можно делать прозрачно twitter.com/shipilev/statu…
0:38@backendsecret Но ведь программисты на С/С++ -- это ого-го! Они все прочитали Стандарт, глубоко знают свой тулчейн… twitter.com/i/web/status/8…0:40
@backendsecret Я когда девиртуализацию запилил, у меня 473.astar ускорился в 1.5 раза ;) Проблема, как уже сказали… twitter.com/i/web/status/8…0:53
Тупая железка - говорят программисты, когда что-то не работает.1:01
Тупые программисты - говорят железячники
Если определить эксперта как того, кто больше пиздит, чем делает, то я эксперт
Чему я научился за 4 года в индустрии twitter.com/fads93_zombie/…
1:02@fads93_zombie @shipilev а процессор может сам делать reorder инструкций с места, которое предсказал branch predictor?
Если я правильно понял вопрос, то это и так происходит в OOO-конвейере twitter.com/alexanius/stat…
1:28Про предсказание переходов, наверно, стоит поговорить отдельно. Пост на SO с очень наглядной аналогией для понимания stackoverflow.com/a/11227902
1:31@backendsecret Интересно что в списке нет AMD :)
Упс, это без задней мысли. У AMD хороший послужной список инноваций в архитектуре: amd64, интегрированный КП, HBM, … twitter.com/romanow_ua/sta…
2:20IntelのCPUの早見表…。 pic.twitter.com/jLGB1836ky7:16
@fads93_zombie @backendsecret А на чем железячники работают в интеле? Маки, сарфейсы, стационары или что-то ещё?
Инженеры пользуются обычными ноутбуками (HP и Thinkpad), реже стационарами, и еще реже маками. Разработка ведется н… twitter.com/i/web/status/8…
8:10@backendsecret можешь рассказать о процах с фпга?
К сожалению, я ничего о них не знаю. Альтеровский бизнес пока по большей части отдельно. twitter.com/yamironichev/s…
8:11@backendsecret почему маки не в почете?
Я думаю, что по чисто прагматическим соображениям: компании со штатом 100к человек дешевле поддерживать парк машин… twitter.com/i/web/status/8…
9:33@backendsecret а у вас винда? я раньше думал, если инженер то сам разбираешься со своей машиной и ос
На ноутбуках только винда, на удаленных рабочих станциях или винда, или Линукс. Люди работают, а не разбираются со… twitter.com/i/web/status/8…
9:42Хотя сам я долгое время был гентушником, что пришлось кстати в моей работе
9:45Тот случай, когда часы наблюдений за компиляцией какого-то дерьма делают тебя экспертом в компиляторах
9:47А кстати
На работе я пользуюсь
@backendsecret Что же мне выбрать, коли я Mac + Linux юзаю :D
Чем пользуетесь чаще twitter.com/strizhechenko/…
9:56Одно интересное наблюдение: у архитекторов, которые проводят эксперименты и обрабатывают статистику, пользуется популярностью Jupyter NB
10:16если в московском офисе я был одним из немногих, кто владел pandas'ом, то в штатах люди основательно взяли на вооружение этот инструмент
10:17А разработчики бэкенда пользуются средствами для анализа данных?
10:20@backendsecret а можно нубский вопрос? Почему процессоры с одинаковой частотой и кол-вом ядер настолько разные по производительности?
Производительность процессора определяется тремя составляющими:
10:37IPC - instructions per clock. IPC зависит от приложения и микроархитектуры процессора, борьба за повышение IPC ведется с обоих фронтов
10:41Кстати, пиковый теоретический IPC Эльбруса - 23, однако большинство задач не обладают таким параллелизмом, чтобы загрузить все устройства
10:45@backendsecret А как же всякие л3 кэши и синхронизация между ядрами?
Согласен, но кэши и протоколы когерентности относятся к подсистеме памяти, что лежит в т.н. uncore twitter.com/russianlagman/…
10:48@backendsecret спасибо! а эти самые ipc можно найти в каких открытых спецификациях? в консумерских вариантах ни разу не попадались.
Производительность консумерских процессоров проще всего оценивать по интересующим вас бенчмаркам :) twitter.com/_maximkuzmin/s…
10:51Иногда в новостях пишут: “Zen is 6-wide OOO CPU”, “Denver - 7-wide in-order”. Про микроархитектуру Intel и AMD пишет Agner Fog
10:52Я не специалист по uncore :)
10:53То есть IPC зависит от ILP задачи (instruction-level parallelism), ширины машины и способности машины извлекать параллелизм
10:57IPC: Интел больше вкладывает как в оптимизацию задач под свои процессоры, так и в ширину исполнения и способность CPU извлекать параллелизм
11:00Ширина исполнения определяется количеством инструкций, проходящих в такт по тракту конвейера
11:02Способность извлекать параллелизм out-of-order процессоров напрямую связана с размером окна переупорядочивания (ROB, RS, Load/Store Buffer)
11:03@backendsecret Нужен блиц курс по устройству процессора.
Или зря бы глоссарий
Хорошего блиц-курса или глоссария по архитектуре я не встречал :( twitter.com/krems5/status/…
11:15Хороший всеобъемлющий учебник про архитектуру и дизайн процессоров - Харрис и Харрис в русском переводе silicon-russia.com/2016/01/04/har…
11:17Не entry-level: технионовский курс про микроархитектуру от архитекторов Core webcourse.cs.technion.ac.il/234267/Winter2…
11:33Нашел! Запись трехдневного тренинга по архитектуре в Яндексе от моего коллеги Александра Титова (видео+слайды):
linkedin.com/pulse/3-day-cp…
@backendsecret Что думаешь насчёт Xeon'ов на домашних компьютерах?
Мечта любого энтузиаста - собрать себе рабочую станцию с двумя 12-core Xeon... и компилировать Gentoo на этом железе twitter.com/dcromster/stat…
19:16@backendsecret А единственный способ реально оценить производительность - замерить на конкретной задаче, под которую железка покупается19:17
@backendsecret А как же Хенннси и Паттерсон. Раньше на их основе ещё на курсере курс был, но его удалили. Есть на торрентах
Речь про Computer Architecture: A Quantitative Approach, которая считается библией. На курсере есть принстонский ку… twitter.com/i/web/status/8…
19:20Если честно, я так и не нашел ответа на вопрос зачем это нужно
19:21@krems5 @backendsecret Вот норм статья lighterra.com/papers/modernm…
Плюсую
“Modern Microprocessors – A 90-Minute Guide!” twitter.com/alexgpg/status…
@backendsecret А какая книжка самая умная и крутая?
Обзорная: Patterson, Hennessy "Computer Organization and Design", детали Out-of-Order: Shen, Lipasti "Modern Proces… twitter.com/i/web/status/8…
22:00Intel’s Core i9 Extreme Edition CPU is an 18-core beast engt.co/2qwBtEM pic.twitter.com/yWSkbUcAtw
О нет, они сломали понятную схему i3-i5-i7 twitter.com/engadget/statu…
22:05@backendsecret Хочешь сказать, что ты непричём? :D
Ну это же как Пентиум-5, которого так долго ждали, и который из-за этого ни в коем случае нельзя было выпускать twitter.com/dcromster/stat…
22:18Pentium 5, Core i9 - как каденция в музыке, которая наступает после напряженного ожидания. Теперь все расслабятся :/
22:21# Среда 88 твитов
Хорошая вводная статья на тему Gossip Protocols от уже упомянутого @old_sound alvaro-videla.com/2015/12/gossip…
0:02@backendsecret Telenovela Protocol with Natalia Oreiro!0:12
@backendsecret have you seen this? twitter.com/flopezluis/sta… by @flopezluis
Wow! Gossip Simulator! Очень в тему!
0:17@backendsecret And the first song is a different one, "Caballo Viejo", an Uruguayan band made it very popular youtube.com/watch?v=EglM_I…
Музыкальная пауза twitter.com/old_sound/stat…
0:31@backendsecret Никак? At least/most же. А вообще все хотят, да. Вот например medium.com/some-tldrs-ru/…0:45
Со Storage все немного проще чем с Consistency. Cassandra использует два вида хранилищ: Commit Log и SSTable.
12:58Во время записи данные попадают сперва в Memtable (находятся в RAM), обычно реализованы как SkipList или BTrees (для point и range queries)
13:00Если интересно, развернутая статья по поводу SkipLists: citeseerx.ist.psu.edu/viewdoc/downlo…
13:03После того как размер таблицы в памяти заходит за конфигурируемую отметку, таблица записывается на диск в виде SSTable(sorted string table)
13:05Этот процесс называется memtable flush. Если нода по каким-то причинам падает до того как memtable записан на диск, при перезагрузке будет
13:07произведена восстановка данных из CommitLog. CommitLog это sequential file, в который записываются данные без сортировки, который содержит
13:08лог операций над данными. Он используется для того чтобы избежать потерь данных. В двух словах можно почитать тут docs.datastax.com/en/cassandra/3…
13:10Более подробный talk (Read Path Internals) можно посмотреть здесь youtube.com/watch?v=HuDJBT…
13:12Cassandra записывает данные в сортированные файлы прямо из памяти, то есть скоро их становится очень много (плюс в них будут tombstones).
13:14Каким образом избавиться от tombstones (вспоминаем grace_period) со вчера? И как уменьшит количество SSTables?
13:15Процесс называется Compaction: он читает SSTables с диска и пишет данные из них в новый SSTable, объединяя строки из нескольких файлов.
13:47Неплохой гайд по поводу compaction strategies можно найти здесь: instaclustr.com/blog/2016/01/2…
13:48Чтобы читать на диске только те таблицы в которых _вероятнее всего_ будет находится запись, используют Bloom Filter.
15:03Вероятностная структура данных, которая может точно ответить отрицательно на вопрос есть ли запись в таблице,но положительный ответ не точен
15:04То есть в результате последующего поиска на диске может оказаться что записи в таблице нет.
15:08Более подробно (с иллюстрациями и примерами) о Bloom Filter можно почитать здесь: jasondavies.com/bloomfilter/
15:09@backendsecret насколько часто стоит выполнять nodetool repair, если данные никогда не изменяются/удаляются?
Ещё можно почитать подробно статью о repair здесь: datastax.com/dev/blog/repai… twitter.com/meln1k/status/…
15:28Отличная статья о понятии времени в распределенных системах: There’s no now queue.acm.org/detail.cfm?id=…
16:43Не совсем по теме недели, но интересная статья: Working at Netflix: 2017 by Brendan Gregg brendangregg.com/blog/2017-05-1…
17:29И ещё одна больше high-level идеи, Infrastructure behind the Twitter: Scale: blog.twitter.com/2017/the-infra…
17:33По сегодняшней теме: детали реализации Cassandra 3.x Storage Engine thelastpickle.com/blog/2016/03/0…
17:35Более интуитивная статья на тему Log Structures Merge Trees: benstopford.com/2015/02/14/log…
20:28О конфузной формулировке CAP и ACID где слово Consitent значит разные вещи: thislongrun.blogspot.de/2015/03/the-co…
20:32@backendsecret лучше уже "сбивающей с толку"20:38
И напоследок, тоже не совсем в тему, но в за прошлые несколько лет пришлось много работать с оптимизацией производительности.
20:40Было интересно разобраться с операционными системами. Нашёлся хороший курс по OS с заготовками для тестовых заданий: ops-class.org
20:43Очень стоящий курс. После него становится легче ориентироваться в любом ядре, поскольку понимаешь toolchain, структуру и стиль кода ядер.
20:44If you have just two takeaways from this week, let it be ops-class.org and 15721.courses.cs.cmu.edu/spring2017/pro… пройдите, останетесь довольны!
20:46По техническим причинам я вынужден эту неделю остановить после трёх дней. Перекопал свой архив ссылок, вспомнил много интересного.
20:47Надеюсь материал был всем полезен. Напомню что все ссылки будут структурированы и выложены в gist: gist.github.com/ifesdjeen/4af4…
20:49Напомню, что с Вами был @ifesdjeen. Приятно было со всеми пообщаться и всего хорошего!
20:55Доброе утро, разработчики бэкенда! Я обещал поговорить о московской школе процессорных технологий, к которой нескромно отношу и себя
7:52Наверное, вся история начинается с института точной механики и вычислительной техники, в котором разрабатывались Эльбрусы
7:54Наверное, будет разумно связать ранние процессорные разработки института с именем С.А. Лебедева, который разрабатывал МЭСМ в Киеве
7:57Напомню, что МЭСМ - первая электронно-вычислительная машина в континентальной Европе (по википедии)
7:58Лебедев в ИТМиВТ начинает работать над серией БЭСМ, на которых рассчитывают баллистику ракет и водородную бомбу (как рассказывали в ЦИАМ)
8:03Последняя машина серии БЭСМ-6 становится первой советской суперэвм на транзисторах.
8:05Кстати, про лампы. Бабаян рассказывал байку про ламповые машины: во время испытаний системы ПВО в ЭВМ взорвалась лампа
8:08В системе была предусмотрена избыточность, поэтому лампу благополучно заменили, и ракета была успешно сбита
8:10Теперь расскажите, как вы меняли диск в RAID hotswap
8:12Так вот. БЭСМ-6 была конвейеризованной машиной с виртуальной памятью и обеспечивала 1 MIPS. В 1965 году.
8:16Как шутил Бабаян, перенос при арифметическом сложении в тех машинах начинался в одной комнате, а заканчивался в другой
8:17Кстати, американское слово, означающее размещение элементов процессора на чипе (floorplan) тогда носило буквальный смысл
8:18За БЭСМ-6 последовал Эльбрус-1 и Эльбрус-2, разработанные под руководством Бурцева (про него часто вспоминал Бабаян)
8:22Эльбрус-2 — это фантастическая машина для СССР конца 70х-начала 80х годов
8:23Out-of-Order суперскаляр, многопроцессорность, виртуальная память, интегрированный КП, CRC-память, тегированные тип… twitter.com/i/web/status/8…
8:25Сошлюсь на пост Бориса Мурташина на Хабре: habrahabr.ru/post/313376/
8:26Для Эльбруса-2 под руководством Пентковского был разработан язык Эль-76. В Эль-76 были исключения, которые назывались просто: “ситуация”
8:29Прошу прощения: Борис Муратшин
8:38Эльбрус-2 вместе с Эль-76 (который служил ассемблером) и ОС был сдан госкомиссии в 1985 году. С тех пор он используется в ПВО Москвы
8:40Разработка Эльбруса-3 началась в 1986 году уже под руководством Бориса Арташесовича Бабаяна
8:42Идеи Эльбруса-3: EPIC VLIW система команд, продвинутые микроархитектурные фичи (типа асинхронного буфера префетча Array Prefetch Buffer)
8:47Про Эльбрус издана книга (Ким, Волконский из МЦСТ): mcst.ru/vyshla-v-svet-…
8:50Как по мне, киллер-фича Эльбруса, которая до сих пор широко не реализована - это контекстная защита (то есть ACL на уровне функций и данных)
8:54Эльбрус-3 не взлетел отчасти из-за недофинансирования и распада СССР. Бабаян начал искать контакты с западом, который тоже был не прочь
8:58Бабаян сконтактировался с Дейвом Дитцелом, тогда CTO в Sun Microsystems по архитектуре SPARC и основал МЦСТ как контрактора для Sun
9:00Пентковский уехал в Америку и сделал Пентиум.
9:01В каждой шутке доля шутки: Пентковский был архитектором Pentium 3, насколько мне известно, он работал над SSE
9:03В то же время Бабаян рассказал Дитцелу все свои идеи про VLIW и двоичную трансляцию, и Дитцел основал Трансмету
9:06Интервью Дитцела, в котором он говорит про свою историю работы с советскими/российскими архитекторами… twitter.com/i/web/status/8…
9:07Но потом что-то пошло не так и Дитцел перестал контактировать с МЦСТ. В МЦСТ наступили тяжелые времена. Бабаян начал делать E2K (Elbrus2000)
9:11Маркетинг E2K был потрясающий: в прессе его называли “убийца Merced (Itanium)”, история с Дитцелом указывала на то, что русские не блефуют
9:13Как мы знаем, Эльбрус-2000 был выпущен и успешно работает (и даже продается за 400 тысяч). Так себе история успеха, но все же.
9:14Потом в 2004 году Интел решил, что ему не нужно никакого убийцы Итаниума (он его убьет сам), и большая часть коллектива МЦСТ перешла в Интел
9:15Кстати, первый офис Интел открылся в России в 1993 году, но не Москве, а в… Сарове. Да, рядом с закрытым городом ядерщиков Арзамасом-16
9:19Что вместе с новостью о работе Sun с коллективом ИТМиВТ породило слухи, что якобы госдеп спонсирует ИТ-компании, чтобы те нанимали русских
9:21Подтверждений этому я не нашел. Но вообще звучит разумно и дальновидно со стороны госдепа.
9:22В Интеле коллектив продолжил работать с джавой (опыт работы с Sun оказался не лишним), компиляторами, а также делать R&D в архитектуре
9:25На этом я закончу свой рассказ об истории московской процессорной школы, потому что здесь начинается настоящее (и будущее) :)
9:27Спасибо за внимание!
9:28@backendsecret Если ты про Эльбрус-4С, то уже 200К же стоит ;)9:33
@backendsecret А можешь рассказать что сейчас происходит с офисами разработчиков intel в России и с базовой кафедро… twitter.com/i/web/status/8…
Кафедра микропроцессорных технологий в МФТИ работает, а про офисы не могу сказать. Тонко намекну, что я переехал, н… twitter.com/i/web/status/8…
9:35@backendsecret Кстати, у нас сейчас портируют sanitizer с аппаратной поддержкой ;)
Киллер-фича Эльбруса еще заставит мир дрогнуть! twitter.com/alexanius/stat…
9:36Зря они так. Убийца Итаниума таки вышел в прошлом году.Правда сам Итаниум прекратили выпускать уже с 15 лет наза… twitter.com/i/web/status/8…
В те темные времена еще не было так очевидно, что Итаниум не выстрелит, у Интела ведь могло хватить инерции перевес… twitter.com/i/web/status/8…
9:41@backendsecret да речь не о том. Просто спустя 15 лет продавать убийцу Итаниума за 10-кратную цену - как-то запредельно.
Давайте спросим эксперта @alexanius о вопросах ценообразования на Эльбрусы twitter.com/workaround9/st…
9:47@backendsecret без полноценных команд целочисленной арифметики, производительность средних моделей IBM, скопирована… twitter.com/i/web/status/8…
Схожесть набора команд и копирование - разные вещи, согласитесь? ЕС ЭВМ копировались, в других случаях было заимств… twitter.com/i/web/status/8…
10:03@backendsecret @alexanius За мелкосерийку нормальный ценник. Просто он в принципе нафиг он никому не нужен, тем бол… twitter.com/i/web/status/8…10:04
Про идеи Барроуз в Эльбрусе говорил Бабаян. Про идеи Эльбруса в Трансмете говорил Дитцел :) была ли трансмета скопирована с Эльбруса? Нет
10:05@imdefined @backendsecret И напоследок - на рынке российских разработок быстрее ничего нет и не предвидится. А я по… twitter.com/i/web/status/8…11:07
@imdefined @backendsecret Вообще нужен там где есть специальные требования. Пытаемся ещё выйти на гос. рынок, но ну… twitter.com/i/web/status/8…
Кмк, адекватная ниша для Эльбрусов. Чтобы следующий Wannacry просто не запустился :) twitter.com/alexanius/stat…
11:09Ryzen Threadripper is an actual BEAST. (mobile quadcore Ryzen chip on the right) pic.twitter.com/IrxoYHUpql
Он больше итаниума! twitter.com/shen/status/86…
21:48Ryzen Threadripper will release this summer with a total of 64 PCIe lanes and no PCIe segmentation in the lineup.… twitter.com/i/web/status/8…
64 PCI-e линий - это SLI в 4x конфигурации! twitter.com/oc3d/status/86…
21:50AMD Threadripper: 16 cores, 32 threads pic.twitter.com/G8zZFRMUs2
21:57# Ссылки
other
- http://paperhub.s3.amazonaws.com/18e91eb4db2114a06ea614f0384f2784.pdf
- http://cloudgroup.neu.edu.cn/papers/cloud%20data%20storage/dynamo-sosp-2007.pdf
- https://en.m.wikipedia.org/wiki/CAP_theorem
- https://en.m.wikipedia.org/wiki/Merkle_tree
- http://minikanren.org/
- https://www.cs.cornell.edu/courses/cs614/2003sp/papers/Wel01.pdf
- https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf
- http://the-paper-trail.org/blog/a-brief-tour-of-flp-impossibility/
- http://lamport.azurewebsites.net/pubs/lamport-paxos.pdf
- https://gist.github.com/ifesdjeen/4af4c2302126b11a48cdc8d36787a6c9
- https://data-artisans.com/blog/high-throughput-low-latency-and-exactly-once-stream-processing-with-apache-flink
- https://pdfs.semanticscholar.org/49ed/15db181c74c7067ec01800fb5392411c868c.pdf
- https://github.com/thinkaurelius/titan/commits/titan10
- https://github.com/Netflix/chaosmonkey
- https://github.com/jepsen-io/jepsen/tree/master/doc
- https://github.com/torvalds/linux/blob/master/fs/aio.c
- http://people.cs.georgetown.edu/~jfineman/papers/cobtree.pdf
- https://idea.popcount.org/2017-02-20-epoll-is-fundamentally-broken-12/
- https://cwiki.apache.org/confluence/display/KAFKA/KIP-98+-+Exactly+Once+Delivery+and+Transactional+Messaging
- https://codahale.com/you-cant-sacrifice-partition-tolerance/
- http://engineering.sendence.com/2017/03/hello-wallaroo/
- http://15721.courses.cs.cmu.edu/spring2017/syllabus.html
- http://15721.courses.cs.cmu.edu/spring2016/syllabus.html
- http://15721.courses.cs.cmu.edu/spring2017/project1.html
- http://matt-welsh.blogspot.de/2010/07/retrospective-on-seda.html
- https://aphyr.com/posts/281-jepsen-on-the-perils-of-network-partitions
- https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
- https://wiki.linuxfoundation.org/networking/netem
- https://www.datastax.com/dev/blog/testing-apache-cassandra-with-jepsen
- https://www.datastax.com/dev/blog/repair-in-cassandra
- http://shop.oreilly.com/product/0636920032175.do
- http://alvaro-videla.com/2015/12/learning-about-distributed-systems.html
- http://alvaro-videla.com/2017/01/metaphors-we-code-by.html
- http://alvaro-videla.com/2015/12/gossip-protocols.html
- https://www.youtube.com/watch?v=fOAytjkG7XQ
- https://www.youtube.com/watch?v=HuDJBTPdaOA
- http://redmonk.com/videos/metaphors-we-compute-by/
- https://teddyma.gitbooks.io/learncassandra/content/replication/turnable_consistency.html
- http://docs.datastax.com/en/cassandra/2.1/cassandra/operations/opsRepairNodesHintedHandoff.html
- http://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlHowDataWritten.html
- http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html
- http://thelastpickle.com/blog/2016/03/04/introductiont-to-the-apache-cassandra-3-storage-engine.html
- http://highscalability.com/blog/2011/11/14/using-gossip-protocols-for-failure-detection-monitoring-mess.html
- https://m.youtube.com/watch?v=dBvWG-60OnE
- http://www.gsd.inesc-id.pt/~ler/reports/LPR_GossipBasedBroadcast.pdf
- https://medium.com/some-tldrs-ru/%D0%BD%D0%BE%D0%B2%D1%8B%D0%B5-%D1%84%D0%B8%D1%87%D0%B8-%D0%B2-apache-kafka-exactly-once-%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B9-%D1%82%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D0%B8-%D0%B8-%D0%BF%D1%80%D0%BE%D1%87%D0%B5%D0%B5-a634a8c79f0a
- http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=7C01220D29F196B781B2C2E2F32C8D79?doi=10.1.1.17.524&rep=rep1&type=pdf
- https://www.instaclustr.com/blog/2016/01/27/apache-cassandra-compaction/
- https://www.jasondavies.com/bloomfilter/
- http://queue.acm.org/detail.cfm?id=2745385
- http://www.brendangregg.com/blog/2017-05-16/working-at-netflix-2017.html
- https://blog.twitter.com/2017/the-infrastructure-behind-twitter-scale
- http://www.benstopford.com/2015/02/14/log-structured-merge-trees/
- http://thislongrun.blogspot.de/2015/03/the-confusing-cap-and-acid-wording.html?m=1
- https://www.ops-class.org/
- http://vk.com/pipelinestall
- https://arstechnica.com/gadgets/2017/03/intel-still-beats-ryzen-at-games-but-how-much-does-it-matter/
- http://www.itworld.com/article/3196079/data-center/intels-itanium-once-destined-to-replace-x86-in-pcs-hits-end-of-line.html
- https://stackoverflow.com/a/11227902
- http://agner.org/optimize
- http://www.silicon-russia.com/2016/01/04/harris-harris-in-russian/
- http://webcourse.cs.technion.ac.il/234267/Winter2016-2017/ho.html
- https://www.linkedin.com/pulse/3-day-cpu-organization-training-alexander-titov
- https://habrahabr.ru/post/313376/
- http://www.mcst.ru/vyshla-v-svet-kniga-mikroprocessory-i-vk-semejstva-elbrus