标签: #linux
关于 GPU、LLM、MLOps、Kubernetes 以及心态的文章 · 22 篇
慢的不是 CPU,是系统调用路径 —— 把手机做成服务器学到的东西
本文借一个把 CMF Phone 1 变成个人基础设施服务器的案例,梳理 Linux 兼容层的真实代价究竟落在哪里。作者刷 postmarketOS 失败之后保留了原厂 Android,把 Termux 当作宿主控制平面;一般的 Web 服务用 PRoot 就够了,唯独基于 Chromium 的负载因为用户态转换层而够不着那些闲着的 CPU。解法不是改代码,而是改执行路径 —— root 之后进入真正的 chroot,用上原生系统调用。
2026-08-09 · 14 分钟阅读 #linux#termux#chroot#proot#self-hostingdig 能通但应用失败 — 先从 DNS 解析顺序查起
dig 能正常拿到答案而唯独应用找不到名字,这不是 bug 而是结构使然。因为 dig 和 nslookup 根本不经过 /etc/hosts 和 nsswitch.conf,而是直接向解析器发起查询。本文沿着应用真正走过的路径,从 nsswitch.conf 一路追到 systemd-resolved 的存根解析器,并整理如何用 getent 和 resolvectl 复现同一条路径。文中还会讲清 Kubernetes 里 ndots
2026-07-26 · 17 分钟阅读 #network#dns#linux#kubernetes#troubleshootingOOM Killer 杀掉进程之后 — 从解读 dmesg 日志到区分 cgroup OOM
进程没有留下任何日志就消失了,退出码是 137。本文整理如何逐行阅读内核 OOM Killer 留下的 dmesg 报告、badness 分数是怎么算出来的以及为什么被杀的往往不是最大的那个进程,还有如何仅凭日志区分系统全局 OOM 和 cgroup v2 memory.max 引发的容器 OOM。同时覆盖 overcommitmemory 0/1/2 到底改变了什么、"有 swap 就不会 OOM"这个误解为什么是错的,以及如何用 e
2026-07-26 · 22 分钟阅读 #linux#memory#oom#cgroups#kubernetesConnection refused 与 timeout 的区别 — 在 TCP 层面收敛原因
连接不上时终端返回的消息大致分为两类。Connection refused 意味着对端回了一个 RST,timeout 则意味着发出去的 SYN 没有得到任何应答。这一行之差几乎就决定了问题出在进程还是出在路径。本文整理了如何用 tcpdump 直接确认 SYN 与 RST、如何用 SYN 重传间隔提前算出超时长度、有监听却依然 timeout 的 accept 队列溢出,以及容器里绑定到回环地址所引发的典型事故。
2026-07-26 · 16 分钟阅读 #network#tcp#troubleshooting#linux#kubernetesCPU steal time 与限流 — 如何区分 top 的 st、可突发型积分和 CFS 配额
CPU 使用率只有 40%,p99 延迟却在飙升,top 的 st 列显示 20%。这些看起来相似的症状背后,藏着三个完全不同的原因:Hypervisor 不把物理 CPU 交给 vCPU 的 CPU steal time、可突发型实例的 CPU 积分耗尽,以及在 top 里根本看不到的 cgroup CFS 配额限流。本文梳理 st 从百分之几开始算问题、怎么读 nrthrottled 和 throttledusec,以及"移除 Ku
2026-07-26 · 23 分钟阅读 #linux#cpu#cgroups#kubernetes#cloud为什么平均负载不是 CPU 使用率 — load average 24 而 CPU 只有 30% 的时候
本文讨论这样一种情况:uptime 的 load average 已经超过 24,而 top 里的 CPU 却连 30% 都不到。Linux 的平均负载与其他 Unix 不同,它不仅统计处于运行等待 (R) 的任务,还把 D 状态 (uninterruptible sleep) 的任务一并计入,因此仅仅是磁盘或 NFS 等待就足以让这个数字飙升。文章梳理三个数字如何由 5 秒采样与指数移动平均生成、按核心数相除的习惯在哪里失效、负载高但
2026-07-26 · 17 分钟阅读 #linux#performance#load-average#psi#troubleshootingToo many open files 彻底解决 — 为什么调高 ulimit 也没用
服务器日志里出现 accept4 failed (24: Too many open files),把 ulimit -n 调高之后依然如故。这个症状背后是三个彼此独立的上限:每个进程各自的 RLIMITNOFILE、系统全局的 fs.file-max,以及 systemd 服务的 LimitNOFILE 会完全忽略 shell 里的 ulimit 设置这一事实。本文梳理如何用 /proc/PID/limits 确认真正生效的值、如何把
2026-07-26 · 19 分钟阅读 #linux#systemd#file-descriptor#troubleshooting#containers明明还有空间却报 No space left on device — inode 耗尽、已删除但仍被打开的文件、保留块
df 显示还有空闲空间,却连一个文件都创建不了,直接返回 ENOSPC。原因几乎总是五种之一:inode 耗尽、已删除但仍被进程打开的文件、ext4 的保留块、被另一个文件系统挂载遮蔽而看不见的文件,以及容器的 overlay 上限。本文整理如何用 df -i、lsof +L1、tune2fs 和绑定挂载逐一确认并解决,以及 inotify 报出同样错误文字的陷阱。
2026-07-26 · 21 分钟阅读 #linux#filesystem#ext4#troubleshooting#storagesystemd v261 — PID 1 迎来分阶段发布、云 IMDS 的收编,以及 dlopen 迁移的收官
2026 年 6 月 19 日发布的 systemd v261,新增了只让单元在 fleet 指定比例上启用的 ConditionFraction=、用机器标签划分环的 ConditionMachineTag=,以及把 9 个公有云的实例元数据拉取为系统 credential 的全新 IMDS 子系统,并完成了把除 libc 之外的所有外部库链接都改为 dlopen() 的多年工作。本文直接阅读了项目的 raw NEWS 文件和 v26
2026-07-17 · 25 分钟阅读 #linux#systemd#devops#cloud#sysadminWayland 色彩管理是哪个版本发布的 — 一份耗时五年的协议部署编年史,以及 2026 年的 X 服务器
Wayland 的色彩管理与 HDR 协议 color-management-v1,是一场耗时五年的标准化成果 — 一份 2020 年 1 月发起的合并请求,直到 2025 年 2 月才被合并。本文不依赖新闻报道,而是用仓库记录把发布时间点钉死 — Mutter 在 GNOME 48(2025 年 3 月)实现了正式协议,在 49 实现了 color-representation,在 50(2026 年 3 月)实现了协议 v2 与 H
2026-07-17 · 22 分钟阅读 #linux#wayland#hdr#color-management#x11Podman 6.0 — 移除 slirp4netns、CNI 和 cgroups v1;macOS 默认 provider 换成了 libkrun
2026 年 6 月 24 日,距 Podman 5.0 发布 27 个月后的大版本 6.0.0 发布了。slirp4netns、CNI、iptables、cgroups v1、BoltDB 的支持被一次性移除,Intel Mac 和 Windows 10 的支持也被砍掉,macOS 的默认 machine provider 从 applehv 换成了 libkrun。随着 CNCF 迁移,GitHub 组织和 Go 导入路径也发生了变
2026-07-17 · 20 分钟阅读 #container#podman#docker#linux#macosTalos Linux 1.13 — 一个没有 shell 的不可变操作系统,是如何走到发布调试 shell 这一步的
专为 Kubernetes 打造的不可变操作系统 Talos Linux,其 1.13 版本已于 2026 年 4 月 27 日发布。此次发布带来了用 Clang/ThinLTO 构建的内核、可复现的磁盘镜像、机器级别的容器镜像签名验证,以及最具象征意义的功能 — 为一个既没有 shell 也没有 SSH 的操作系统,提供官方调试容器(talosctl debug)。本文以 1.13 的实际发行说明和官方文档为依据,梳理不可变操作系统到
2026-07-17 · 23 分钟阅读 #linux#kubernetes#talos#immutable-infrastructure#devopssched_ext 子调度器 — 内核 7.1 中只到了一半的 per-cgroup 调度器
Linux 7.1(2026年6月14日发布)引入了 schedext 的 cgroup 子调度器支持。目标很清楚 — 可以在 cgroup 树的任意位置挂载 BPF 调度器,父调度器动态地把 CPU 分配给子级,让每个容器或应用域都能跑一套适合自己工作负载的调度策略。动机是 cpuset 硬分区给不了的那种灵活性,对运行多租户机器的人来说是等了很久的东西。不过 7.1 里真正落地的,只是以 dispatch 路径为核心的骨架,照搬 L
2026-07-16 · 20 分钟阅读 #linux#kernel#scheduler#cgroups#bpfeBPF Verifier 只告诉你它在哪儿停下 — 复现 235 例拒绝后测出的诊断落差
用过 eBPF 的人都经历过这种事。Verifier 拒绝了你的程序,而错误信息指向的那一行看起来完全没有问题。2026 年 7 月发表的一篇论文首次把这种挫败感量化了出来。作者从 Stack Overflow、GitHub issue、修复提交和内核自测中收集了 936 个候选案例,在一套固定工具链 — 内核 6.15.11 + clang 18 — 上复现,分析了实际被拒绝的 235 例。结论是 — 47% 的拒绝只返回一个 EIN
2026-07-16 · 29 分钟阅读 #ebpf#linux#kernel#debugging#developer-experiencecontainerd 2.3 的 EROFS 原生层 — 去掉解包,换来了什么
2026年4月30日发布的 containerd 2.3,打开了一条从镜像仓库直接拉取 EROFS 文件系统镜像并挂载的路径。不需要解开 tar,整个解包步骤就此消失,取而代之的只剩一次 blob 拷贝。但这并不是大家期待已久的懒加载(lazy pull) — containerd 自己的 seekable-erofs PR 明确写着"写了 chunk table 但没有消费它",镜像整体仍然要提前拉取这一事实没有变。代价也很明确。放弃
2026-07-16 · 26 分钟阅读 #container#containerd#oci#storage#linuxbcachefs 摘掉纠删码 experimental 标签的故事 — 以及这到底意味着什么
2025 年 9 月 29 日,Linus Torvalds 用一次提交从内核里删掉了 117,483 行 bcachefs 代码,bcachefs 从此变成了像 ZFS 一样以 DKMS 模块形式分发的文件系统。戏剧到此结束,2026 年真正的新闻另有其事 — bcachefs 的纠删码(相当于 RAID5/6 的功能)摘掉了 experimental 标签。可网上流传着一句转述这件事的话,日期、版本、对象全都错了。实际上是 v1.3
2026-07-16 · 25 分钟阅读 #linux#kernel#filesystem#bcachefs#storageDocker 到 Podman — 无守护进程容器引擎迁移完全指南
Podman 以无守护进程(fork-exec)方式运行、且默认 rootless,这一点从架构哲学上就与 Docker 不同。本文梳理了内部工作原理(conmon·crun)、配置文件的位置与含义、使用 GPU 所需的 CDI 设置、原样使用 compose.yaml 的两种方法(podman 套接字 + docker compose vs podman-compose)、SELinux 卷标签之类的迁移陷阱,以及版本与社区的比较 —
2026-07-08 · 13 分钟阅读 #docker#podman#containers#devops#linuxhtop 与 top 完全解剖 — 读懂每一个数字
在 Linux 上打开 htop 或 top,扑面而来的是一大堆数字。VIRT、RES、SHR 三者的区别,进程状态字母的含义,为什么负载均值(load average)不等于 CPU 使用率,仪表条颜色代表什么,以及僵尸进程究竟是怎么回事 — 本文基于最近再度登上 Hacker News 榜首的一篇名解说,把这些字段逐一拆开讲清楚。
2026-07-05 · 11 分钟阅读 #linux#performance#htop#sysadmineBPF 正在吞噬可观测性
在内核中安全运行沙箱化程序的想法,正在颠覆可观测性的格局。用 kprobe、uprobe、tracepoint、XDP 在任意位置挂钩,verifier 保证安全,不改一行应用代码就能追踪。本文从实务角度梳理 Cilium、Falco、Pixie、bpftrace 为什么能取代 sidecar,以及 eBPF 做不到的事情是什么。
2026-06-11 · 20 分钟阅读 #ebpf#observability#linux#kernel操作系统的现代理解 — io_uring、cgroups/namespaces、eBPF、NUMA、GPU UVM、EEVDF、Zero-Copy 完全指南(2025)
epoll 的接班人 iouring,造就了 Docker 的 cgroups + namespaces,把代码安全注入内核的 eBPF,NUMA 带来的隐藏成本,GPU 驱动与 UVM,2024 年进入 Linux 的 EEVDF 调度器,Zero-Copy + RDMA,以及 WSL2。把应用下面 OS 所做的一切,用现代视角一次梳理清楚。
2026-04-15 · 16 分钟阅读 #operating-systems#linux#io-uring#cgroups#namespaces