SlideShare a Scribd company logo
1 of 24
Download to read offline
Inside Erlang VM


      Yu Feng
mryufeng@gmail.com
     2010/04/26
  www.yufeng.info
目的
通过对Erlang VM的内部部件的解刨,  能够对VM的运作原理有
个深度的把握和了解, 对系统的设计和实现有指导作用.
 
包含的内容:
  Erlang是什么
  ERTS的优势
  高级网络程序几个要素,ERTS如何实现
  Erlang VM的特点
  Erlang集群的设施
  Erlang自省机制
  代码的热升级
  内置强大的数据库
  稳定和移植性
 
 
Erlang是什么?FP语言还是平台
ERTS的核心优势

 高性能
 多核心SMP的支持
 FP语言支持,自动GC
 透明分布的支持
 轻量进程的支持
 完善的系统信息
 商业产品上经过时间的验证成熟
典型网络服务器几大要素

CPU
IO
消息传递
定时器
业务抽象
ERTS就是个网络程序的框架

    谁说的?我说的
CPU

    多核心, 多调度器
       running on full load or not
    抢占式调度
    调度器公平调度 
    保持少量的CPU忙
    CPU亲缘性/进程绑定
 
CPU续
 每个核心一个调度器
 每个调度器一个调度队列
cpu续

CPU负载均衡和迁移
IO

 对外的通讯通道
 POLL事件派遣机制
 公平调度
 透过系统管道连接异构系统
IO续

 Port负责对外的IO通信
 Port都有个宿主进程, 用于协调通信
消息传递

消息传递是唯一的进程间通信方式
消息高效传递
消息透明传递
消息的跟踪
高效的消息编解码
消息续

进程级别的消息队列
选择性接收
超时
定时器

支持time jump detection and correction
定时器wheel实现, 支持百万级别的定时器
多样的使用支持
  语法
  驱动
  BIF
业务抽象

面向并发编程
轻量进程对应于现实世界的Actor
Actor互动透过消息
模块提供基本的业务抽象
典型的一个应用有不同的进程,充当不同的角色
那么相比, Erlang VM的特点是

 高效的数据结构
   Atom, Binary, List, Tuple 4种基础数据
 GC Mark and sweep, 隔代, 进程级别
    软实时
 资源自动回收
 异步线程机制
   驱动可用
 高效的内存分配
   CPU独立内存池
   多种类型和类别的高速内存池, 可微调
 高效的锁机制
   高效的锁和检查机制
Erlang集群的设施

 Net_kernel, EPMD核心部件
 可替换的传输介质
   Inet_tcp_dist
   Inet_ssl_dist
 group_leader的设计和用途
      截获输出
 dist trap 透明的进行握手动作
   Connect and handshake
 名称登记和维护
   Local/global
 维护网络全联通
   Net tick
   Nodeup nodedown
图例分布消息通信
Erlang自省机制

 巨强大的Trace机制和工具支持
 巨完善的系统信息, 可以不夸张的说可以获取任何信息
 多样的监控
    OS层面的cpu, memory, disk
    VM层面的CPU, memory,GC活动等
 规范的信息获取, 每个模块都有个info函数
 CrashDump
 完善的获取手段
    Eshell
    RPC
    SSH
    TOP/MAN等工具
代码的热升级

支持代码从压缩包和网络读取
代码热升级
  Beam文件 
  驱动层面(动态库)
内置强大的数据库

ETS内存数据库
  支持Hash和Tree模式
  内置的虚拟机, 执行高效的Match操作
  完善的接口
  不参与GC
DETS持久数据库
  缺点只支持2G文件
Mnesia集群数据库
  无中心节点的模式
  读写都在内存
稳定和移植性

  稳定性 
    号称6个9
    Link/Monitor机制
    异常机制
    监督树
   目前平台移植性:
    Solaris
    Linux
    Freebsd
    Mac
    Windows
     
 
谢谢大家
联系我: mryufeng@gmail.com

More Related Content

Viewers also liked

Erlang高级原理和应用
Erlang高级原理和应用Erlang高级原理和应用
Erlang高级原理和应用Feng Yu
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理zijia
 
Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Wensong Zhang
 
Erlang及其应用
Erlang及其应用Erlang及其应用
Erlang及其应用Feng Yu
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理zijia
 
LVS development and experience
LVS development and experienceLVS development and experience
LVS development and experienceWensong Zhang
 
高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查bluedavy lin
 
Python在豆瓣的应用
Python在豆瓣的应用Python在豆瓣的应用
Python在豆瓣的应用Qiangning Hong
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查bluedavy lin
 
Redis原生命令介绍
Redis原生命令介绍Redis原生命令介绍
Redis原生命令介绍Edward Lee
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流Edward Lee
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈Tim Y
 
Performance of fractal tree databases
Performance of fractal tree databasesPerformance of fractal tree databases
Performance of fractal tree databasesLixun Peng
 
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsTIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsXiaozhe Wang
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and ToolsBrendan Gregg
 

Viewers also liked (17)

Erlang高级原理和应用
Erlang高级原理和应用Erlang高级原理和应用
Erlang高级原理和应用
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务
 
Erlang及其应用
Erlang及其应用Erlang及其应用
Erlang及其应用
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
LVS development and experience
LVS development and experienceLVS development and experience
LVS development and experience
 
Git 实战
Git 实战Git 实战
Git 实战
 
DAE
DAEDAE
DAE
 
高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查
 
Python在豆瓣的应用
Python在豆瓣的应用Python在豆瓣的应用
Python在豆瓣的应用
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查
 
Redis原生命令介绍
Redis原生命令介绍Redis原生命令介绍
Redis原生命令介绍
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
 
Performance of fractal tree databases
Performance of fractal tree databasesPerformance of fractal tree databases
Performance of fractal tree databases
 
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling ToolsTIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and Tools
 

Similar to Inside Erlang Vm II

Erlang Optimize
Erlang OptimizeErlang Optimize
Erlang OptimizeFeng Yu
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computingFeng Yu
 
0513 深入Windows Server 2008 系統核心
0513 深入Windows Server 2008  系統核心0513 深入Windows Server 2008  系統核心
0513 深入Windows Server 2008 系統核心Timothy Chen
 
基于Erlang的
基于Erlang的基于Erlang的
基于Erlang的hnoutman
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttcGeorge Ang
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttctopgeek
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttcareyouok
 
Erlang开发及应用
Erlang开发及应用Erlang开发及应用
Erlang开发及应用litaocheng
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发litaocheng
 
Aix操作系统培训文档
Aix操作系统培训文档Aix操作系统培训文档
Aix操作系统培训文档lwj2012
 
Hp Storage
Hp StorageHp Storage
Hp Storageamulopan
 
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践Feng Yu
 
White paper apc4.0
White paper apc4.0White paper apc4.0
White paper apc4.0ahnlabchina
 
Erlang Emulator Implementation
Erlang Emulator ImplementationErlang Emulator Implementation
Erlang Emulator ImplementationFeng Yu
 
华为 余洲 定制化服务器
华为 余洲 定制化服务器华为 余洲 定制化服务器
华为 余洲 定制化服务器colderboy17
 
华为 余洲 定制化服务器
华为 余洲 定制化服务器华为 余洲 定制化服务器
华为 余洲 定制化服务器guiyingshenxia
 

Similar to Inside Erlang Vm II (20)

Erlang Optimize
Erlang OptimizeErlang Optimize
Erlang Optimize
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computing
 
0513 深入Windows Server 2008 系統核心
0513 深入Windows Server 2008  系統核心0513 深入Windows Server 2008  系統核心
0513 深入Windows Server 2008 系統核心
 
基于Erlang的
基于Erlang的基于Erlang的
基于Erlang的
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc腾讯大讲堂45 解剖ttc
腾讯大讲堂45 解剖ttc
 
Erlang开发及应用
Erlang开发及应用Erlang开发及应用
Erlang开发及应用
 
智慧化的IT架構管理
智慧化的IT架構管理智慧化的IT架構管理
智慧化的IT架構管理
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发
 
9439AD2
9439AD29439AD2
9439AD2
 
Aix操作系统培训文档
Aix操作系统培训文档Aix操作系统培训文档
Aix操作系统培训文档
 
Hp Storage
Hp StorageHp Storage
Hp Storage
 
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践
 
White paper apc4.0
White paper apc4.0White paper apc4.0
White paper apc4.0
 
Baidu Cloud Foundry
Baidu Cloud FoundryBaidu Cloud Foundry
Baidu Cloud Foundry
 
Erlang Emulator Implementation
Erlang Emulator ImplementationErlang Emulator Implementation
Erlang Emulator Implementation
 
华为 余洲 定制化服务器
华为 余洲 定制化服务器华为 余洲 定制化服务器
华为 余洲 定制化服务器
 
华为 余洲 定制化服务器
华为 余洲 定制化服务器华为 余洲 定制化服务器
华为 余洲 定制化服务器
 
17 cpu01
17 cpu0117 cpu01
17 cpu01
 

More from Feng Yu

Cpu高效编程技术
Cpu高效编程技术Cpu高效编程技术
Cpu高效编程技术Feng Yu
 
Erlang开发实践
Erlang开发实践Erlang开发实践
Erlang开发实践Feng Yu
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述Feng Yu
 
了解集群
了解集群了解集群
了解集群Feng Yu
 
低成本和高性能MySQL云架构探索
低成本和高性能MySQL云架构探索低成本和高性能MySQL云架构探索
低成本和高性能MySQL云架构探索Feng Yu
 
了解应用服务器
了解应用服务器了解应用服务器
了解应用服务器Feng Yu
 
我为什么要选择RabbitMQ
我为什么要选择RabbitMQ我为什么要选择RabbitMQ
我为什么要选择RabbitMQFeng Yu
 
了解网络
了解网络了解网络
了解网络Feng Yu
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能Feng Yu
 
了解内存
了解内存了解内存
了解内存Feng Yu
 
MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)Feng Yu
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)Feng Yu
 
了解Cpu
了解Cpu了解Cpu
了解CpuFeng Yu
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈Feng Yu
 
了解IO设备
了解IO设备了解IO设备
了解IO设备Feng Yu
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Feng Yu
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践Feng Yu
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Feng Yu
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)Feng Yu
 
开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)Feng Yu
 

More from Feng Yu (20)

Cpu高效编程技术
Cpu高效编程技术Cpu高效编程技术
Cpu高效编程技术
 
Erlang开发实践
Erlang开发实践Erlang开发实践
Erlang开发实践
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述
 
了解集群
了解集群了解集群
了解集群
 
低成本和高性能MySQL云架构探索
低成本和高性能MySQL云架构探索低成本和高性能MySQL云架构探索
低成本和高性能MySQL云架构探索
 
了解应用服务器
了解应用服务器了解应用服务器
了解应用服务器
 
我为什么要选择RabbitMQ
我为什么要选择RabbitMQ我为什么要选择RabbitMQ
我为什么要选择RabbitMQ
 
了解网络
了解网络了解网络
了解网络
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能
 
了解内存
了解内存了解内存
了解内存
 
MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
 
了解Cpu
了解Cpu了解Cpu
了解Cpu
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈
 
了解IO设备
了解IO设备了解IO设备
了解IO设备
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)
 
开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)
 

Inside Erlang Vm II