erlang emulator implementation

23
Erlang emulator 实实实实 mryufeng@g mail.com 2007/10

Upload: feng-yu

Post on 26-Jun-2015

1.338 views

Category:

Technology


4 download

DESCRIPTION

Erlang Emulator Implementation

TRANSCRIPT

Page 1: Erlang Emulator Implementation

Erlang emulator 实现分析

[email protected]/10

Page 2: Erlang Emulator Implementation

emulator 是什么

• Erlang vm + bif + 基础设施• 整个 erlang 系统的核心实现• 尺寸很小 适合于嵌入式

Page 3: Erlang Emulator Implementation

emulator 的特性

• 高性能• 分布式• 支持多核

Page 4: Erlang Emulator Implementation

emulator 的物理结构

• erlexec• escript• …

beamBeam.smpBeam.hybird

BeamDriverSysUtilts

UnixWindows…

tty_slram_file_drvzlib_drvudp_inettcp_inetEfileasync

Page 5: Erlang Emulator Implementation

emulator 的类型

BeamBeam.smpBeam.hybird

Page 6: Erlang Emulator Implementation

Emulator 的运行期

•单个 smp• 多个 smp 情况• erl_start->erl_init->process_main-

>schedule->sys_schedule

Page 7: Erlang Emulator Implementation

Beam 的物理模块

Beam 目录下的 .c .h这部份基本上是可移植的

Page 8: Erlang Emulator Implementation

Process

• Process 是调度的单元•轻量设计• 无耦合• 通过 message 交换信息

Page 9: Erlang Emulator Implementation

线程协调 multi_scheduling

• 可以按需开 N 个 scheduler• 随时停止所有线程进行维护

Page 10: Erlang Emulator Implementation

内存分配策略

• : 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

Page 11: Erlang Emulator Implementation

dist

• Pid(x,y,z)•节点间通讯 • 透明实现

Page 12: Erlang Emulator Implementation

erl_ext_dist.txt

• Dist 和 cnode 原理

Page 13: Erlang Emulator Implementation

Info 模块

•详细的系统运行器信息• erl_crash.dump 丰富的内容

Page 14: Erlang Emulator Implementation

Benchmark

• 用于测量系统运行器的情况

Page 15: Erlang Emulator Implementation

ets

• erlang term strorage• Hash 和 tree 实现• Match vm

Page 16: Erlang Emulator Implementation

对信号的处理

SIGINTSIGUSR1SIGUSR2

在单独线程处理信号

Page 17: Erlang Emulator Implementation

Eterm 数据结构

• 用指针来分辨类型• 内部格式和外部格式• 是 GC 回收

Page 18: Erlang Emulator Implementation

表格和代码生成器

• 某些表格在源码里面找不到• Make 的时候调用 utility 程序动态生成

Page 19: Erlang Emulator Implementation

垃圾回收

•针对 Process 的 Message 进行的回收•针对普通的 eterm 进行的回收

Page 20: Erlang Emulator Implementation

Port & Driver

• Port 是 erlang 程序自己操作的界面• Driver 是功能的实现• Io poller 是 port 和外部通讯的推动力

Page 21: Erlang Emulator Implementation

代码热部署原理

• Moudle • Driver dll

Page 22: Erlang Emulator Implementation

系统微调

• 命令行参数•环境变量• 运行期信息获取

Page 23: Erlang Emulator Implementation

结束

谢谢大家