news 2026/8/1 20:08:39

我在 macOS 上跑 300GB 模型却没用 O_DIRECT:为什么绕过 Page Cache 反而慢 2 倍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
我在 macOS 上跑 300GB 模型却没用 O_DIRECT:为什么绕过 Page Cache 反而慢 2 倍

你打算把一个装不进内存的模型放到 SSD 上流式跑,第一反应大概是去翻O_DIRECT的用法,接着翻io_uring,结果在 macOS 上发现前者根本不存在、后者更没有。于是你转去查fcntl(fd, F_NOCACHE, 1),查到一半会看到 Apple 开发者论坛上一句让人心凉的话:它是个 hint,不保证生效,而且不会清掉已经缓存的页。

DwarfStar 的 ds4 引擎能在一台 128 GiB 的 Mac 上把一个三百多 GiB 的 MoE 模型跑起来。我把整棵源码树 grep 了一遍,O_DIRECT零次,F_NOCACHE零次,io_uring零次。它用的是最朴素的 bufferedpread

这件事第一眼看上去像是“没做优化”,实际上恰恰相反。真正决定这台机器是能出 token 还是四十分钟后开始重度换页的,从来不是你有没有绕过 page cache,而是这几十 GiB 内存的所有权最终记在谁头上——记在内核的 page cache 上,它随时可以在你最需要的时候把它回收掉;记在你自己 mlock 住的 slab 上,它就是你的。这套实现干的全部事情,就是把所有权从前者一寸一寸挪到后者,同时在驱逐的时候主动把前者按回去。

下面我会带你把这条链路从最外层的一行命令拆到最里层的pread落点:先用一个专门用来“制造内存不足”的工具把“模型必须装进 RAM”这个前提实测崩掉;再算清楚 MoE 到底给了我们什么样的结构性机会;然后逐行读d

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/1 20:05:43

英雄联盟自动化助手:3分钟上手的游戏智能伴侣

英雄联盟自动化助手:3分钟上手的游戏智能伴侣 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否厌倦了在英雄联盟对局中反复配…

作者头像 李华
网站建设 2026/8/1 20:05:02

MATLAB数据导出CSV全攻略:从基础函数到海量数据处理

1. 从数据到文件:为什么CSV是MATLAB数据导出的首选在数据分析、仿真和科研的日常里,我们常常在MATLAB里完成核心计算,得到一堆宝贵的矩阵、表格或结构体。但故事往往不会在MATLAB的命令窗口里结束。你需要把结果交给同事、导入到数据库、用其…

作者头像 李华
网站建设 2026/8/1 20:01:24

Tools、Workflow、Agent 三层架构详解

Tools、Workflow、Agent 三层架构详解:从最小能力单元到编排框架 1. 三者的核心误区 很多人把 Tools、Workflow、Agent 当成三个并列的竞争方案,认为做项目时需要在三者中选一个。这个理解是错的。 三者不是同一维度的东西,而是粒度不同、可以…

作者头像 李华
网站建设 2026/8/1 20:00:23

西门子200Smart加Smart 1000 IE水处理程序12(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

西门子200Smart加Smart 1000 IE水处理程序 12(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 采用成熟、可靠、先进、自动化程度高的反渗透精混床除盐水处理工艺,确保处理后的超纯水水质确保处理后出水电阻率达到18.2MΩ.cm, 高纯水…

作者头像 李华