erlang emulator implementation

Post on 26-Jun-2015

1.338 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Erlang Emulator Implementation

TRANSCRIPT

Erlang emulator 实现分析

mryufeng@gmail.com2007/10

emulator 是什么

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

emulator 的特性

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

emulator 的物理结构

• erlexec• escript• …

beamBeam.smpBeam.hybird

BeamDriverSysUtilts

UnixWindows…

tty_slram_file_drvzlib_drvudp_inettcp_inetEfileasync

emulator 的类型

BeamBeam.smpBeam.hybird

Emulator 的运行期

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

>schedule->sys_schedule

Beam 的物理模块

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

Process

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

线程协调 multi_scheduling

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

内存分配策略

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

dist

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

erl_ext_dist.txt

• Dist 和 cnode 原理

Info 模块

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

Benchmark

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

ets

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

对信号的处理

SIGINTSIGUSR1SIGUSR2

在单独线程处理信号

Eterm 数据结构

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

表格和代码生成器

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

垃圾回收

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

Port & Driver

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

代码热部署原理

• Moudle • Driver dll

系统微调

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

结束

谢谢大家

top related