Forwarded from Bortlog
Вот вам подборочка хаков из кишочек Pebble:
1) https://github.com/cockroachdb/pebble/blob/master/internal/rawalloc/rawalloc.go
Аллоцируем неинициализированый (незануленый) слайс байт. Иногда надо если Вы знаете что всеравно сейчас перезапишите все эти байты своими, так что на инициализацию платить не хочется. Еще бывают случаи что вы предаллоцируете такой слайс, но может на полную его использовать не будете, поэтому вручную делаете инициализацию ленивой. Остальные варианты использования можете придумать сами и написать в коментарии.
2) https://github.com/cockroachdb/pebble/blob/master/internal/fastrand/fastrand.go
Прилинкованый
3) https://github.com/cockroachdb/pebble/blob/master/internal/bytealloc/bytealloc.go
Если Вы знаете что сейчас будете аллоцировать много маленьких байтслайсов можно предалоцировать их в одном слайсе побольше.
4) https://github.com/cockroachdb/pebble/blob/master/internal/intern/intern.go
Смотрите кто использует
5) https://github.com/cockroachdb/pebble/tree/master/internal/invariants
Как понять что тебя запустили под рейс детектором.
1) https://github.com/cockroachdb/pebble/blob/master/internal/rawalloc/rawalloc.go
Аллоцируем неинициализированый (незануленый) слайс байт. Иногда надо если Вы знаете что всеравно сейчас перезапишите все эти байты своими, так что на инициализацию платить не хочется. Еще бывают случаи что вы предаллоцируете такой слайс, но может на полную его использовать не будете, поэтому вручную делаете инициализацию ленивой. Остальные варианты использования можете придумать сами и написать в коментарии.
2) https://github.com/cockroachdb/pebble/blob/master/internal/fastrand/fastrand.go
Прилинкованый
lock free uint32 рандом из рантайма Go.3) https://github.com/cockroachdb/pebble/blob/master/internal/bytealloc/bytealloc.go
Если Вы знаете что сейчас будете аллоцировать много маленьких байтслайсов можно предалоцировать их в одном слайсе побольше.
4) https://github.com/cockroachdb/pebble/blob/master/internal/intern/intern.go
Смотрите кто использует
sync.Pool для построения кеша интернированых строк. А я то думал что первым додумался так ипользовать Pool 😐 в https://github.com/storozhukBM/pcache5) https://github.com/cockroachdb/pebble/tree/master/internal/invariants
Как понять что тебя запустили под рейс детектором.
GitHub
pebble/internal/rawalloc/rawalloc.go at master · cockroachdb/pebble
RocksDB/LevelDB inspired key-value database in Go. Contribute to cockroachdb/pebble development by creating an account on GitHub.
Forwarded from PONV Daily (Danila Matveev)
#distributed #lectures #edu
Странный состав лекций, возможно есть предварительный осенний курс. Но это MIT.
https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB
Странный состав лекций, возможно есть предварительный осенний курс. Но это MIT.
https://www.youtube.com/playlist?list=PLrw6a1wE39_tb2fErI4-WkMbsvGQk9_UB
YouTube
MIT 6.824 Distributed Systems (Spring 2020)
Share your videos with friends, family, and the world
Forwarded from Linker Unsafe
В закладки.
A curated selection of artisanal consensus algorithms and hand-crafted distributed lock services.
https://github.com/graydon/awesome-consensus
A curated selection of artisanal consensus algorithms and hand-crafted distributed lock services.
https://github.com/graydon/awesome-consensus
GitHub
GitHub - graydon/awesome-consensus: Awesome list for Paxos and friends
Awesome list for Paxos and friends. Contribute to graydon/awesome-consensus development by creating an account on GitHub.
Forwarded from Linker Unsafe
В дополнение анимированный интерактивный туториал по Raft консенсусу. Известная ссылка, но вдруг кто не видел.
https://thesecretlivesofdata.com/raft/
https://thesecretlivesofdata.com/raft/
Forwarded from Kitsu
https://reberhardt.com/blog/2020/10/05/designing-a-new-class-at-stanford-safety-in-systems-programming.html
https://reberhardt.com/cs110l/spring-2020/
Еще лекций по расту подвезли, кажется тут еще не мелькало. Тут правда похоже нужен хороший бэкграунд по C/C++
https://reberhardt.com/cs110l/spring-2020/
Еще лекций по расту подвезли, кажется тут еще не мелькало. Тут правда похоже нужен хороший бэкграунд по C/C++
Reberhardt
Designing a New Rust Class at Stanford: Safety in Systems Programming
Writing quality software is hard. Sometimes, software breaks in entertaining ways. However, when software runs everything from personal assistants like Alexa and Google Home to banking to elections, some bugs can be much more severe. Thi...
Forwarded from Evil Martians
Чем заняться вечером нерабочего дня? Можно вложиться в самообразование и начать смотреть стенфордский курс лекций по распределенным системам от Мартина Клеппманна. Имя хорошо известно в кругах CRDT (бесконфликтные реплицируемые типы данных).
Плейлист: https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB
Плейлист: https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB
YouTube
Distributed Systems lecture series
Accompanying lecture notes: https://www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf These videos form an 8-lecture series on distributed systems...
Forwarded from Блог*
#prog #article
Продолжение темы от того же автора: Names are not type safety.
https://lexi-lambda.github.io/blog/2020/11/01/names-are-not-type-safety/
В рассуждениях автора легко провести параллели с тем, как использовать и ограничивать unsafe-код в Rust.
Продолжение темы от того же автора: Names are not type safety.
https://lexi-lambda.github.io/blog/2020/11/01/names-are-not-type-safety/
В рассуждениях автора легко провести параллели с тем, как использовать и ограничивать unsafe-код в Rust.
Forwarded from oleg_log (Oleg Kovalov)
А здесь более расширенный бугурт по поводу ipv6. И он вполне логичен.
Когда я впервые посмотрел, сколько же нас ждёт адресов, возник осмысленный вопрос: зачем моей стиральной машинке несколько лярдов адресов? (и если бы только моей).
NAT хоть и имеет свои особенности, но все же решает(?) проблему. Забавно что теперь это NPT (network prefix translation, а не address).
Ах, и конечно же безопасность. Самое время думать о миграции из network engineer в network security engineer, 3х ставку требовать с порога)
Думаю сейчас кто-то из сетевиков придет в коменты или в лс и расскажет мне как мир устроен, но все же - много.
Лонгрид на самом деле, но советую https://teknikaldomain.me/post/ipv6-is-a-total-nightmare/
Когда я впервые посмотрел, сколько же нас ждёт адресов, возник осмысленный вопрос: зачем моей стиральной машинке несколько лярдов адресов? (и если бы только моей).
NAT хоть и имеет свои особенности, но все же решает(?) проблему. Забавно что теперь это NPT (network prefix translation, а не address).
Ах, и конечно же безопасность. Самое время думать о миграции из network engineer в network security engineer, 3х ставку требовать с порога)
Думаю сейчас кто-то из сетевиков придет в коменты или в лс и расскажет мне как мир устроен, но все же - много.
Лонгрид на самом деле, но советую https://teknikaldomain.me/post/ipv6-is-a-total-nightmare/
Tek's Domain
IPv6 Is a Total Nightmare — This is Why
So this is just going to be a total rant. IPv6 is, in theory, a solution to many things, including the dwindling IPv4 address space. IPv6 was officially a draft in 1997, and became a real Internet Standard in 2017. And, quite frankly, it's one of those things…
Forwarded from There will be no singularity
Егор Бугаенко замутил конфу по code quality: iccq.ru
Должно быть круто, жаль не успею подготовить доклад до 4 декабря.
Справедливости ради, это не первая конфа по качеству кода. Существует Static Analysis Symposium, который через несколько дней будет проводиться уже в 27 (!!!) раз. Да, это не совсем про code quality, но все-таки...
Должно быть круто, жаль не успею подготовить доклад до 4 декабря.
Справедливости ради, это не первая конфа по качеству кода. Существует Static Analysis Symposium, который через несколько дней будет проводиться уже в 27 (!!!) раз. Да, это не совсем про code quality, но все-таки...
Forwarded from Блог*
#prog #rust #article
Статья про то, как писать код с инициализацией данных, сохранив сильную exception safety.
Статья про то, как писать код с инициализацией данных, сохранив сильную exception safety.
Arthur::Carcano
Exception safety in Rust: using transient droppers to prevent memory leaks
In this post, we dive into a common Rust pattern to prevent memory leaks in case of exceptions in unsafe code, as used in the `array-init` crate.
Forwarded from мне не нравится реальность (вафель 🧇🍓)
"A Tale of Two Asyncs: Open Source Language Design in Rust and Node.js" by Ashley Williams
Очень занимательный доклад, рекомендую. (спасибо @ps2232)
Очень занимательный доклад, рекомендую. (спасибо @ps2232)
YouTube
"A Tale of Two Asyncs: Open Source Language Design in Rust and Node.js" by Ashley Williams
The syntactical and conceptual affordances for asynchrous programming are the most powerful, yet also most controversial, elements and design patterns in Node.js and the greater JavaScript language ecosystem. From nested callbacks, to promises, to async/await…
Forwarded from ọzkriff
"The Rust Performance Book": https://nnethercote.github.io/perf-book
Forwarded from Sysadmin Tools 🇺🇦
How to Implement Your Distributed Filesystem With GlusterFS And Kubernetes
Learn the advantages of using GlusterFS and how can it help in achieving a highly-scalable, distributed filesystem#k8s #kubernetes #glusterfs #devops
Medium
How to Implement Your Distributed Filesystem With GlusterFS And Kubernetes
Learn the advantages of using GlusterFS and how can it help in achieving a highly-scalable, distributed filesystem
Forwarded from Generative Anton
#education
Cornell University выпустил на первый взгляд невероятно крутой курс, который сделан специально для самостоятельно онлайн прохождения. Курс CS 6120: Advanced Compilers как можно догадаться про дебри компиляторов и всё, что вокруг. Базируется на LLVM и самодельном IR слое. Есть и лекции, и книги и статьи. Всего 13 уроков.
Cornell University выпустил на первый взгляд невероятно крутой курс, который сделан специально для самостоятельно онлайн прохождения. Курс CS 6120: Advanced Compilers как можно догадаться про дебри компиляторов и всё, что вокруг. Базируется на LLVM и самодельном IR слое. Есть и лекции, и книги и статьи. Всего 13 уроков.
Forwarded from Kirill Pimenov
Вот очень приличный курс лекций из Кембриджа: https://www.youtube.com/playlist?list=PLeKd45zvjcDFUEv_ohr_HdUFe97RItdiB
YouTube
Distributed Systems lecture series
Accompanying lecture notes: https://www.cl.cam.ac.uk/teaching/2122/ConcDisSys/dist-sys-notes.pdf These videos form an 8-lecture series on distributed systems...
Forwarded from Denis Otkydach
Если ты вдруг невнимательно следишь за чатиками, тут вот стендфордский курс по расту пробегал:
https://reberhardt.com/cs110l/spring-2020/
https://reberhardt.com/cs110l/spring-2020/
Forwarded from sudo rm -rf /*
Вот хороший годный TL;DR по трейсам сисколов с минимальным импактом на производительность, но это вам в счет нового года, договорились?
TiDB
Trace Linux System Calls with Least Impact on Performance
This post introduces perf and traceloop, two commonly command-line tools, to help you trace system calls in a production environment.
Forwarded from The After Times
Занимательная статья на Хабре (https://slurm.club/2KtNgD7) о том, почему Apache Kafka такая шустрая и популярная. Для тех, кто работает с технологией советуем ознакомиться с тем, что у кафки “под капотом”. Это многое объясняет. Например, можно почитать про батчинг записей, пакетное сжатие, буферизованные операции, zero-copy и другие фишечки.
Хабр
Почему Kafka такая быстрая
За последние несколько лет в сфере архитектуры ПО произошли огромные изменения. Идея единственного монолитного приложения или даже нескольких крупных сервисов,...
Forwarded from Experimental chill
#рецензии
Ультракороткие рецензии на тoп инженерных находок 2020го года от @Danlark, которых не было в блоге. Часть 1.
1. Deterministic Aperture: A distributed, load balancing algorithm
Балансеры в компании Twitter красиво переплетают идеи consistent hashing, непрерывной геометрии и power of 2 choices, что помогает сократить количество соединений в 10 раз и снизить дисперсию распределения запросов на 78%.
2. BOLT: A Practical Binary Optimizer for Data Centers and Beyond
Компания Facebook оптимизирует и так уже PGO соптимизированные C++ бинари в реальном времени, собирая профили и ставя горячие блоки кода близко друг к другу. Из-за этого сайты Facebook и Instagram ускорились на 5-7%, а пропозал по добавлению такой функциональности был принят в LLVM.
3. ScaNN: Efficient Vector Similarity Search
Google выложил свой алгоритм поиска похожих векторов, который обыгрывает по скорости все предыдущие примерно в 2 раза, отличие от других алгоритмов только в том, что ScaNN правильно подобрал константы для квантования и хорошо применил SIMD. Но удачи собрать и запустить это на C++.
4. Elle: Inferring Isolation Anomalies from Experimental Observations
Господин Jepsen наконец-то завершает свои походы со стабильным фреймворком для проверки консистентности в базах данных. В статье сказано: "we believe Elle will make the database industry safer", может быть, он всё таки имел в виду "suffer"?
5. The Case for a Learned Sorting Algorithm
Самобучающийся алгоритм сортировки пытается с помощью real-time модели предсказать примерные позиции в отсортированном массиве, а потом уже легко пройтись и найти точные. Да, оно работает быстрее, чем std::sort вместе с обучением. Да, оно потенциально выкопает могилу теоретикам. Результат как минимум примечательный, но сравнений алгоритмов для однозначной победы и правда маловато.
To be continued...
Ультракороткие рецензии на тoп инженерных находок 2020го года от @Danlark, которых не было в блоге. Часть 1.
1. Deterministic Aperture: A distributed, load balancing algorithm
Балансеры в компании Twitter красиво переплетают идеи consistent hashing, непрерывной геометрии и power of 2 choices, что помогает сократить количество соединений в 10 раз и снизить дисперсию распределения запросов на 78%.
2. BOLT: A Practical Binary Optimizer for Data Centers and Beyond
Компания Facebook оптимизирует и так уже PGO соптимизированные C++ бинари в реальном времени, собирая профили и ставя горячие блоки кода близко друг к другу. Из-за этого сайты Facebook и Instagram ускорились на 5-7%, а пропозал по добавлению такой функциональности был принят в LLVM.
3. ScaNN: Efficient Vector Similarity Search
Google выложил свой алгоритм поиска похожих векторов, который обыгрывает по скорости все предыдущие примерно в 2 раза, отличие от других алгоритмов только в том, что ScaNN правильно подобрал константы для квантования и хорошо применил SIMD. Но удачи собрать и запустить это на C++.
4. Elle: Inferring Isolation Anomalies from Experimental Observations
Господин Jepsen наконец-то завершает свои походы со стабильным фреймворком для проверки консистентности в базах данных. В статье сказано: "we believe Elle will make the database industry safer", может быть, он всё таки имел в виду "suffer"?
5. The Case for a Learned Sorting Algorithm
Самобучающийся алгоритм сортировки пытается с помощью real-time модели предсказать примерные позиции в отсортированном массиве, а потом уже легко пройтись и найти точные. Да, оно работает быстрее, чем std::sort вместе с обучением. Да, оно потенциально выкопает могилу теоретикам. Результат как минимум примечательный, но сравнений алгоритмов для однозначной победы и правда маловато.
To be continued...
X
Deterministic Aperture: A distributed, load balancing algorithm
As parts of the Twitter application grow, we can scale demands on capacity by adding more instances or replicas to a respective service cluster (i.e., horizontal scaling)