首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Erlang的抽象机BEAM中使用了哪些操作系统线程?

Erlang的抽象机BEAM中使用了哪些操作系统线程?
EN

Stack Overflow用户
提问于 2010-09-08 08:48:07
回答 2查看 1.6K关注 0票数 18

我已经开始研究Erlang,并发现BEAM运行时环境很吸引人。人们通常认为,在Erlang中,进程属于语言而不是操作系统(意思是运行时,在本例中就是BEAM )。这些是Erlang出名的轻量级“绿色进程”。(在this paper的第5页) BEAM使用一(1)个操作系统线程进行调度,另一个操作系统线程用于i/o,所以我想知道:实际执行Erlang代码所需的CPU周期来自哪个线程?

此外,如果我在双核机器上运行,根据我到目前为止所读到的内容,我可能会看到三(3)个线程在BEAM进程下运行:两个调度器(每个内核一个)和一个i/o线程。但我看到的是10。有时是11。有时它从13开始,就像高质量的放大器一样,到了11。

我很困惑。任何洞察力都将受到感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-14 21:02:42

根据@user425720的建议,我在erlang-questions列表服务器上提出了我的问题。它也可以作为Google Group使用。Trifork的Kresten Krab Thorup几乎立刻回答了我。我要感谢克雷斯顿。这就是他的答案。(括号和强调是我的。)

这里的

是AFAIK,这是基本的场景:

Erlang代码将在与进程数量相同的“绿色线程”中运行;进程限制由+P (命令行)标志控制。

绿色线程被映射到S个线程,其中S是核心/CPU的数量。事实上,这些线程也被称为调度器,这看起来有点令人困惑,但从VM的角度来看,它们确实是。从开发人员的角度来看,它们是运行代码的线程。可以使用erl命令行的+S选项来控制数字S。

除此之外,还有许多所谓的“异步线程”。这是一个线程池,由驱动程序中调用的链接的I/O进程使用,以响应选择/轮询等。异步线程的数量是动态的,但受到+A标志的限制。

因此,您在双核上看到的11个线程可能是2个调度器,9个异步线程。例如。

阅读更多有关标志here的信息。

票数 10
EN

Stack Overflow用户

发布于 2010-09-08 18:23:46

Erlang进程不是“绿色”的,因为在java中线程是绿色的。Erlang进程是不共享内存的结构,由Erlang VM维护。

这可能听起来很奇怪,但这篇论文可能是“旧的”(即使是2007年的简历)。当我们对运行时队列进行了全新的处理(具有动态平衡和其他好处)时,R13发布前后一切都发生了变化。这里是Ulf Wiger关于它的一些演示文稿http://ulf.wiger.net/weblog/2009/01/23/erlang-programming-for-multicore/

总而言之,进程是完全透明的,您可以调整运行时队列和调度器的数量,但操作系统的实现并不完整。我不想去推测为什么有11个线程..

编辑:我对操作系统的理解有一点错误:

+S Schedulers:SchedulerOnline

设置要创建的计划程序线程数,以及启用SMP支持时要设置为联机的计划程序线程数。

这两个值的有效范围都是1-1024。如果Erlang运行时系统能够确定配置的逻辑处理器和可用的逻辑处理器的数量,那么调度器将缺省为配置的逻辑处理器,SchedulersOnline将缺省为可用的逻辑处理器;否则,缺省值将为1。如果:SchedulerOnline不是,则可以省略调度器,反之亦然。在线调度器的数量可以在运行时通过erlang:system_flag(schedulers_online, SchedulersOnline)更改。

..。

如果仿真器没有启用SMP支持,这个标志将被忽略(参见-smp标志)。

从这里:http://www.erlang.org/doc/man/erl.html

EDIT2: erlang问题邮件列表上关于许多vs与许多调度器的优缺点的有趣讨论。不幸的是,它也是从2008年开始的,在新的OTP版本中可能不会有巨大的改进。http://www.erlang.org/cgi-bin/ezmlm-cgi?4:mss:38165:200809:nbihpkepgjcfnffkoobf

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3663823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档