状态: 活跃研究研究软件
mac-lock(跨轨内存互斥)
一个以 vm_stat 为门、以 mkdir 原子性实现的互斥,在单台 128GB Mac 上串行化两条轨道的内存密集工作,含 40GB 余量自检与陈旧锁自动回收。
说明
源自一次真实的 OOM/看门狗崩溃:通过实时内存压力设门并自动回收陈旧锁,防止两条内存密集轨道在同一台机器上相撞。
亮点
- 在同一台 Mac 上串行化两条独立轨道的内存密集任务
- 以 vm_stat 读取的实时内存压力为准入门槛
- 通过 mkdir(POSIX 原子操作)实现原子加锁
- 授予锁前做约 40GB 余量的自检
- 自动回收进程死亡后遗留的僵尸锁
mac-lock 是一把针对特定故障的小型互斥锁:同一台大内存 Mac 上跑着两个重型任务,各自单独运行都没问题,可一旦它们的内存峰值恰好重叠,就会把整台机器拖垮。它正是从这样一次事故中诞生的——两条内存密集轨道在一台 128GB 机器上相撞,触发了 out-of-memory / watchdog 崩溃。它不去限制任何一个任务,而是让它们在内存临界区里轮流通过。
工作原理
加锁是通过 mkdir 创建目录完成的,这在 POSIX 文件系统上是原子操作:两条轨道竞争时,恰好只有一个成功,因此不会有两方同时误以为自己持锁。授予锁之前,它会做一次余量自检——从 vm_stat 读取实时内存压力,确认大约还有 40GB 余量——让锁反映机器的真实状态,而不只是看谁先开口。此外,持锁进程一旦崩溃,锁本会永久卡死,因此它还会侦测并自动回收进程死亡后遗留的僵尸锁。
为何重要
它的适用范围刻意收窄且坦白:因为依赖 vm_stat,它仅限单机、仅限 macOS。这份约束正是重点——它老老实实解决自己被造出来要解决的具体问题,不假装成分布式调度器。放到 governed agent systems 这条更宽的研究里,它是同一理念的一个极简、以证据为准的样例:读取共享资源的真实状态,据此把关访问,宁可安全地失败,也不自信地出错。采用 Apache-2.0 许可证。
局限
- 单机、macOS 专用(vm_stat)。
- 代码仓库正迁出即将下线的 Octoryn Research 域名。
