Download presentation
Presentation is loading. Please wait.
1
Erlang emulator 实现分析 2007/10
2
Erlang vm + bif + 基础设施 整个erlang系统的核心实现 尺寸很小 适合于嵌入式
emulator是什么 Erlang vm + bif + 基础设施 整个erlang系统的核心实现 尺寸很小 适合于嵌入式
3
emulator的特性 高性能 分布式 支持多核
4
emulator的物理结构 erlexec escript … tty_sl ram_file_drvzlib_drv udp_inet
tcp_inet Efile async Beam Driver Sys Utilts beam Beam.smp Beam.hybird erlexec escript … Unix Windows …
5
emulator的类型 Beam Beam.smp Beam.hybird
6
Emulator的运行期 单个smp 多个smp情况
erl_start->erl_init->process_main->schedule->sys_schedule
7
Beam的物理模块 Beam目录下的.c .h 这部份基本上是可移植的
8
Process是调度的单元 轻量设计 无耦合 通过message交换信息
9
线程协调multi_scheduling
可以按需开N个 scheduler 随时停止所有线程进行维护
10
内存分配策略 : binary_alloc D: std_alloc E: ets_alloc F: fix_alloc
H: eheap_alloc L: ll_alloc M: mseg_alloc S: sl_alloc T: temp_alloc Y: sys_alloc
11
dist Pid(x,y,z) 节点间通讯 透明实现
12
erl_ext_dist.txt Dist 和 cnode 原理
13
详细的系统运行器信息 erl_crash.dump 丰富的内容
Info模块 详细的系统运行器信息 erl_crash.dump 丰富的内容
14
Benchmark 用于测量系统运行器的情况
15
erlang term strorage Hash和tree实现 Match vm
ets erlang term strorage Hash和tree实现 Match vm
16
对信号的处理 SIGINT SIGUSR1 SIGUSR2 在单独线程处理信号
17
用指针来分辨类型 内部格式和外部格式 是GC回收
Eterm数据结构 用指针来分辨类型 内部格式和外部格式 是GC回收
18
某些表格在源码里面找不到 Make的时候调用utility 程序动态生成的
表格和代码生成器 某些表格在源码里面找不到 Make的时候调用utility 程序动态生成的
19
针对Process的Message 进行的回收 针对普通的eterm进行的回收
垃圾回收 针对Process的Message 进行的回收 针对普通的eterm进行的回收
20
Port是erlang程序自己操作的界面 Driver是功能的实现 Io poller是 port和外部通讯的推动力
Port & Driver Port是erlang程序自己操作的界面 Driver是功能的实现 Io poller是 port和外部通讯的推动力
21
代码热部署原理 Moudle Driver dll
22
系统微调 命令行参数 环境变量 运行期信息获取
23
结束 谢谢大家
Similar presentations