问题标签 [beam]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6162 浏览

erlang - Erlang 编译器如何处理模式匹配?它输出什么?

我刚刚问了一个关于 Erlang 编译器如何实现模式匹配的问题,我得到了一些很好的回应,其中之一是编译后的字节码(通过传递给c()指令的参数获得):

它只是简单的 Erlang 元组。我期待一些神秘的二进制东西,你猜不是。我在这里一时冲动地问这个问题(我可以查看编译器源代码,但通过额外的洞察力提出问题总是会更好),这个输出是如何在二进制级别翻译的?

比如说{test,is_tuple,{f,3},[{x,0}]}。我假设这是一条指令,称为“测试”......无论如何,所以这个输出本质上是字节码级语言的 AST,二进制编码只是 1-1 翻译?

这一切都太令人兴奋了,我不知道我可以这么容易地看到 Erlang 编译器把事情分解成什么。

0 投票
2 回答
3330 浏览

erlang - How portable are Erlang beam files?

I have a temporary situation where beam files compiled on one node are executed on another node. Are the beam files portable?

How close do the versions of the Erlang distributions need to be?

0 投票
2 回答
2768 浏览

architecture - BEAM 和 JVM 之间有哪些基本的功能/架构差异?

BEAM 和 JVM 之间有哪些基本的功能/架构差异?

  1. 是的,我知道:一个最初是围绕 java 构建的,另一个是围绕 erlang 构建的
  2. 我了解 JVM(有点)并想比较它们的结构
  3. 例如,我知道 JVM 有一个全局 GC,而 BEAM 每个进程有一个
0 投票
2 回答
1612 浏览

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

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

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

我很困惑。任何见解将不胜感激。

0 投票
1 回答
119 浏览

erlang - 为什么没有将 erlang lib 更改合并到我的项目中?

我在一个相当大的项目上使用 eclipse 3.6.2 和 erlang 5.8.1.1,我们还没有准备好迁移到更现代的语言版本,所以我在 eprof 中遇到了一个错误:

这对我来说总是崩溃,因为写这篇文章的人并没有防范除零。我已经改变了:

...但我的项目从未执行过它。我已经手动重新编译了.erl并将.beam放在ebin目录下,但是在我的项目完全关闭,关闭eclipse,打开eclipse,刷新,清理和重新启动之后,没有执行新版本的方法。我尝试在方法中添加诸如“foo + 1”之类的表达式,以查看我是否得到与现在让我失望的 badarith 不同的异常,但没有效果。

我只能猜测 .beams 正在被合并或缓存在我将不得不进行核攻击或重建的某个地方?

0 投票
0 回答
1898 浏览

java - Erlang 和 BEAM 的未来

前段时间,我对 Erlang(来自 C++/PHP/Java 世界)产生了浓厚的兴趣——我已经看到它已经在业界成功使用,由Ericsson, Facebook,Goldman Sachs等。所以,我认为这将是一个很棒的平台构建高要求的应用程序,具有低延迟的配置文件,使用比 Java(对我而言)更干净和更好的语言。

但是在“哇效应”消失之后,我发现有许多高性能 Java 库似乎解决了 Erlang 理论上最适合的许多问题(实时、低延迟应用程序、并发、容错等。 )。此外,尽管有 Erlang 配置文件,但似乎有些事情在 BEAM 上是不可能实现的(如LMAX Disruptor 并发框架)。

那么问题来了:Erlang 仍然是构建这样的最佳平台demanding applications吗?如果我们坚持使用一个非常成熟的 (J)VM 并尝试使它比尝试用更少的可用资源(OTP 团队的规模与 JVM 团队的规模、支持者等)实现类似的目标更好,那不是更好吗?performance and adoption是否有可能通过 BEAM实现这种目标?

只是为了澄清一点:我不想在这里引发一场激烈的战争。我只是好奇,因为我真的很喜欢 Erlang,我认为它是一个很棒的平台,我想投入时间和精力在上面构建现实生活中的项目。但我只是想知道其他人对此会怎么说——如果我错了——也许有人可以纠正我。

0 投票
1 回答
1006 浏览

amazon-ec2 - 无法在主机上启动光束并且无法在主机上启动新光束

有一些问题如下:

这是我的 /etc/hosts 文件(tester0):

每当我启动实例时(它们都有相同版本的 Erlang,我是从源代码构建的),我运行这个脚本:

而且我完全能够运行您在文档中所述的测试(例如):

以及页面中描述的内容:https: //support.process-one.net/doc/display/ERL/Starting+a+set+of+Erlang+cluster+nodes

然后我运行(在 tester0 上):

这是有道理的,因为:

奇怪的???

0 投票
2 回答
1880 浏览

erlang - tsung ts_config_server 无法在主机上启动 newbeam(原因:超时)正在中止

我目前正在对 Amazon 的 EC2 服务进行分布式负载测试,并且一直在努力遵循所有文档/论坛/支持,以了解如何使事情正常进行,但不幸的是,我发现自己被困在了这一点上。任何相关的 IRC 中都没有人能够回答这个问题......

这是我所看到的:

如果我只是在控制器本身上运行它,我可以让 Tsung 完美地工作,但有以下选项:

此外 - 它适用于更高/更低的 CPU 值。

我也可以很容易地使用它在本地工作:

但这现在对我没有用,因为我无法获得我想要的吞吐量。

为了让事情正常进行,我安装了 ssh 密钥。我已经打开了这些服务器上的所有端口 [0 - 65535],并且拥有完全相同版本的 Tsung、Erlang,而且服务器上的所有内容实际上都是相同的(它们是彼此的图像)。

Tsung 版本 1.4.2 Erlang R15B01 Ubuntu 12.04LTS 相同的 EC2 安全组(所有端口都打开 - TCP 和 UPD 且没有 iptables 或 SELinux)相同的 EC2 可用区

当我确实启动 tsung 时,仅当按上述方式发送到 tester0 并且 ts_config_server 使用以下命令启动 newbeam 时,它才能工作:

但是,每当我尝试使用任何远程服务器运行它时,整个测试都会失败并且我得到零用户:

但是,当我尝试使用两个客户端运行它时(即,如下所示):

我再次让零用户开始访问我的网络服务器。我不知道为什么,这对我来说根本不直观。

我确实注意到的一件事是,在传递给 slave:start 的所有参数中,只有一个不存在,即 -boot 指令后面的那个:

相反,在该目录中,我只有以下文件:

我实际上尝试的最后一件事是记录我尝试从属时发生的 ssh 会话:启动,但我没有得到任何结果。我通过运行来做到这一点:

ssh_log_me 在哪里:

但是我运行时没有输出:

我查看了 erlang 的 -boot 指令和实际的 erlang 代码(用于 ts_config_server),但此时我有点迷茫,可能只是遗漏了最后一条信息。

我请你看看我的 xml 文件:http: //pastebin.com/2MEbL6gd

0 投票
2 回答
215 浏览

erlang - 如何获得 Erlang 的光束大小?

我有一个需要优化的遗留 Erlang 程序。这段代码在运行时最多使用 20G 内存。我想知道是否有办法在运行时获取进程本身的 Erlang Beam 大小?如果这是可能的,那么我可以做一些事情,比如如果光束大小>10GB,然后拒绝所有对 gen_server 进程的调用。谢谢您的帮助!

0 投票
3 回答
43678 浏览

erlang - BEAM(Erlang VM)是一种什么样的虚拟机?

据我了解,虚拟机分为“系统虚拟机”或“进程虚拟机”两类。BEAM所在的位置对我来说有点模糊。还有另一种我不知道的虚拟机吗?