commit -m "better"
3.47K subscribers
1.17K photos
165 videos
3 files
2.6K links
just random thoughts
Download Telegram
commit -m "better"
https://www.phoronix.com/news/Linux-6.9-Bcachefs-Attempt Классная заруба между Линусом и автором #bcachefs #Kent. TL;DR - Кент хочет выделить кусок bcachefs в библиотеку, чтобы ей могли воспользоваться разработчики #XFS Линус тут встает в позицию "пока…
#bcachefs

#Kent выложил код, который умеет читать поврежденные им ранее файловые системы - https://www.opennet.ru/opennews/art.shtml?num=60946

"New repair/construction code is in the final stages, should be ready in
about a week. Anyone that lost btree interior nodes (or a variety of
other damage) as a result of the splitbrain bug will be able to repair
then"

Знаете, вот, на самом деле, когда разработчик FS начинает употреблять что-то типа "split brain bug", то я, например, очень радуюсь, и говорю, что, вот, кто-то, наконец-то, понял, как правильно пилить файловую систему.

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

До этого, КМК, FS писали в парадигме того, что нижележещие устройства или надежны, или мы перемонтируем всю FS в read only, если "снизу" вернули ошибку.
👍11🤔9🤓4
https://lore.kernel.org/lkml/20240405102754.435410987@infradead.org/

Я просто оставлю это здесь:

"... Critically cfs-cgroup throttling is not tested, and cgroups are only tested in so far that a systemd infected machine now boots (took a bit) ..."
7👌5🔥4😁3🤔3
commit -m "better"
#vendor Пришлось на днях снова применить "кузькину мать". На этот раз по тележеньке - https://github.com/pg83/ix/commit/d64dfd7a674571ee331df253942cef270851f72e Потому что эти господа, видимо, наслаждаются своей ересью в виде scudo allocator (https://t…
#vendor

https://github.com/desktop-app/cmake_helpers/commit/5a19eddd4554486547d6d5dac3002a93bc105867

Тем временем, коллеги откатили scudo, и вернули jemalloc.

Верю, что пройдет еще пара итераций, и там таки окажется #tcmalloc, хехе.

Как я это заметил? Ну, у меня сломалась "кузькина мать", когда не смогла развендорить scudo в новой версии телеги.

UPD: у меня github показывает розовых поней, наверное, это как-то связано
😁6🤔4🥴2👍1🔥1
Будни #bootstrap, #homelab, #lab короткая эволюция того, как я катаю код на свой флот.

Мой макетник (#ix) позволяет описать любую статическую комбинацию пакетов, с произвольными флагами для их настройки.

В принципе, этого достаточно, чтобы удобно описать конфигурацию одной машины. Собственно, так у меня и был описан мета-пакет, который и был установлен в мой #realm - https://github.com/pg83/ix/blob/main/pkgs/set/pg/ix.sh

В принципе, этого точно так же достаточно, чтобы описать конфигурацию небольшого кластера - вот, например, у меня по папочке с такими наборами на каждый хост - https://github.com/pg83/lab/tree/master/lab/hosts

Но это, конечно, неудобно.

Поэтому следующий шаг - это условный json, один на весь кластер, и по нему уже строится конечная конфигурация. Ну, то есть, есть один конфиг, он знает текущий хост, и, в зависимости от этого, настраивает пакеты:

https://github.com/pg83/lab/blob/master/lab/common/ix.sh#L23-L27

Вот, если наш текущий хост входит в определенную группу хостов, на нем поднимаем набор сервисов с определенными настройками.

Дальше - больше.

Дальше мы не хотим иметь этот json статическим, а хотим его генерировать на python. Вот, пример того, как такой json с описанием кластера может генерироваться на python:

https://github.com/pg83/lab/blob/5f6ebd3c236ba42793cfbf0a5ecbb148688dfda7/lab/ix.sh

А дальше Остапа понесло, он не смог остановиться, и применил свой любимый прием - eval(pickle.loads(base64.b64decode('...'))) (я сейчас явно слышу гомерический смех пяти человек). А, конкретно, давайте опишем состояние сервисов python объектами, сериазизуем их состояние, и будем использовать как описание кластера:

https://github.com/pg83/lab/blob/master/lab/cg.py#L9-L39

2 класса - сервиса, и производящая функция всего кластера, которая полностью описывает его структуру, имея на вход низкоуровневое описание кластера (сети, диски, и так далее).

Класс (а, точнее, объект класса) может описать работающий демон (в том числе, нужные пользователи, зависимости, данные), дальше случается магия, которая превращает это в набор сервисов для каждой машины, описанный в предыдущем шаге.

Этот код может работать в цикле, замкнутом на обратный фидбек от кластера, и от того, как там работает предыдущая конфигурация И, тем самым, реагировать на внешние события.
🐳85🌚4🙈4👍2🌭1
commit -m "better"
Меня тут спрашивают, почему я не пишу про llvm/clang18, хотя он вышел 3 дня назад - https://github.com/llvm/llvm-project/releases По моему опыту, самый всратый релиз компилятора за последние несколько лет. В целом, с точки зрения сборки, все хорошо, почти…
Будни #bootstrap

Как же я задолбался с 18-ым кленгом.

Попробовал выкатить 18.1.3, так там все точно так же плохо, или хуже:

* Мой компрессор, про который я писал выше, начал генерить битые файлы. Я сумел это даже воспроизвести, zstd, собранный последним кленгом, иногда производит битые архивы.

* https://gist.github.com/pg83/e138892353aed9d76b47f85109a1ea05 - вот пример конкретного падения этого кленга (gist я сделал для чуть более ранней версии, там ничего не поменялось). Воспроизводится 100%. Я даже, от безнадеги, собрал чистейший кленг, без своих патчей, с двойной пересборкой себя целиком из исходников. Все равно падает, сволочь.

Писать качественные багрепорты в LLVM времени нет катастрофически, а некачественные нафиг не нужны.

Грусть, тоска, печаль, тлен.
9👍5😱43😁1
Forwarded from Programmer memes
This media is not supported in your browser
VIEW IN TELEGRAM
Маршрутизация

Programmer memes
🤯26🔥16😁84😱1
😁43
commit -m "better"
З
Будни #bootstrap

Продолжаю тему bump alloc, https://github.com/pg83/ix/blob/main/pkgs/lib/bumpalloc/alloc.c

Забавно, но в моей кодовой базе (уникальный код, который я пишу для #stal/ix), использование этого bump alloc только растет:

* Про много мелких программ заранее известно, сколько они съедят памяти.

* Я ненавижу С, потому что без RAII/GC программировать невозможно (с этим согласны даже разработчики одной из самых больших кодовых баз на C - Linux Kernel (если вы не согласны, то что такое RCU, как не форма примитивного GC?)). Но вот если не освобождать за собой память, то программирование программ на C - это почти как программирование программ на Go. Важно, что именно программ, потому что вся обработка ошибок сводится к panic()

* В целом, если мне надо запилить что-то low level, то я либо пишу это на таком вот диалекте C (без free, и с минимальной обработкой ошибок, без return err), либо не пишу вовсе.

Вот, запилил очередную мелкую программулю, вместо которой у меня был скрипт на posix shell - https://github.com/pg83/ix/blob/main/pkgs/bin/cg/unwrap/main.c

Она занимается тем, что запускает другую программу в cgroup, а потом, после ее выхода, прибивает всю cgroup, чтобы не оставалось ошметков в виде stale процессов.

Красота-то какая, лепота!

10 килобайт на диске, ни одной аллокации, если запустить strace, то можно про каждый syscsall сказать, что он делает, и зачем, и почему без него не обойтись.

Как в старые добрые времена DOS, и дискеток на 1.44 мегабайт.
👍17🔥97❤‍🔥3🤔1
Forwarded from Programmer memes
Коллеги, нужно удерживать энергию в рабочем русле еще по крайней мере один день!

Programmer memes
🔥20🫡5😁3😢2
#lab #homelab

https://github.com/francoismichel/ssh3 - прикольная штука, типа, "а давайте запилим ssh поверх стандартных web технологий", типа x509 сертификатов, http/3, quic, и так далее.

На Go, что приятно. В то, что openssh/dropbear написаны "аккуратно", я не верю, потому что на С нельзя писать сложные системы без проездов по памяти.

С точки зрения клиента оно пока довольно harsh, поэтому запилил несколько разных там улучшений:

https://github.com/francoismichel/ssh3/pull/139/files

Посмотрим, что скажут мейнтейнеры.

(особую гордость у меня вызывает способ, которым я зачинил то, что после добавления хоста в known_hosts клиента нужно было перезапустить - https://github.com/francoismichel/ssh3/pull/139/files#diff-8939e1ce1317af19fdceab3a5d7aabbac4949389802b082e926ed37b442fb4f7R203)
12👍7🔥3🤔2
Forwarded from hirakawa shitposting
🥰21😁113🔥2👍1
Forwarded from на хуторе please Dick Аньки (Anna PYYALA)
😁25
Forwarded from /dev/memes
This media is not supported in your browser
VIEW IN TELEGRAM
Томми знает, что, если через несколько минут микросервис «Роскошный Джордж» не придет в себя, то его — Томми — похоронят вместе с ним. Зачем бизнесу обьяснять, почему и отчего в их Проде умер важный сервис? Проще похоронить обоих и мигрировать в облако. Бэкапов у них ведь нет, так? И сейчас Томми, по кличке «Сиська», молится. А если не молится, то ему, следовало бы этим заняться.
😁20🔥7💯5🐳1
commit -m "better"
Рубрика #делай_без_изъебов, #нормально_делай_нормально_будет Кстати, в качестве edge proxy хочу посоветовать https://github.com/umputun/reproxy (не на правах рекламы! #lab) Прелесть этой тулзы в том, что в ней есть примерно все, чтобы сделать проксирование…
Продолжаю рубрику #делай_без_изъебов, #нормально_делай_нормально_будет.

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

Буду иногда писать про такой софт, по мере того, как он мне встречается.

https://github.com/slackhq/nebula

Очень приятная overlay network. Нужно это (мне) для того, чтобы с ноутбука ходить в свою home #lab откуда угодно. Ну и чтобы это было удобно, поэтому модель "bastion" мне не очень.

Сделано оно без ничего лишнего - есть N маяков, которые друг с другом не взаимодействуют, и в каждый из которых узел сети сбрасывает свою текущую конфигурацию. Маяки помогают узлам найти друг друга, за всякими там NAT и прочим.

Узел определяется сертификатом, который ты подписываешь из CA, которое есть только на твоей машинке. В подписанные данные ты пишешь IP, сеть, и группы, к которым принадлежит этот хост.

Все максимально просто и понятно, в отличие от того же tailscale, при чтении документации на который хочется спрость "а нахуя вы тут нахуевертили столько???"

У меня nebula сейчас работает на всех хостах #homelab, но я пока не перевесил ssh daemon с настоящих IP на оверлейные, немного страшновато.
👍16🤔32
В соотечественниках меня дико бесит одна черта.

Когда человек не знает ответа на прямой вопрос, он, из интереса, начинает расспрашивать в стиле "а нахуя это вообще надо/не делай так".

Да кто тебя вообще про это спрашивает???

Не знаешь - так и скажи, "Нет у нас туалетной бумаги", а не "А вам туалетная бумага зачем нужна? Жопу подтирать?"

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

Любой здравомыслящий человек (https://ru.wikipedia.org/wiki/%D0%9D%D0%B8_%D0%BE%D0%B4%D0%B8%D0%BD_%D0%B8%D1%81%D1%82%D0%B8%D0%BD%D0%BD%D1%8B%D0%B9_%D1%88%D0%BE%D1%82%D0%BB%D0%B0%D0%BD%D0%B4%D0%B5%D1%86, но тем не менее) сразу поймет, что речь идет про какую-то устоявшуюся нагрузку, в которой температура компонент сервера есть чистая функция нагрузки и температуры снаружи, и что надо сказать, что, вот, если ты гоняешь сервера под такими-то парами, и у тебя вокруг 40 градусов, то уже плохо, а 35 - может еще и норм.

Но, блядь, нет, сука, "а какой у тебя cpu freq driver/governor", а, как вам такое???

Так вот - какая температура воздуха должна быть в датацентре?

UPD: тредик в комментариях, конечно, захватывающий. Зачем-то куча людей, которые не знают ответа, начали мне рассказывать про "тебе надо другое" (хотя я совершенно точно знаю, что мне надо), и только один человек (https://xn--r1a.website/c/1469934025/25337), который знает ответ, просто его озвучил.
👍11👎7😁7🤡63🤷‍♀2🦄2🐳1💯1
Про логические уловки.

Люди довольно часто, осознано, или нет, оставим это на их совести, пользуются логическими уловками.

3 моих любимых:

https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D1%81%D1%83%D0%BF%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8F

https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%BC%D0%B5%D0%BD%D0%B0_%D1%82%D0%B5%D0%B7%D0%B8%D1%81%D0%B0

https://cyclowiki.org/wiki/%D0%9E%D1%86%D0%B5%D0%BD%D0%BE%D1%87%D0%BD%D0%BE%D0%B5_%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5

Я, знаете ли, в разные периоды жизни по разному реагировал, когда собеседник/оппонент начинал использовать подобные приемы.

Горячился, махал руками, пытался что-то объяснять.

Сейчас я придерживаюсь следующей позиции - никогда не садитесь играть в карты с шулером.

Что это значит?

Это значит, что, если вы не обозначите свое отношение к высказанному утверждению, максимально четко и ясно, то вы примете мысленный фреймворк оппонента, а ему только это и нужно.

Например, если ваш оппонент говорит, что "А - хорошо, Б - плохо" (оценочное суждение), то вам не стоит начинать обсуждать, действительно ли A - хорошо, а Б - плохо. Если вы начали это обсуждать, то вы попались - вы приняли право вашего оппонента навязывать вам определения "хорошо" и "плохо". И на этом поле оппонент вас обязательно выиграет, потому что выигрывает тот, кто определяет, что хорошо, а что - плохо.

Поэтому, когда я вижу, что собеседник пользуется одной из таких логических уловок, у меня в диалоге случается "full stop".

Я говорю собеседнику, что он воспользовался подобным приемом (*), и предлагаю ему либо согласиться, и переформулировать мысль, или не согласиться, и доказать мне, что я ошибся, или закончить наш диалог. Потому что не надо садиться играть в карты с шулером! Не надо пытаться договориться с шулером в рамках правил, которые он вам навязывает, потому что вы автоматически проиграли. Сначала договоритесь про устраивающие вас правила.

Ну а дальше либо диалог переходит в более конструктивное русло (в случае оценочного суждения, например, вам стоит на берегу договориться о том, какие объективные критерии вы измеряете, без "хорошо" и "плохо"), либо заканчивается.

(*): да, прямо так и говорю - "это пресуппозиция", или "это оценочное суждение", или "это подмена тезиса".
👍28🤡147🔥4🤔1