Archive

Author Archive

Erlang新添加选项 +zerts_de_busy_limit 控制节点间通讯的数据量

September 21st, 2010 1 comment

erlang节点间通信默认是通过tcp通道进行的, 而且每对节点间只有一个tcp链接,所有的rpc和内置的类似monitor这样的消息也都是通过这个通道进行的. 当数据量过大的时候, 系统就会发出 busy distribution port警告, 同时限制数据的吞吐. 这个值默认是128k.

现在可以通过 erl +zerts_de_busy_limit size 来修改这个值了.
Set the value of erts_de_busy_limit. Larger values can help prevent busy distribution port system messages.
The default limit is 128 kilobytes.

如果在system monitor的时候发现busy dist port, 不妨改大这个值, 这个值的下限是4k.

hipe_bifs:bitarray的使用

September 20th, 2010 1 comment

未公开的hipe_bifs:bitarray是内置的,用c语言实现的, inplace修改的,有非常高的效率.

-module(bitarray).
-export([new/1, set/2, get/2]).

new(Size) -> hipe_bifs:bitarray(Size, false).
set(I, A) -> hipe_bifs:bitarray_update(A, I, true).
get(I, A) -> hipe_bifs:bitarray_sub(A, I).

相比之下用纯erlang array模块实现的bitarray的版本

-module(bitarray).
-export([new/1, set/2, get/2]).

-define(W, 24).

new(N) -> array:new((N-1) div ?W + 1, {default, 0}).

set(I, A) ->
  AI = I div ?W,
  V = array:get(AI, A),
  V1 = V bor (1 bsl (I rem ?W)),
  array:set(AI, V1, A).

get(I, A) ->
  AI = I div ?W,
  V = array:get(AI, A),
  V band (1 bsl (I rem ?W)) =/= 0.

大家看着用把…

Categories: Erlang探索 Tags: ,

2010 ECUG Con 会议

September 10th, 2010 Comments off

具体会议信息请参看 http://ecug.org/

关于 ECUG Con

本站(ECUG.ORG)是 ECUG Con 大会的官方支持站点。

ECUG 成立于 2007-10-14 日的 CN Erlounge II。最初定位为 Erlang China User Group(Erlang中国用户组)。它是一个民间团体,致力于促进 Erlang 中文社区的交流,以发展和壮大 Erlang 中国社区(了解 “ECUG 社区的发展历程”)。

按照 ECUG 的计划,预计每年我们都会举行一次全国性的 ECUG Con 大会(原称:CN Erlounge 大会)。下面是历届的会议资料:

1. 2007年9月8日,CN Erlounge I,珠三角Erlang爱好者小聚。无会议资料,但酝酿了之后具有里程碑意义的 CN Erlounge II。
2. 2007年10月13~14日,CN Erlounge II (ECUG Con 2007)在珠海召开。金山为大会主要赞助方。
3. 2008年12月20~21日,CN Erlounge III(ECUG Con 2008)在上海召开。盛大网络为大会主要赞助方。
4. 2009年11月7~8日,CN Erlounge IV (ECUG Con 2009)在杭州召开。盛大网络为大会主要赞助方。

今年我们不再以 CN Erlounge V 命名本届大会,而改称为 ECUG Con 2010 大会。而 ECUG 的名字,也由 Erlang China User Group 改为 Effective Cloud User Group。之所以有此变动,原因如下:

这个修改主要为了以便符合我们对它原本的期望,也为了更清楚告诉大家大会准确意图。一直以来,我们在大会 Topic 征集时都在强调,我们关注的是并发模型和分布式开发的最佳实践。Erlang 语言的思想给了我们很大的启发1。然而我们并不希望局限于 Erlang 语言本身,所有的探索都应该被肯定,需要分享与发扬光大。

其实这个修改在去年的大会上我已经提出过,但是直到这一届才真正给 ECUG 这个会议正名,是因为当时会议准备工作已经差不多了,修改起来显得仓促。

今年我们将于10月16~17日举行的 ECUG Con 2010,亦可简称 ECUG 2010。
ECUG Con 2010 – 发起

* 时间:2010-10-16 ~ 2010-10-17,为期2天
* 地点:北京(详细待定)
* 议题: 研究、探讨、关注随着移动互联网的普及,以及用户的高速增长,我们需要什么样的分布式架构可以满足这种需求变化?话题以技术为主,并限制于并发、分布式开发相关的实践。另外,话题可不局限于服务端的高并发解决方案,客户端或者Web前端为了支撑高并发而作出的架构调整,也是非常有趣的话题。
* 面向人群:对多台机器协作,构成一个强大威力的超级计算机有痴迷,并愿意投入大量精力专研的人。
* 会议主持:ECUG 会务组

会议形式

* 多数时间由交流会讲师针对某个 Topic 进行论述,其他人提问(Q&A)方式交流。
* 留出一小段时间,安排沙龙式的对等交流机会。

会议规则

* 会议的讲师报销来回路费和住宿(申请成为讲师)。点击这里可以查看已经确定的讲师名单。
* 任何人可报名免费参与听讲(注册并申请参加本会议)。

注:由于场地限制,我们可能没法接受所有的与会申请,请谅解。如果名额已满,我们会回信说明。
重要时间点

1. 讲师注册及 Topic 征集截止日期:2010-9-5
2. 普通参会者报名截止日期: 2010-9-20
3. 讲师投稿截止日期:2010-9-25
4. 详细会议议程安排公布:2010-10-1
5. 会议日期:2010-10-16 ~ 2010-10-17

ECUG Con 2010 – Topic 征集
Topic范围

问题域:

1. 随着移动互联网的普及,以及用户的高速增长,我们需要什么样的分布式架构可以满足这种需求变化?
2. 多台机器一起协作,构成一个强大威力的超级计算机,这样的计算机应该是什么样子?

话题以技术为主,并限制于并发、分布式开发相关的实践。不局限于服务端的高并发解决方案,客户端或者Web前端为了支撑高并发而作出的架构调整,也是非常有趣的话题。

投稿请发往 ECUG 会务组。
讲稿建议

1. 内容有深度,而不是泛泛而谈。忌局限于一个事实或者一个实践,但是没有任何结论。
2. 内容有一个Focus的问题域。告诉大家你要解决什么问题,它又是如何被解决的。
3. 如果能够结合一个实际的应用实践,那是最棒不过了。

Categories: 杂七杂八 Tags:

blocking technique介绍

September 7th, 2010 2 comments

随着硬件技术的发展, CPU也越来越强大的。普通的服务器装配的Intel(R) Xeon(R) CPU E5520有4个core,每个core有32KL1D, 32KL1I, 256KL2,这些core还共享8M的L3。这些cache对提高系统的性能非常帮助, 因为L1的性能比主村高2个数量级。但是我们也看到L1 cache太小了,而且对程序员来讲是透明的,我们不知道它的存在。

那么我们的程序如何利用这些硬件设施呢。 设想下,如果你的4个core能同时工作,每个core又在充分利用自己的L1,L2, 同时L3还充满备用数据,那么这个提速是可以想象的到的。

这时候我们需要blocking technique技术:
看图不说话

这个技术的核心就是把数据集控制在L1的范围内,并发的多核计算!

有兴趣的同学可以进一步:
下载更详细的CISE-12-2-ScientificPro

玩的开心!

Categories: 杂七杂八 Tags:

Erlang R14B 新增加参数 +swt 控制调度器的唤醒阀值

September 7th, 2010 1 comment

来自github上的otp源码提交消息:
Erlang R14B 新增加参数 +swt very_low|low|medium|high|very_high
Set scheduler wakeup threshold. Default is medium

The threshold determines when to wake up sleeping schedulers when more work than can be handled by currently awake schedulers exist. A low threshold will cause earlier wakeups, and a high threshold will cause later wakeups. Early wakeups will distribute work over multiple schedulers faster, but work will more easily bounce between schedulers.

这样减少无必要的进程调度,避免cache被污染!

Categories: Erlang探索 Tags: ,

局部性原理在计算机和分布式系统中的应用课程PPT

August 16th, 2010 5 comments

上个星期我在中科大参加了一个星期的由 张晓东教授,美国俄亥俄州立大学,计算机科学与工程系 http://www.cse.ohio-state.edu/~zhang 授课的教程(http://mail.ustc.edu.cn/~wbdai/dragonstar/html/course.html)。

这个课程最主要focus在数据的局部性原理,从硬件到操作系统到应用程序这样的顺序过来的,对于我们提高核心系统软件的性能非常有启发意义.

课件下载点击这里
修正:由于原链接已经不存在了,特地在这里放了一份。

以下是教程的介绍:
课程简介 Read more…

sshpass 方便登录ssh

July 27th, 2010 Comments off

在集群的时候,通常需要登录到其他节点去执行命令。但是一般的机器都需要密码登录的,去做ssh信任又非常麻烦。sshpass来帮忙了。

sshpass -noninteractive ssh password provider.

在ubuntu下可以用 apt-get install sshpass来安装。

它支持密码从命令行,文件, 环境变量中读取。

有需要的同学实验下吧。 特别是erlang支持自定义的rsh, 参数是erl -rsh xxxxx

Categories: 工具介绍 Tags: