Erlang和SMP

SMP:Symmetrical Multi Processor 对称多处理器

原理

1:disable SMP
一个调度器对应一个运行队列
没有SMP支持的erlang VM 只有一个Scheduler运行于主线程,Scheduler从运行队列中取出需要运行的erlang进程和IO任务


2:enable SMP =
多个调度器对应一个运行队列:这时会比上面慢,因为锁保护
有SMP支持的erlang VM 可以有1-1024个Scheduler,每个Scheduler运行于一个独立的操作系统线程,操作系统决定它是否要在不同的核上面运行。由于多个Scheduler从同一个公共运行队列中去除需要运行的erlang进程和IO任务,所以对共享数据进行锁保护


N个调度器,N个运行队列。每个调度器对应一个运行队列


运行
  从OTP R12B开始只要操作系统告知当前是多CPU(多核),SMP就会自动开启并设定Scheduler个数和CPU或核的数量一致:


开启和关闭SMP
erl -smp [auto|disable|enable]

启动erl时设置Scheduler数量
erl +S 2:2

猜你喜欢

转载自room-bb.iteye.com/blog/2203316
今日推荐