2026.06.29 —— 今日 9 則
TODAY'S THREAD 今天的主線是「成本藏在你沒在看的那一層」——日誌只讀用得到的欄、rseq 用偵測搶佔取代鎖、隨機存取比循序慢將近 12 倍、HTTP/3 砍的是長尾延遲,而一個 hash 只證明 bytes、不證明來源。
邊緣端做投機解碼,何時才划算
一篇 arXiv 論文拆解 edge-cloud speculative decoding:草稿模型放邊緣、目標模型在雲端驗證,但 WAN 的往返會吃掉 co-located speculative decoding 原本 1.5 到 3 倍的加速。論文的結論很反直覺——分散式做法的價值不在單一請求的延遲,而在多租戶吞吐,能多撐約 (1 + γ·t_d/t_v) 倍的並行客戶端。要不要把 draft 推到邊緣,得先看你優化的是延遲還是伺服器容量。
NanoEuler:純 C/CUDA 手刻 GPT-2
NanoEuler 用純 C 與 CUDA 從零實作一個 GPT-2 規模的模型——約 1.16 億參數、16 層、手寫 forward 與 backward,連 FlashAttention kernel 都自己刻,整套只在單張 RTX 4070 上跑。沒有 PyTorch、沒有 autograd,每個解析梯度都拿中央差分驗證對不對。對想真正搞懂訓練迴圈每一步、而不是只調 API 的人,這是難得完整又讀得懂的教材。
rseq——讓 user space 偵測被搶佔
rseq(restartable sequences)讓 user space 註冊一段臨界區:若執行到一半被排程搶佔或遷移到別的 CPU,核心會跳到 abort handler 重做,而不是上鎖。核心早就大量用 per-CPU 資料結構來避開鎖、壓低操作成本,rseq 把同樣的好處帶到使用者空間,TCMalloc 這類 allocator 是主要受益者。Cosmopolitan 也正在實作 rseq 支援。
把 x86-64 全靜態翻成 AArch64
一個叫 Elevator 的工具做 x86-64 到 AArch64 的全靜態、整段 binary 翻譯——在執行前就把組語轉好,而不是動態模擬。代價是體積:翻出來的 .text 在 SPECint 2006 上比原生編譯的 AArch64 大 47.5 到 62.5 倍,但效能可與 QEMU 模擬競爭、甚至更快。對追跨架構遷移(想想 Apple 當年的轉換)的人,這是條用空間換速度的路。
怎麼寫出最惹怒 CPU 的存取模式
一篇實測在 Intel Core Ultra 7 268V 上加總 2^26 個整數,散在 65,536 個分頁裡:循序存取花 1.327 億 cycle,隨機存取卻要 15.7 億 cycle,慢了將近 12 倍。作者再刻意設計 8-page stride 的最壞模式,逼到 20.6 億 cycle,比純隨機又慢約三成。慢的根源是 cache line 在重用前就被逐出、跨頁打斷 prefetch、L1 set 衝突、每次存取都 TLB miss,再加上 DRAM row-buffer 衝突。
Dropbox 量 HTTP/3 對搜尋延遲的影響
Dropbox 量了 HTTP/3 對搜尋延遲的實際影響:中位數只省約 5 到 15ms(5%),但 p90 省 48ms(13%)、p95 省 146ms(21%),亞洲改善最大、p95 直接少 200ms。HTTP/3 跑在 UDP 上的 QUIC,省掉 TCP 三向交握、支援 0-RTT,並解掉 head-of-line blocking——在丟包多的網路特別有感。真正受惠的只有約一成使用者,但那一成正是平常延遲最高、最該被救的人。
把兩座 1 EB+ HDFS 叢集接起來
LY Corporation 把原 LINE 與原 Yahoo Japan、合計超過 1 EB 的 HDFS 叢集接在一起,用 DistCP 直接搬資料。兩邊設計天差地遠:LINE 用 client-side ViewFS 聚合命名空間,Yahoo Japan 用 server-side Router-based Federation 加 Observer NameNode 分散讀取;最棘手的不是容量,而是兩套權限模型——以角色管 DB/Table vs 以 HDFS 路徑管權限——怎麼對接。跨叢集連線靠 Kerberos cross-realm 認證、專用 DistCP 佇列與 L4 網路 ACL 收斂。
VictoriaLogs 怎麼把日誌存成欄式
VictoriaLogs 把日誌存成欄式:每個 field 各自成一欄、各自壓縮,查詢只讀用到的欄,而不是把每列每個欄位都掃過。實例裡一個 part 把 6.02 GB 壓成 537.9 MB(約九成),裝下 4,240,299 列、分成 1,915 個 block,並用 bloom filter 加速字詞查找。就算在 IOPS 很低的 HDD 上,也能每秒灌進約 1 GiB 日誌。
hash 只證明 bytes,不證明來源
Collider 套件管理器在 1.3.0 修掉兩個供應鏈漏洞,論點濃縮成一句話:hash 只證明 bytes,不證明來源。一是路徑穿越——repository 的 releases.json 可塞像 etc/cron.d 這種逃出快取目錄的名字;二是 token 外洩——驗證用的 bearer token 會跟著跨來源 HTTP 轉址被重送。SHA-256 能驗內容完整,卻不驗身分,作者主張要靠 origin pinning 與簽章補上這道縫。