![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
erts
文章平均质量分 81
wqtn22
这个作者很懒,什么都没留下…
展开
-
erlang程序优化点的总结(持续更新)
转载请注明出处 注意,这里只是给出一个总结,具体性能需要根据实际环境和需要来确定霸爷指出,新的erlang虚拟机有很多调优启动参数,今后现在这个方面深挖一下。1. 进程标志设置: 消息和binary内存:erlang:process_flag(min_bin_vheap_size, 1024*1024),减少大量消息到达或处理过程中产生大量binary时的gc次数...原创 2013-03-03 15:40:08 · 372 阅读 · 0 评论 -
erlang NIF部分接口实现(一)加载过程及编写框架
最近在项目中频繁用到erlang的NIF接口,以扩展erlang虚拟机的功能,同时又能提供较高的性能。NIF(native implemented functions)从R14B开始支持,其功能在于,能够使得erlang module的功能通过c/c++实现。erlang虚拟机有很多与外部进行功能交互的方式,如通过spawn_executable类型的port调用其它程序,port_dri...原创 2012-07-22 18:18:41 · 766 阅读 · 0 评论 -
erlang NIF部分接口实现(二)类型系统和内存分配接口
NIF的内存管理接口为enif_alloc/enif_free。erl_nif.c void* enif_alloc(size_t size){ return erts_alloc_fnf(ERTS_ALC_T_NIF, (Uint) size);}erl_alloc.h ERTS_ALC_INLINEvoid *erts_alloc_fnf(E...原创 2012-07-22 19:12:30 · 405 阅读 · 0 评论 -
erlang NIF部分接口实现(三)持久资源
持久资源是NIF中一类非常有用接口,可以把资源看成各种数据结构描述符,然后在各个模块间传递数据结构,从而使得写erlang程序像写c程序一样,弥补一些erlang程序在性能上的不足。使用持久资源,需要首先创建持久资源类,这些工作可以在NIF被load时进行。ErlNifResourceType*enif_open_resource_type(ErlNifEnv* env, ...原创 2012-07-22 21:05:58 · 321 阅读 · 0 评论 -
erlang NIF部分接口实现(四)消息发送
erlang中不能没有消息和异步过程,NIF也必须有此项能力,这个能力是通过enif_send实现的,它可以在NIF中向一个进程发送消息,但由于消息本身需要跨进程传递,消息的生命周期可能很长,而在erlang NIF部分接口实现(一)中可以看到,NIF每次调用所使用的ErlNifEnv结构是位于process_main函数的栈上的,由这个ErlNifEnv结构分配消息所占用的内存是不可能的,因此需...原创 2012-07-22 21:42:47 · 201 阅读 · 0 评论 -
erlang NIF部分接口实现(五)复用driver功能的接口
NIF除了自身提供的功能外,还封装了一系列driver的功能,这些功能与操作系统平台紧密相关,主要包括:系统信息,操作系统线程及线程私有资源 ,条件变量、信号量、读写锁等,这些功能本身与erlang的进程体系无关,本身也是线程安全的,因此可以直接复用到NIF中,统一NIF的接口。此处简单的分析一个操作系统线程创建的接口,其余的类似。int enif_thread_create...原创 2012-07-22 22:08:01 · 140 阅读 · 0 评论 -
erlang:ports与erlang:processes引发的问题
最近4399的同学遇到一个问题,以下是他的描述: “用erlang:ports得出来的port列表里,很多port的port_info都是undefined,实际上这些ports应该都已经被关闭了,手动调用close去关闭这些port的话会抛出异常。”首先重现他的场景:在时刻t1调用erlang:ports()时可以得到erlang虚拟机在t1的所有port,在t1时刻之后的t2时...原创 2012-07-29 22:57:52 · 593 阅读 · 0 评论 -
erlang虚拟机topology不符导致启动后crash
线上有一台t4的机器,这些机器的cpu topo是经过伪造的,通过top命令可以看到4个核心:topCpu0 : 0.3%us, 0.0%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.7%stCpu1 : 0.7%us, 0.3%sy, 0.0%ni, 98.7%id, 0.0%wa, 0.0%hi, 0...原创 2013-12-24 15:49:47 · 186 阅读 · 0 评论