`
mryufeng
  • 浏览: 982423 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表
http://www.lua.org/gems/ We are proud to announce that the book has been published: Lua Programming Gems。 edited by L. H. de Figueiredo, W. Celes, R. Ierusalimschy
参见这个 http://avindev.iteye.com/blog/100113 -hosts Hosts     Specifies the IP addresses for the hosts on which Erlang boot servers are running, see erl_boot_server(3). This flag is mandatory if the -loader inet flag is present.     The IP addresses must be given in the standard form (four decimal num ...
我准备在上海举行的CN Erlounge III聚会中演讲的ppt, 欢迎拍砖头!
候选讲师名单及议题 http://www.ecug.org/lecturer/ 要获得讲稿及 DEMO 代码,请到 SVN 库中 checkout 之。     * 对于 Linux 平台用户,请使用命令:svn co http://ecug.googlecode.com/svn/trunk/cn-erlounge/iii     * 对于 Windows 平台用户,请使用 SVN 客户端(如 TortoiseSVN)下载。
看下erl_bif_info.c BIF_RETTYPE system_info_1(BIF_ALIST_1) { ... } else if (BIF_ARG_1 == am_heap_type) { #if defined(HYBRID)         return am_hybrid; #else return am_private; #endif ... } 也就是说目前只打算支持私有堆和混合堆。 [root@haserver otp_src_R12B-5]# erl Erlang (BEAM) emulator version 5.6.5 [source] [smp:2] ...
从R12B-0源码里面摘录出来的,挺有用的,我就不标注了,从名字好容易看出用途。 erts\emulator\beam\break.c(478):    char* mode = getenv("ERL_CONSOLE_MODE"); erts\emulator\beam\break.c(681):    dumpname = getenv("ERL_CRASH_DUMP"); erts\emulator\beam\erl_init.c(628):    tmpenvbuf = getenv("ERL_FULLSWEEP_AFTER" ...
压榨linux2.6最后点内存分配性能,使用hugetlb. Huge TLB Filesystem    ===================    Most modern architectures support more than one page size. For example,    the IA-32 architecture supports 4KiB pages or 4MiB pages but Linux only    used large pages for mapping the actual kernel image. As TLB slots are a ...
老朱说 libevent的主干版本把ET加进去了,Valery Kholodkov今年5月底提交了个patch. 大家的福分哦。 http://www.mail-archive.com/libevent-users@monkey.org/msg01151.html [Libevent-users] Support for Edge-Triggered behaviour Valery Kholodkov Thu, 29 May 2008 08:41:45 -0700 Greetings! Since discovering libevent for myself I've been w ...
atom在erlang里面的作用非常大,特别是在消息匹配的时候,所以需要个非常高效的实现。erts的index.c hash.c atom.c用来实现atom. atom在内部表示的时候是个index. atom是个字符串,首先存在hash表里,然后把在hash里的slot,放在index的索引表里。这样要获取atom就非常高效,基本是2次指针运算。当需要把atom传送到外部的时候,第一次的时候就乖乖的送字符串的内容,同时把这个atom cache起来,以后再发送的时候就可以只传送在cache中的index了,大大提高了网络传输效率。具体的常见dec_atom enc_atom, externa ...
在多处理器机器上erlang默认是有几个cpu就有几个调度器线程,除非你通过+S N 参数来改变。每个调度器线程的入口函数是process_main, 外加一个主线程阻塞在select上等待中断事件的发生. process_main会调用schedule选择一个合适的process来执行。每个process里面都包含了要执行的的MFA,执行funtcion的opcode。beam_emu的opcode是基于register的,大概有180条左右opcode,每个版本都在增加,特别是最近的版本为了增加binary出来的效率加多了很多. /* * schedule() is called fro ...
erlang通过port来spawn外部程序 重定向外部程序的stdin, stdout到一对pipe行通信的,利用poll来检测外部程序的读写事件。但是如果外部程序退出的话,erts如何知道并且加以处理的呢? erts运行的时候会初始化smp_sig_notify,开启一个信号处理线程,在这个线程里面做具体的信号处理。 static void init_smp_sig_notify(void) {     erts_smp_thr_opts_t thr_opts = ERTS_SMP_THR_OPTS_DEFAULT_INITER;     thr_opts.detached = 1; ...
erlang的process是个调度单位 它包含特定的MFA, 消息队列等,调度后由beam_emu来执行其中的opcode 在等待消息或者yield的时候放弃执行权,有消息的时候接着原来的地方继续执行。lua的coroutine也是同样的, 只不过他没有消息队列, 它的再执行靠lua_resume来推动。 我的理解是这样的,这是2个语言不同的地方,但是同样的轻量,同样的效率。
转自: http://erlangdotnet.net/2007/09/inside-beam-erlang-virtual-machine.html OTP R11B-5 includes more than one million lines of Erlang. The kernel and standard library are about a third of these lines. The emulator, BEAM, is around 200,000 lines of C. BEAM's C main functions are platform-specific an ...
转自:http://www.erlangatwork.com/2008/07/hunting-bugs.html Our Erlang gateways were developed and deployed in phases starting with AIM/ICQ, GTalk, Yahoo, and finally MSN. Aside from minor protocol implementation bugs there were no problems and we were very satisfied with stability and performance. How ...
   erlang运行期最值得称道的地方之一就是完备的自省机制,也就是说你可以通过这些信息了解整个系统运行的方方面面,给系统的调试,排错,调优,运营提供非常大的便利。在beam的c实现代码中至少1/4的代码在为这个目标服务,信息非常的到位详细,这和爱立信作为商业公司运营交换机的需求有很大的关系。自省分为2个层面的:提供erts运行期信息的和用户进程相关的信息。包括一下一个基础设施:system_flag, system_info,system_profile,system_monitor,erts_debug,the Erlang crash dumps,trace. 以及在otp的os_mon ...
Global site tag (gtag.js) - Google Analytics