Thread progress 是 Erlang 虚拟机中负责无锁同步的基础设施。它在文档中的描述初看有些抽象,比如“线程返回到一个与任何其他代码都无关的已知状态”。但结合载体迁移等具体场景后,各个概念会逐渐变得清晰。一、Thread Progress ...
阅读全文...
Erlang 载体迁移机制解析:从无锁池设计到 NUMA 架构的高效适配
1. 背景:Erlang 多核内存分配的问题Erlang/OTP 虚拟机(ERTS)的每个调度器(Scheduler)线程都绑定独立的分配器实例(Allocator Instance),以消除全局内存分配锁。每个分配器通过 mmap 向操作系统申请大块连...
阅读全文...
阅读全文...
双重哈希:从开放寻址到 Bloom Filter 工程实践
双重哈希:从开放寻址到 Bloom Filter 工程实践一、问题来源某在线服务维护了一个规模较大的持久化键集合,最初的实现会在进程启动时把全部记录加载到内存索引中。随着历史数据增长,这种方式逐渐暴露出两个问题:大量低频数据长期占用内存;某些内部流程会反...
阅读全文...
阅读全文...
Neovim 使用 ELP 内存占用过高的一次排查记录
Neovim 使用 ELP 内存占用过高的一次排查记录最近在 Neovim 中使用 ELP(Erlang Language Platform) 作为 Erlang 的 LSP 服务器时,遇到了一次比较典型的内存占用过高问题。ELP 本身是 Rust 实现...
阅读全文...
阅读全文...
[译注与拓展] 哈希数组映射树(HAMT)的原理与Erlang对其的实现
声明: 本文主要内容编译自 Nick M 的英文技术分享 《Grokking Hash Array Mapped Tries (HAMTs)》。笔者在译介的基础上,修正了原作中关于哈希冲突处理的逻辑细节,并观察了 Erlang 源码分析出 Erlang ...
阅读全文...
阅读全文...
线上内存优化方案实战
一次 Erlang 线上内存优化分析:ETS 大对象、compressed 表与 eheap allocator 碎片背景近期对一批 Erlang 线上节点做内存采样时,发现整体内存水位偏高。采样内容主要包含两部分:ETS 表维度的内存占用;ets_al...
阅读全文...
阅读全文...
基于原型驱动的ai工作流程
游戏开发中模糊需求的应对:用「最小原型 + 反向校准」替代传统前置对齐背景:我们一直面临的沟通困境在游戏功能开发中,策划经常会给出一份相对模糊的需求文档。程序员阅读后往往无法完全把握核心意图,尤其是一些涉及服务端状态流转、边界处理、异常路径、权限控制、跨...
阅读全文...
阅读全文...
Erlang Memory Sub System
这一章节只是简单教一下内存子系统相关的知识,如果想更深入学习内存子系统可以读一下 "Understanding the Linux Kernel" or "Linux System Programming"这一章节主要是教两种动态可分配内存:堆、内存映射...
阅读全文...
阅读全文...
Erlang Schedualing
调度器是用来让erlang系统决定哪些代码要跑和什么时候跑的,10.1 并发、并行、抢占式多任务(Preemptive Multitasking)SMP:Symmetric Multi-Processing(对称多处理)在Erlang/ERTS中的含义S...
阅读全文...
阅读全文...