TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #884 · 5.10

Роскосмос пару дней назад опубликовал отчёт о том, почему упала "Луна-25". Там конечно канцелярит, но можно примерно понять, что двигатель коррекции получил неверные данные от акселерометра: из-за возможного попадания в один массив данных команд с различными приоритетами их исполнения прибором Это очень похоже на программную ошибку, а это моя сфера, и я решил над ситуацией поразмыслить. Хейтеры сразу стали строчить комментарии в стиле "Ололо, наняли каких-то идиотов, которые простейшие тесты не провели". Тут обычно справедливо вспоминают аварию с европейской ракетой Ариан-5 в 1996 году. Там буквально из-за пары строчек кода в результате неправильного приведения числовых типов ракета за 7 млрд баксов развалилась на куски в воздухе. Бывает. Что касается Роскосмоса, при всей его сомнительной репутации, объяснение "Дураки не провели тесты" звучит лично для меня неправдоподобно. На мой личный взгляд возможны два варианта: 1. Если в описании ошибки слово "приоритет" обозначает какой-то признак внутри объекта команды, значит, на входе в приёмный модуль эти команды не были отфильтрованы. Выглядит как грубая ошибка, целый логический блок упущен. Вряд ли этот блок вообще не написан, скорее всего он не выполнился. Такое бывает, если в тестовой среде есть какое-то условие, которого нет в рабочей, и именно это условие отвечает за выполнение участка кода. Сталкивался с таким миллион раз. Самое дикое из последнего: код парсит эксель-таблицу с числами. Разработчик написал, запустил проверил, прогнал тесты, всё ок. Отправляем в прод — все числа будто бы рандомно меняются на другие. Запускаем снова — у всех разработчиков функционирует нормально, а в проде на сервере нет. Таблица одна и та же. Можете подумать, почему так. Ответ: у разработчиков стоит русская локаль и десятичный разделитесь это запятая, а на проде в докере точка. При парсинге на проде запятая уже интерпретируется как разделитель тысячных разрядов. 2. Куда вероятнее, что слово "приоритет" в описании ошибки обозначает время, а, значит, список команд просто не был отсортирован, и в обработчик уже после актуальных значений попали какие-нибудь начальные нулевые данные, сбившие логику. По косвенному описанию проблемы очень похоже именно на это. Значит, на тестах всегда порядок возникновения команд соответствовал порядку их прихода, а в реальности перестал соответствовать. Вообще, работать с железом очень сложно. Какую-нибудь схемку заглючило от холода, она задержала ответ от датчика на миллисекунду, и всё. Никто не знал, что такая проблема возможна, пока она не возникла. Мне рассказывали о таком случае: юзер логинится на сайт и иногда логин проходит, а иногда нет. Логин и пароль те же самые. Просто в случайные моменты времени ему возвращают токен авторизации, а в другие моменты времени ошибку 403. Никакой закономерности нет вообще. Нет зависимости от времени суток и даты. Сервер точно работает стабильно и не падает все 100% времени. Почему так может быть? Ответ: у сервиса авторизации два инстанса, перед которыми балансировщик нагрузки. В одном инстансе данные для авторизации есть, в другом нет. Балансировщик при примерно одинаковой нагрузке включает просто случайный выбор между ними. В общем, программисты иногда допускают такие косяки, что какая-то мелочь может привести к серьёзной аварии. Это я вам говорю как программист, который пишет для атомных станций :) #dev

Hashtags

Резултати

Намерени 7 подобни публикации

Търсене: #bpf

当前筛选 #bpf清除筛选
AIGC

@aigcrubbish · Post #269 · 23.03.2026 г., 16:49

[$] Tracking when BPF programs may sleep BPF 程序可以在可休眠和不可休眠(原子)上下文中运行。目前,可休眠的 BPF 程序不允许进入原子上下文。Puranjay Mohan 提出了一个新的补丁集,旨在改变这一限制。该补丁集允许在可休眠上下文中调用的 BPF 程序临时获取锁,从而使程序过渡到原子上下文。然而,BPF 维护者 Alexei Starovoitov 对部分实现提出了异议。因此,该补丁能否被接受,取决于 Mohan 是否愿意并有能力解决这些问题。 原文链接:https://lwn.net/Articles/1062868/ #Linux内核#BPF#内核开发 #AIGC Read more

AIGC

@aigcrubbish · Post #217 · 26.02.2026 г., 01:38

[$] No hardware memory isolation for BPF programs BPF 程序目前缺乏硬件内存隔离。Yeoreum Yun 在 2 月 12 日提出了一项改进建议,希望利用内存保护密钥来防止 BPF 程序未经授权访问内存。他本想在 5 月的 Linux 存储、文件系统、内存管理和 BPF 峰会上讨论此议题,但由于缺乏关注,这不太可能实现。Yun 还有一个实现了部分提议的补丁集,但尚未在邮件列表中分享。以目前的形式,他的提议似乎不太可能被接受。不过,内核过去在经历大量讨论后,也曾添加过基于硬件的加固选项。 原文链接:https://lwn.net/Articles/1059218/ #Linux#内核安全#BPF#内存管理 #AIGC Read more

AIGC

@aigcrubbish · Post #108 · 19.12.2025 г., 16:03

[$] A visualizer for BPF program state BPF 验证器非常复杂,它需要检查 BPF 程序执行可能经过的每一条路径。其判断程序是否安全是基于程序的整个生命周期,而非简单的局部因素,这意味着验证失败的原因并不总是显而易见的。 在 2025 年东京 Linux Plumbers 大会上,Ihor Solodrai 和 Jordan Rome 介绍了他们正在构建的 **BPF 验证器可视化工具**。该工具旨在让诊断验证失败的过程变得更加容易。 通过这个可视化工具,开发者可以更直观地理解验证器的内部状态和决策过程,从而更快地定位和修复 BPF 程序中的问题。 原文链接:https://lwn.net/Articles/1050585/ 相关资源:演示文稿 | 项目仓库 #Linux#BPF#内核开发#调试工具 #AIGC Read more

AIGC

@aigcrubbish · Post #158 · 27.01.2026 г., 17:06

[$] Implicit arguments for BPF kfuncs Linux 内核的 kfunc 机制允许 BPF 程序直接调用内核函数。目前内核中有超过 300 个 kfunc,功能涵盖字符串处理(如 `bpf_strnlen()`)到自定义调度器(如 `scx_bpf_kick_cpu()`)等。 有时,这些 kfunc 需要访问 BPF 程序无法直接获取的上下文信息,因此无法通过参数传递。Ihor Solodrai 提交的“隐式参数”补丁集旨在解决这个问题,它允许 kfunc 隐式地接收额外的上下文参数。 原文链接:https://lwn.net/Articles/1055559/ #Linux#内核#BPF#kfunc #AIGC Read more

AIGC

@aigcrubbish · Post #257 · 19.03.2026 г., 01:29

[$] BPF comes to io_uring at last Linux 内核的异步 I/O 接口 io_uring 通过两个共享环形缓冲区与用户空间通信:提交队列用于发送请求,完成队列则存放结果。尽管共享内存减少了大量开销,但内核仍需切换至用户空间以处理完成事件并提交后续工作,这仍会产生开销。 Pavel Begunkov 提交的补丁集旨在最小化这一开销。它允许开发者使用 BPF 程序扩展 io_uring 的事件循环,使程序能直接响应完成事件并提交后续工作项,无需切换至用户空间。该补丁集已开发很长时间,现已被内核社区接受。 这一改进将进一步提升 io_uring 的高性能 I/O 处理能力。 原文链接:https://lwn.net/Articles/1062286/ #Linux#内核#io_uring#BPF#性能优化 #AIGC Read more

AIGC

@aigcrubbish · Post #166 · 29.01.2026 г., 16:39

[$] Sub-schedulers for sched_ext 可扩展调度类(sched_ext)允许安装由 BPF 程序构建的自定义 CPU 调度器。它被合并到 6.12 内核版本中,使内核摆脱了此前“一个调度器适应所有场景”的模式;现在任何系统都可以拥有针对其工作负载优化的专属调度器。然而,在单个机器内部,目前仍然是“一个调度器适应所有场景”:整个系统只能加载一个调度器。Tejun Heo 提出的 sched_ext 子调度器补丁系列旨在改变这一状况,允许在单个系统上运行多个 CPU 调度器。 原文链接:https://lwn.net/Articles/1056014/ #Linux#内核#调度器#BPF#sched_ext #AIGC Read more

GitHub Trends

@githubtrending · Post #15415 · 15.01.2026 г., 12:30

#go#bpf#cncf#cni#containers#ebpf#k8s#kernel#kubernetes#kubernetes_networking#loadbalancing#monitoring#networking#observability#security#troubleshooting#xdp Cilium is an eBPF-based tool for Kubernetes that delivers fast networking, deep visibility, and strong security. It creates simple Layer 3 networks across clusters, handles load balancing to replace kube-proxy, enforces identity-based policies from L3 to L7 (like HTTP or DNS rules), supports service mesh with encryption, and offers Hubble for real-time traffic monitoring. Stable versions like v1.18.6 run on AMD64/AArch64. You gain scalable performance, easier policy management without IP hassles, better troubleshooting, and higher efficiency for large cloud-native apps, cutting costs and boosting reliability. https://github.com/cilium/cilium