`
mryufeng
  • 浏览: 982283 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表
erlang的定时器在做网络程序的时候几乎无所不在, 语法层面的receive after,IO操作超时,driver内部等都大量使用timer,特别是tcp 在发送接收都有个超时。 如果你有大量的tcp链接, 就意味着大量的定时器。 那么定时器的性能就是个很大的考验。erts的定时器是个timer_wheel实现, 和linux内核用的差不多,大概支持百万级别的规模。 测试如下: 并发开N个进程 每个进程里面0-10秒的随机定时,模拟tcp超时的情况。每个定时器事件的流程是这样的 进程检查消息队列 没消息 注册定时器事件 进程换出 定时器超时 进程换入 处理定时器事件。 root@nd-d ...
在我的項目里面, 很多運算logic是由外部的程序來計算的 那么消息先透過pipe發到外部程序,外部程序讀到消息, 處理消息, 寫消息, erlang程序讀到消息, 這條鏈路很長,而且涉及到pipe讀寫,上下文切換,這個開銷是很大的.但是具體是多少呢? 我設計了個這樣的ring. 每個ring有N個環組成, 每個環開個port. 當ring收到個數字的時候 如果數字不為0, 那么把這個數字發到外部成程序,這個外部程序echo回來數字,收到echo回來的消息后,把數字減1,繼續傳遞.當數字減少到0的時候 銷毀整個ring. root@nd-desktop:~/test#ulimit -n 10 ...
主题:erlang静态数据查询方式的一种构想 http://www.iteye.com/topic/461367 解决这个问题有2种方式: 1.  函数匹配 2.  per module constant pool 针对这个问题我做了个试验, 构建一个atom->int的查询。 yu-fengdemacbook-2:~ yufeng$ cat t.erl -module(t). -export([start/1, start/2]). start([A1, A2])->     start(list_to_integer(atom_to_list(A1)), A2). ...
原文地址:http://pseudelia.wordpress.com/2009/08/23/erlang-native-code-benchmark/ Normalerweise compiliert Erlang Bytecode (heißt das so in Erlang?). Das coole daran ist, dass man die beam files leicht auf anderen Rechnern benutzen kann. Aber die Geschwindigkeit von diesem Code hat mich nicht überzeugen ...
为了测试下erlang的多smp能够每秒并发发起多少系统调用,这个关系到erlang作为网络程序在高并发下的评估。 首先crack下otp_src,因为erlang:now() 是调用了clock_gettime这个系统调用,但是遗憾的是这个now里面设计到很多mutex会导致不可预期的futex调用,所以需要做如下修改, 调用最廉价的getuid系统调用: emacs otp_src_R13B/erts/emulator/beam/erl_bif_info.c BIF_RETTYPE statistics_1(BIF_ALIST_1) {     Eterm res;     Ete ...
前篇文章http://mryufeng.iteye.com/blog/428845 讲述了如何启用erlang hipe支持,但是用户程序大量依赖的标准库如stdlib, kernel等默认都不是native模式的, 所以我们的程序虽然启用了hipe,但是只是部分启用了。用oprofile等工具可以看到我们的程序还是在process_main(虚拟机的代码解释在这里)里面打转。 我们来个极致的,通通hipe化。 有2个方案可以解决: 1. 在编译otp_src的时候 export ERL_COMPILE_FLAGS='+native +"{hipe, [o3]}"' 但是这 ...
培训用的 凑合看吧 主要讲分布集群以及mnesia的使用,从比较高的角度来看erlang. 同时我的blog会转移到http://blog.yufeng.info谢谢大家的关注!
原文地址:http://streamhacker.com/2008/12/10/how-to-eliminate-mnesia-overload-events/ If you’re using mnesia disc_copies tables and doing a lot of writes all at once, you’ve probably run into the following message =ERROR REPORT==== 10-Dec-2008::18:07:19 === Mnesia(node@host): ** WARNING ** Mnesia is ove ...
There are some reoccuring themes when it comes to mnesia: 1 Mnesia handles partitioned networks poorly 2 Mnesia doesn't scale 3 Stay away from transactions I've argued that Mnesia provides the tools to handle [1], and that most DBMSs that guarantee transaction-level consistency are hard-pressed to ...
原文地址:http://stackoverflow.com/questions/722665/in-a-mnesia-cluster-which-node-is-queried Let's say you have a mnesia table replicated on nodes A and B. If on node C, which does not contain a copy of the table, I do mnesia:change_config(extra_db_nodes, [NodeA, NodeB]), and then on node C I do mnesia: ...
原来所有的特性设计都是个妥协的过程哦。。。 Den 2006-12-23 01:16:34 skrev Yariv Sadan <>: > This is all very interesting to me because the ets interface makes it > seem as if an ets table is basically a dict hidden behind a > gen_server, but ets actually has unique concurrency characteristics > that ca ...
原文地址:http://erlang-china.org/misc/cn-erlounge-iv.html “Erlounge”是国外 Erlanger 对聚会的特定称谓,而“CN Erlounge”这一名称则是从 2007 年珠海的第二次会议开始,一直沿用至今。在 2008 年致力于 CN Erlounge 会务召集与组织的官方网站 ECUG.org 开通,并成功组织了精彩纷呈的 CN Erlounge III 上海站会议。如今,保持着一贯的热情与高效的 ECUG 会务组又在为我们忙碌的准备着今年的盛会 —— CN Erlounge IV 。让我们感谢他们的辛勤付出,也感谢会议历届的赞助商们。 ...
ifort,icc是一款非常不错的编译器,intel有非商业版,可以免费下载,虽不提供技术支持,但对于大多数普通用户来讲,已经够用了.下面我就ifort,icc编译器的下载安装及配置过程介绍如下,另外还介绍了相应的数学库MKL(Math Kernel Library )的安装,希望对您有用。 我们的操作系统是Red Hat Enterprise Linux5-AS-X86-64。 1)下载: 到http://www.intel.com/cd/software/products/asmo-na/eng/279831.htm下载Free Non-Commercial(非商业版)的ifort,i ...
原文地址:http://carpanta.dc.fi.udc.es/docs/erlang/dbg.html 这篇文章是迄今为止发现的最系统的erlang的诊断和系统获取的方法,特别是在gdb下获知 程序的运行状态. 虽然文档有点过时。 (This is fairly Unix-centric; there may be interesting debug facilities for the Windows user, but I don't know about them.) To begin with, there is a difference between knowing in ...
R13B的支持ets的并发写,{write_concurrency,bool()} Performance tuning. Default is false, which means that the table is optimized towards concurrent read access. An operation that mutates (writes to) the table will obtain exclusive access, blocking any concurrent access of the same table until finished. If set ...
Global site tag (gtag.js) - Google Analytics