学习erlang 需要研究erlang虚拟机么


  

股海封喉/s/1ntN3oAd0抢首赞10财富值将发放到伱账号加入战队答题平均奖励翻1.5倍登录领取奖励答案不满意?挑战答新题加入战队答题平均奖励翻1.5倍贡献知识赢奖励

如果你还没有在此找到或解决关于“学习erlang需要研究erlang虚拟机么”的问题的方法,可以用或以及等搜索引擎来搜索相关更多的内容也可以在百度知道、搜狗問问、360问答、微博、微信等来提问,让更多的网友共同来帮助你解决“学习erlang需要研究erlang虚拟机么”的回答

线上有一台t4的机器这些机器的cpu topo昰经过伪造的,通过top命令可以看到4个核心:

但实际机器有24个核心:

在这台机器上编译erlang虚拟机或安装已经打包的虚拟机全部会报出segment falut的错误,对于这个问题进行了跟踪。

首先可以确认erlang虚拟机本身是可以正确编译好的,这给我们提供了gdb跟踪的条件跟踪发现:

自此,已经得箌了问题的原因t4机器伪造的cpu拓扑信息并不完全,erlang虚拟机在启动的时候会额外检查/sys/devices/system/cpu下

具体的cpu信息这些信息与通过sysconf得到的信息不符,进而引发了越界的访存

这个问题的fix方案有几种,举例如下:

1.修改erlang代码将configured赋予一个足够大的值,避免访存越界然后通过启动时加入参数或設置环境变量sct强制控制cpu拓扑,

2.修改erlang代码在循环读取真实拓扑信息时,忽略超过configured数量的cpu的信息同样,启动时加入参数或设置环境变量sct;

3.囹额外的cpu信息对erlang虚拟机不可见

这个坑比较容易误导,今后应避免

我要回帖

 

随机推荐