ifesdjeen

22 мая 2017, München / Lugano

# Понедельник 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 я интересуется, но мы используем prometheus
14:02
@backendsecret Почитываю на выходных SICP, иногда на 4Clojure решаю задачки.
14:04
@backendsecret А ты почитываешь? Если да - где находишь, а то в последнее время часто ищу оригинальные источники ин… twitter.com/i/web/status/8…
14:07
@alexcleac Все зависит от темы. Есть темы где уже есть наработки, есть где спрашиваю у знающих людей. @adriancolyertwitter.com/i/web/status/8…
14:09

Окей, значит Dynamo Paper объясняет как подойти к разработке базы данных с точки зрения распределённых систем: решает проблемы availability

14:12

и объясняет что делать если одна из нод падает или не может присоединиться к остальному кластеру.

14:13

LSM Paper рассказывает о внутренней организации файлов в базе данных и об общей архитектуре: memory tables / sorted string disk tables.

14:14

Следующий пейпер: SEDA, Staged Event Driven Architecture: cs.cornell.edu/courses/cs614/… как подойти к проектированию потоков и обработке запросов

14:15
@backendsecret Интересует что-нибудь с кластеризацией и тэгами и opensource
14:16
@backendsecret Юзаю по мелочи influxdb. Большого объёма данных нет, для статистики вполне хорошо подходит, grafana… twitter.com/i/web/status/8…
14:20

Продолжая тему распределённые системы 101, кто слышал об FLP Impossibility и Византийских Генералах?

14:25
@backendsecret Бывает, когда надо в тему провалиться, например.
Распределенку начал читать после Лэмпортовских рабо… twitter.com/i/web/status/8…
14:25

Проблема заключается в том что две Византийские армии, готовые напасть на город с двух сторон, должны прийти к согласию по поводу времени.

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 y
true и false интерпретируются как К и К* комбинаторы
а насчёт более простого - заинтриговал)
15:07
@backendsecret В треде говорят "clojure's dying more than it is growing" - как обстоят дела на твой взгляд?
twitter.com/ZackMaril/stat…
15:45

Ссылки за сегодня (будут обновляться по мере поступления): 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:53

Sorted 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:06

Cache 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:02

select() - по прежнему синхронная операция, но она позволяет запросить ожидать событий на нескольких дескрипторах.

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…

Но я если честно плохо понимаю ро… twitter.com/i/web/status/8…

20:36
@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:22

Давайте начнём интерактив. Помогите следопыту Даше определить, с какой аудиторией она имеет дело

11:32

Шёл 2017 год...

11:35

Обход графа в глубину...

11:36

Я просто не мог удержаться

11:44

В игрули я шпилю на...
(выпуск же про процессоры)

11:46
Его было не остановить @backendsecret pic.twitter.com/2qd3ZnS4at
11: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…

21:44
@backendsecret Что ты думаешь насчет x86? Не пришло ли наконец время для итаниума?
Какие шансы у эльбрусов?

Время итаниума наконец закончилось :) Интел прекращает выпуск Итаниумов с релизом Kittson
itworld.com/article/319607… twitter.com/krems5/status/…

21:46
@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 > Итаниум сдох
> Эльбрус не нужен
Казалось бы, можно расслабиться. Но тут внезапно
> NVIDIA Denver
> Qualcomm QDSP6
22:06
@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
@backendsecret Пару советов по этому делу?

1. PGO - ваш друг

23:23

с другой стороны, преждевременная оптимизация есть зло - то, что я назвал боттлнеком, может таковым не быть

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…

10:01
Следующий пейпер: SEDA, Staged Event Driven Architecture: cs.cornell.edu/courses/cs614/… как подойти к проектированию потоков и обработке запросов

Вчера мы говорили о SEDA: Stage Driven Event Architecture. Еще есть follow-up от автора: matt-welsh.blogspot.de/2010/07/retros…

twitter.com/backendsecret/…

10:06

Также мы говорили о CAP и Network Partitions. Когда речь идет о Partition Tolerance, нельзя не упомянуть Jepsen: aphyr.com/posts/281-jeps…

10:11

Jensen - 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 очень хорошая документация,писать свои компоненты и расширения достаточно просто:

github.com/jepsen-io/jeps…

twitter.com/rukavitsya/sta…

10:55

Тулинг приятный, разобраться просто. Для большинства достаточно почитать посты Кайла о его тестов с помощью Jepsen.

10:56

Для тех кто пишет свою базу данных или процессор потоков (stream processing tool), конечно Jepsen очень полезная вещь.

10:57

Хотя я бы рекомендовал посмотреть также на netem чтобы проверять не только network partitions/message drops/delays а также retransmission

10:59

packet 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…

twitter.com/backendsecret/…

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:56

RF - сколько копий данных будет сделано в системе.
RC/WC - сколько реплик должно ответить чтобы запрос был успешным.

20:59

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:43

LSM-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.

twitter.com/meln1k/status/…

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:20
IntelのCPUの早見表…。 pic.twitter.com/jLGB1836ky
7: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

А кстати
На работе я пользуюсь

9:52
@backendsecret Что же мне выбрать, коли я Mac + Linux юзаю :D

Чем пользуетесь чаще twitter.com/strizhechenko/…

9:56

Одно интересное наблюдение: у архитекторов, которые проводят эксперименты и обрабатывают статистику, пользуется популярностью Jupyter NB

10:16

если в московском офисе я был одним из немногих, кто владел pandas'ом, то в штатах люди основательно взяли на вооружение этот инструмент

10:17

А разработчики бэкенда пользуются средствами для анализа данных?

10:20
@backendsecret а можно нубский вопрос? Почему процессоры с одинаковой частотой и кол-вом ядер настолько разные по производительности?

Производительность процессора определяется тремя составляющими:

10:37

IPC - 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:57

IPC: Интел больше вкладывает как в оптимизацию задач под свои процессоры, так и в ширину исполнения и способность 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…

11:47
@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…

19:34
@backendsecret А какая книжка самая умная и крутая?

Обзорная: Patterson, Hennessy "Computer Organization and Design", детали Out-of-Order: Shen, Lipasti "Modern Proces… twitter.com/i/web/status/8…

22:00
Intel’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:18

Pentium 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! Очень в тему!

twitter.com/old_sound/stat…

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:12

Cassandra записывает данные в сортированные файлы прямо из памяти, то есть скоро их становится очень много (плюс в них будут 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:44

If 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:23

Out-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:09
Ryzen Threadripper is an actual BEAST. (mobile quadcore Ryzen chip on the right) pic.twitter.com/IrxoYHUpql

Он больше итаниума! twitter.com/shen/status/86…

21:48
Ryzen 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:50

AMD Threadripper: 16 cores, 32 threads pic.twitter.com/G8zZFRMUs2

21:57

other