Yet another senior pomidor (by @gmelikov) – Telegram
Yet another senior pomidor (by @gmelikov)
175 subscribers
44 photos
6 videos
46 links
Околоайтишные страсти с уклоном в инфровую разработку и sci-fi.
Ведёт @gmelikov
Download Telegram
Перестрелка :)

А записи докладов уже публично доступны тут https://conf.ontico.ru/online/ghl2025 , буду использовать как хорошие вводные для новых сотрудников.
6👀3🔥2
Объявлена неделя многоядерности Multi-kernels, не только лишь один один патч, но целых два были опубликованы на LKML.

Идея интересна - давайте на отдельных ядрах процессора запускать честные копии (может даже разных версий) ядер ОС, каждому отсыпать индивидуально куски памяти, и, в идеальной картине мира, также нарезать и другое железо (сети, диски, GPU, словом - всё что висит на PCIe шине).

Всё это подаётся в основном как замена виртуализации, ожидая минимизацию накладных расходов. НО - кто же будет отвечать за общие компоненты? Да тот же сторадж, локальные файловые системы требуют монопольный доступ. В сетях вроде есть sr-iov, но с ним тоже теряется определённая гибкость. Вообще вырисовывается интересный нюанс - должно быть более главное главное ядро, которое за такие вещи должно отвечать. Тут лично у меня вопрос - а чем общение между ядрами будут отличаться по эффективности от virtio + vhost(-user) у VMок, которые уже по максимуму стараются передавать данные без копирования?

В LKML оставили ещё один очень интересный комментарий на эту тему: Pasha Tatashin когда то уже экспериментировал с этим подходом (уже третий вариант в рамках этого поста 😄 ), и отмечает проблемы:
While this approach was easy to get to the experimental PoC, it has
some fundamental problems that I am not sure can be solved in the long
run, such as handling global machine states like interrupts. I think
the Orphaned VM approach (i.e., keeping VCPUs running through the Live
Update procedure) is more reliable and likely to succeed for
zero-downtime kernel updates.


В итоге выглядит, что такой подход весьма интересен для масштабирования в рамках одного хоста, а вот удобство и изоляцию VMок будет весьма затруднительно догнать.
👍4👀31👨‍💻1
This media is not supported in your browser
VIEW IN TELEGRAM
Мне тут стало скучно, и я решил купить самый дешёвый 4ТБ nvme с озона по цене HDD. Наверное, вы уже догадываетесь про что будет пост :)

Начиналось всё не плохо, диск до сих пор виден в системе, отвечает уверенно (смарт в конце поста). Нашёл утилиту f3 , быстрый f3probe даже сказал что всё ок. f3write, оказалось, хочет писать файлы поверх ФС (он генерит сиквенс файлами по 1ГБ, которые потом должен провалидировать f3read). Сначала я подумал отформатировать диск с ext4/xfs, всё равно разово, а потом решил не изменять себе и бахнул ZFS.

За ночь (часов 10) nvme смог принять всего 160ГБ данных (скорее всего итоговый объём около 240ГБ, т.к. я успел один раз перезапустить запись после 60+ГБ), первые 50ГБ влетели на скорости 1ГиБ/сек, а вот на утро я увидел скорость записи в 2МиБ/сек и моргающий красный светодиод на самом nvme... В целом судьба диска к этому моменту стала понятна, я пошёл оформлять возврат.

Параллельно запустил zpool scrub, и тут меня ZFS в очередной раз обрадовал:
root@ubuntu:~# zpool status
pool: testpool
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-8A
scan: scrub in progress since Fri Sep 26 08:08:22 2025
163G / 163G scanned, 145G / 163G issued at 16.0M/s
0B repaired, 89.32% done, 00:18:32 to go
config:

NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
nvme0n1 ONLINE 0 0 54.6K

errors: 27754 data errors, use '-v' for a list


Родимые чексуммы заорали о проблемах, и это скраб ещё не кончился!

Диск представляется как Non-Volatile memory controller: Realtek Semiconductor Co., Ltd. RTS5765DL NVMe SSD Controller (DRAM-less) (rev 01).
Интересные моменты из smartctl для интересующихся уже после тестов, диск считает себя живым (но верить ему, конечно, не стоит):
=== START OF INFORMATION SECTION ===
Model Number: SSD 4TB
Serial Number: 000166
Firmware Version: VC2S038D
PCI Vendor/Subsystem ID: 0x10ec
IEEE OUI Identifier: 0x00e04c
Controller ID: 1
NVMe Version: 1.4
Number of Namespaces: 1
Namespace 1 Size/Capacity: 4,000,787,030,016 [4.00 TB]
Namespace 1 Formatted LBA Size: 512
Namespace 1 IEEE EUI-64: 00e04c 11be335053
...
Supported Power States
St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat
0 + 8.00W - - 0 0 0 0 0 0
1 + 4.00W - - 1 1 1 1 0 0
2 + 3.00W - - 2 2 2 2 0 0
3 - 0.0300W - - 3 3 3 3 5000 10000
4 - 0.0050W - - 4 4 4 4 54000 45000

Supported LBA Sizes (NSID 0x1)
Id Fmt Data Metadt Rel_Perf
0 + 512 0 0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 40 Celsius
Available Spare: 100%
Available Spare Threshold: 32%
Percentage Used: 0%
Data Units Read: 70,047 [35.8 GB]
Data Units Written: 695,379 [356 GB]
Host Read Commands: 283,235
Host Write Commands: 4,106,990
Controller Busy Time: 0
Power Cycles: 3
Power On Hours: 11
Unsafe Shutdowns: 2
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0

Error Information (NVMe Log 0x01, 8 of 8 entries)
No Errors Logged

Read Self-test Log failed: Invalid Field in Command (0x002)


#баловство #storage
🔥9🤡3😁2🌚2🙈1
ЦОДы цодами, а в комментах к посту правильно зарубились - сгореть/получить метеорит в лоб может любой ЦОД, что "офисный", что промышленный. Нужны минимум бекапы/async кластеры растянутые меж-ЦОД, но вкуснее смотрятся геораспределённые хранилища (БД/S3).

В общем, очередной срач про "а вы уже делаете бекапы?" вам в ленту.
👍2🌚1👀1
Forwarded from Логово асоциальной твари (Aleksey Uchakin)
Про пожар в южнокорейском NIRS (Национальной службе информационных ресурсов) думаю все уже прочитали.
Классика: литий-ионные батареи, пожар, бэкапы в соседней серверной, "что могло пойти не так".

Но самое забавное в другом. Не далее как на прошлой неделе на #dcsummit уважаемый "независимый эксперт" ругал коммерческие ЦОДы за дороговизну. Мол, есть у него одна знакомая компания, которая у себя в офисе "поставила в серверной два бытовых кондиционера, четыре стойки и ИБП - и таких заказчиков будет больше, потому что кое кто зажрался" (с).

Как вы думаете, где будет лучше организована система пожаротушения - в серверной в БЦ или в хорошем коммерческом ЦОДе? А пожарную экспертизу этот БЦ когда последний раз проходил? А что там с огнестойкостью материалов стен и перекрытий?
ЦОДы, конечно, тоже разные бывают, но с пожбезом там всё-таки дела обычно получше, да и гермозоны не зря придумали.

Храните деньги в сберегательной кассе (если, конечно же, они у вас есть), серверы с важными данными - в ЦОДе, а бэкапы - отдельно от прода!

@snakeslair #thereisnoclouds
👌3👨‍💻1🤝1
Увидел в чате уважаемого человека пост про OpenZL, и не смог пройти мимо, т.к. понеслось - уже в ZFS начали его просить :)

Да, это ещё один компрессор, но с нюансом. Yann Collet там тоже отметился, так что давайте и сравним новинку с его произведениями искусства:
- LZ4 - максимально быстро, всё в угоду скорости, даже несжимаемое предпочитает по эвристике пропустить и не пытаться пожать (итого скорость ~memcpy на несжимаемом)*
- ZSTD - очень гибкий, быстрее gzip, эффективнее gzip, на малых режимах сжатия наследует многое от LZ4*. Одна из фишек - сжатие по словарю - т.е. если ваши данные ну очень типовые - составляете словарь наиболее частых вхождений и получаете легко коэффициент х20. Нюанс - словарь надо таскать с собой, что сильно уменьшает удобство.
- новинка OpenZL - читерит и требует знания про ваши структуры данных, но зато может дать огромный выигрыш. Проще всего объяснить на их же примере и вспомнить почему time-series DB умеют ну очень эффективно хранить последовательности: если вы храните упорядоченные числа, то эффективнее всего хранить их... дельту! Ключевое отличие от словарей - что для разжатия вам не нужны дополнительные артефакты.

Новое слово для сжатия известных структур/метаданных?

* на самом деле, грань между LZ4 и ZSTD сильно размылась, у каждого уже есть разные режимы, позволяющие сильно превратить одно в другое
3🤩3👀2🤔1🍌1
Yet another senior pomidor (by @gmelikov)
Увидел в чате уважаемого человека пост про OpenZL, и не смог пройти мимо, т.к. понеслось - уже в ZFS начали его просить :) Да, это ещё один компрессор, но с нюансом. Yann Collet там тоже отметился, так что давайте и сравним новинку с его произведениями искусства:…
Уважаемый человек побудил меня потратить всё время в сапсане на чтение paper'а об openZL, и я прямо насладился!

Идея - огонь:
- SDDL (язык для описания структуры данных) для парсинга на первом этапе, потом transform (промежуточный кодек), потом графы и итоговые кодеки в них.
- Кодеком может являться любая функция которая что-то сделает с данными (тот же zstd). Элемент графа - тоже кодек, но умеющий построить связь с другими кодеками передающий данные как есть.
- Работаем не с байтами, а со структурированными данными. При чём in-out стримов много! Полезный бонус - данные перед сжатием теперь можно не сериализовывать, а как есть отдать на соответствующий кодек для сжатия.
- Упор на практичность, универсальный декодер (главное чтоб имел нужные кодеки). И это гипер важно - основная проблема сделать новый алгоритм компрессии - в распространении его декомпрессора. OpenZL позволит делать максимально эффективные кодеки, используя один и тот же декодер!

Для меня возможность эффективнее сжать в данном случае выглядит скорее как бонус, а не основная фишка openzl. По сути это новый фреймворк для сжатия, киллер-фича - универсальный декодер без словарей.

Для простоты разберём пример:
csv "ФИО,рост,вес"
- парсим и выделяем каждый столбец отдельно
- теперь, например, столбец "рост" можно преобразовать из ascii/utf в int, может даже - отсортировать, если отсортировали - писать дельту а не значение, и всё это подать в специализированный кодек field_lz
- поле "ФИО" проще воспринимать как текст, тут можно использовать базовый zstd (для примера)
- итог - граф операций над данными, для декомпрессии его надо просто проиграть в обратную сторону (т.е. в итоговом артефакте есть информация о порядке декомпрессии известными декомпрессору кодеками)


А как вы упарываетесь в пути?
👾21👨‍💻1👀1
Кстати, тут python 3.14 релизнулся, все носятся с перформансом и тредами. Это конечно классно, но в среднем для вас разница будет на уровне погрешности.

Лично я очень ждал (и наконец - дождался):
- zstd из коробки. Король компрессоров in da house
- uuidv7 из коробки. Теперь индексы по uuid будут последовательны и эффективны, особенно это оценит mysql и подобные с gap lock на primary key
🤓4👻3🗿2👨‍💻1🤪1
Коллеги проводят исследование с целью понять, что реально происходит внутри ИТ-команд и какие закономерности можно в этом увидеть.

Уже нащупаны интересные корреляции:
– между скоростью пайплайнов и качеством code review,
– между алертингом и стабильностью релизов,
– между ролями в команде и удовлетворённостью релизным процессом.

Но нужно больше данных, чтобы отделить закономерности от шума.

Пройти анкету можно за 10 минут. Её же можно использовать как мини-чек-лист для самооценки зрелости инженерной культуры.

Принять участие: https://forms.gle/NszR7VDuXL9sBbVAA

Результаты обязательно расскажу, коллеги поделятся.


Чем быстрее CI/CD - чем больше рисков "тестирования на проде"?
2🤔1👌1🤝1
В этот раз делать отдельный обзор на аварию даже как-то неудобно, DNS всё же :)

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

А будущее всё также за cloud-agnostic (да-да, on-prem это тоже облако нынче) и #NoOps .
👨‍💻2👀2👍1👌1
#машины_aws

Пожалуй, лучший инцидент, что я когда либо видел.

Если вкратце:
1. Управление DNS записями для DynamoDB отвалилось, в итоге:
2. Эндпоинты DynamoDB (в том числе для внутреннего пользования) отвалились, в итоге:
3. Storage backend, которым выступала DynamoDB, одного из компонентов control plane EC2 отвалился, в итоге:
4. Отвалился NLB, который не мог следить за событиями EC2.

Очень радует, что AWS решил минимальными усилиями решить конкретную проблему, а не сделать отдельный внутренний Kinesis как тогда с инцидентом CloudWatch и Cognito.


Да и не пользуйтесь us-east-1, сколько еще повторять. Новые фичи раньше всех того не стоят.
🌚2🤝2💊1
В сети можно найти интересные посты про "переволновавшиеся" LLMки, как они могут проигнорировать инструкции об безысходности и всё же дропнуть вам базу на проде.

По случаю вспомнил замечательный рассказ Станислава Лема - Ананке. 1971 год, короткий рассказ, Марс, научная фантастика, как нынче модно это называть - про машинное обучение.

Первый раз я прочитал это произведение лет 5 назад, и подумал, что этот sci-fi уже про "несвершившееся будущее" и сильно так устарел (хотя даже тогда он меня покорил той самой богиней Ананке). Но в этом году, да ещё с такими историями про LLM, оказывается что мы всё таки дожили до этого будущего, про которое когда-то подумал Лем :) Вот такие они - грёзы по несбывшемуся будущему.

#books

А ещё мне очень понравилась суть богини Ананке из древнегреческой мифологии - "неизбежность, судьба, нужда, необходимость". Всё как в жизни - если какой-то сценарий вероятен, то на масштабах он неизбежен. Например - ваш сервер когда-то гарантированно откажет самым неожиданным образом.
2🎃2🤔1😱1🍌1💅1
Forwarded from samdark blog ☕️ (Alexander Makarov) (Alexander Makarov)
Инженерная зрелость. Исследование практик и триггеров

Итак, исследование завершилось. Вот что вышло.

https://habr.com/ru/articles/963202/
🤔2👌2🌚2👍1👀1
Забавно было буквально вчера в некоторых чатах на проблему DDoS'а ботами-краулерами читать "да просто юзай CF!"

Тем временем сегодня Cloudflare отдыхает... Ждём постпортема.
❤‍🔥4🤡3🐳3🌭1
Forwarded from Логово асоциальной твари (Aleksey Uchakin)
Cloudflare оперативно выкатил весьма детальный постмортем, за что им большое спасибо.
Про Rust уже все поржали, но я бы хотел обратить внимание на другое.

На первый взгляд, ситуация выглядит странно - просто выкатили обновление на всю сеть целиком. Ни тебе тестов, ни blue/green и cherry picking, ни даже внятной системы отката изменений. И эти люди борются звание дома высокой культуры быта! (с)

С другой стороны - глобальная инфраструктура из сотен (если не тысяч) узлов, где изменения нужно применять очень быстро, потому что это вопрос безопасноти клиентов, да и самого CF. Добавьте сюда чудовищную сложность - слои легаси, сотни разных сервисов, взаимосвязи между которыми до конца не знает вообще никто, а зависимость может прорастать через два-три слоя абстракций в обе стороны.

Станет ли у Cloudflare меньше клиентов? Сомневаюсь. Более того, на ПФ в понедельник я слышал мнение, что мелкий бизнес а России даже уходит с отечественных CDN на CF (потому что до конца оранжевого гиганта блокировать пока не собираются, а "бесплатный" CDN и DDoS-защита никуда не исчезли). Про зарубеж я вообще молчу.

Так и живём

#thereisnoclouds @snakeslair
🤔5🍾2😁1👀1
Логово асоциальной твари
Cloudflare оперативно выкатил весьма детальный постмортем, за что им большое спасибо. Про Rust уже все поржали, но я бы хотел обратить внимание на другое. На первый взгляд, ситуация выглядит странно - просто выкатили обновление на всю сеть целиком. Ни тебе…
К вопросу о скорости починки cf, коммент от их CEO (link):
Because we initially thought it was an attack. And then when we figured it out we didn’t have a way to insert a good file into the queue. And then we needed to reboot processes on (a lot) of machines worldwide to get them to flush their bad files.


Все мы люди.
👌52🤷‍♂1👀1
Про CPU steal-time

К своему чудовищному стыду я ещё недавно совершенно не знал, что гипервизоры с хостов прокидывают в виртуалку специальную метрику steal-time, и она забирается в промстэк вместе с system/user/idle и прочими стандартным node_exporter-ом.

CPU Steal-time буквально “украденное время”. Проц выдали не тебе, а соседу. Про эту метрику мне сказал коллега по ПК Хайлоада, Георгий Меликов, за что ему большое спасибо. Я проверил, что протягивается, и забыл.

Не прошло и 2х недель, вчера участник тренинга по перфомансу показывает жутко зашумленные графики стрельб, очень отдаленно напоминающие правильные, и говорит: я уже всё перепробовал, WTF. Замечаю большой steal time (почти равен сумме user+system) и пишу в саппорт, так и так, похоже, шумный сосед / перегруженный хост.

И да, саппорт подтверждает, виртуалку переносят, 100К RPS наливаются. Клауды такие клауды 🙂

👍 зато девопс пайплайн тераформ, а не вот это ваше всё
🔥 ну, за онпрем!
🔥73🤩1🤡1
3 декабря в Мск будет OS DevConf 25 - "Конференция про разработку системного ПО, ядра Linux и open source".

Почему приглашаю:
- мы с коллегой впервые анонсим наш новый SDS - RawStor. Расскажем почему решили писать ещё один сторадж, и ответим, почему в нём "client всегда прав". (всё в опенсорсе)
- будет ещё несколько докладов про стораджи: SPDK, Lustre (очень жду этого доклада, к примеру, контрибьюторы приедут!)
- ну и много других докладов рядом с Linux

Увидимся!
🔥8👍2🤩2🤝2
И продолжаем приглашения на новогодние тусовки :) Приходите - увидимся!

InfraDev Community приглашает на Cloud Fail ((Over)): специальный новогодний выпуск InfraDev Meetup.

Без фейлов не обходится ни один крутой продукт, ну а истории успеха — «за ширмой» оказываются историями поисков и ошибок с удачным концом.
Поговорим про то, какие проблемы возникают под капотом инфраструктурных продуктов, как они решаются и какие уроки из этого получаются.

Спикеры:
☁️Василий Степанов, руководитель направления инфраструктурных сервисов, VK Cloud, VK Tech.
☁️Константин Крамлих, руководитель поднаправления сетевых продуктов, Yandex.Cloud.
☁️Секретный доклад: подробности добавим позднее.

Подробнее о докладах читайте на странице мероприятия.

Когда: 18 декабря, с 18:00 до 23:59 
Где: Москва, Ленинградский пр., 70, офис VK Tech, БЦ «Алкон» (количество мест ограничено).
Приходите на встречу или участвуйте онлайн.

Зарегистрироваться.
👍5🔥1👌1